OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5960|回复: 11

TFTLCD实验求助--数据和指令是如何给到液晶的?

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-7-26
在线时间
8 小时
发表于 2021-6-22 11:49:33 | 显示全部楼层 |阅读模式
LCD实验怎么把数据写进去,没看到对D0~D15操作;lcd.h中只有:
typedef struct
{
        vu16 LCD_REG;
        vu16 LCD_RAM;
} LCD_TypeDef;
#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))
#define LCD             ((LCD_TypeDef *) LCD_BASE)

这里有个问题:1.这里只是用A10控制了RS的高低;换句话就是对相应的地址进行操作,地址输出也会输出高低,FSMC_Ax端口电平也是根据你操作的地址不同而变化的?
也就是说LCD->LCD_REG=regval; 这句话是对单片机地址A10:A0=011 1111 1111指向的位置写了指令;
2.LCD->LCD_RAM=data;这句话是对单片机地址A10:A0=100 0000 0000指向的位置写了数据;
对于以上两句话执行的时候,对应的单片机FSMC_Ax端口电平也是按照上述的0 1变化的?
3.但是所有的操作不都是对通过单片机的FSMC的数据口D0~D15操作才能实现液晶的指令控制和数据写入、读出吗?可是没有这个操作啊?
难道LCD->LCD_REG=regval; 这句话等于“D0:D15=regval;” ?
而"LCD->LCD_RAM=data;" 这句话等于“D0:D15=data;” ?

新人求助,困扰疑惑,求原子哥开导一下
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

130

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1876
金钱
1876
注册时间
2016-10-23
在线时间
262 小时
发表于 2021-7-15 13:34:32 | 显示全部楼层
本帖最后由 a1156284 于 2021-7-15 14:03 编辑
WilliamSun 发表于 2021-7-15 10:22
其实想知道的是D0~D15这16个IO口的电平是从哪里写命令控制它们输出数据的,我读了好几遍手册都没找到。。。

假设初始化了 bank1 NORSRAM4,gpio连接到fsmc。地址线A6。地址就从0x6c000000开始,具体手册中有。
LCD->RAM=0XFF00;//D0-D15 =0XFF00 往fsmc bank1 地址内写数据 , D0-D15就有数据
等于下面,往某个地址写数据。
*(volaTIle unsigned short int *)(0x6C000080)=val;

你可以打印LCD->REG  或者 RAM的地址信息 到串口查看。


r1.png
r2.png
6年嵌入式老玩家 深圳
回复 支持 1 反对 0

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-7-26
在线时间
8 小时
 楼主| 发表于 2021-6-23 10:19:17 | 显示全部楼层
还是说STM32的FSMC地址FSMC_A[25:0]的任意地址的针指向的位置都是FSMC_D[15:0]? 所以才有了"LCD->LCD_RAM=data;" 这句话等于“FSMC_D[15:0]=data;”?
回复 支持 反对

使用道具 举报

10

主题

205

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1322
金钱
1322
注册时间
2015-3-3
在线时间
127 小时
发表于 2021-7-9 16:58:02 | 显示全部楼层

回帖奖励 +2 金钱

这个是写进指定的寄存器,内部有固定的界面刷新吧.就各OLED一样,吧一幅画赋值给数组,然后去扫描.
回复 支持 反对

使用道具 举报

0

主题

130

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1876
金钱
1876
注册时间
2016-10-23
在线时间
262 小时
发表于 2021-7-10 09:52:46 | 显示全部楼层

回帖奖励 +2 金钱

往LCD->LCD_RAM 写数据,RS=1。往LCD->LCD_REG 写数据,RS=0。用不同地址来控制rs电平,fsmc自动完成时序,d0-d15 输出数据。
6年嵌入式老玩家 深圳
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-4-10
在线时间
23 小时
发表于 2021-7-11 09:25:52 | 显示全部楼层

回帖奖励 +2 金钱

一起学习学习
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-7-26
在线时间
8 小时
 楼主| 发表于 2021-7-15 10:12:48 | 显示全部楼层
a1156284 发表于 2021-7-10 09:52
往LCD->LCD_RAM 写数据,RS=1。往LCD->LCD_REG 写数据,RS=0。用不同地址来控制rs电平,fsmc自动完成时序,d ...

控制RS电平过程我知道,就是最后一个d0-d15输出数据怎么操作的,为什么是这么对应的不懂
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-7-26
在线时间
8 小时
 楼主| 发表于 2021-7-15 10:14:32 | 显示全部楼层
shumivan 发表于 2021-7-9 16:58
这个是写进指定的寄存器,内部有固定的界面刷新吧.就各OLED一样,吧一幅画赋值给数组,然后去扫描.

道理我都懂,怎么具体操作数据寄存器的我不懂
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-7-26
在线时间
8 小时
 楼主| 发表于 2021-7-15 10:22:52 | 显示全部楼层
其实想知道的是D0~D15这16个IO口的电平是从哪里写命令控制它们输出数据的,我读了好几遍手册都没找到。。。
回复 支持 反对

使用道具 举报

4

主题

912

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4508
金钱
4508
注册时间
2019-9-4
在线时间
914 小时
发表于 2021-7-15 11:48:08 | 显示全部楼层

回帖奖励 +2 金钱

例程是通过FSMC直接给屏幕的GRAM写入的
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2019-7-26
在线时间
8 小时
 楼主| 发表于 2021-7-19 14:57:46 | 显示全部楼层
a1156284 发表于 2021-7-15 13:34
假设初始化了 bank1 NORSRAM4,gpio连接到fsmc。地址线A6。地址就从0x6c000000开始,具体手 ...

感谢您的解答,有点明白了,对FSMC的地址写什么,对应的FSMC的数据口就会发出去什么
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-6-3
在线时间
2 小时
发表于 2021-7-22 19:02:38 | 显示全部楼层

回帖奖励 +2 金钱

成功初始化FSMC之后。只要你访问了stm32预留的这部分地址【0x60000000-0x9fffffff】。要对应你初始化的BANK),不管是读是写,链接在D[0-15]就会自动产生数据了,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 04:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表