OpenEdv-开源电子网

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

如何理解FSMC写地址的自动过程LCD->LCD_REG=CMD

[复制链接]

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-1-12
在线时间
42 小时
发表于 2017-7-4 17:58:25 | 显示全部楼层 |阅读模式
诸位,最近在看FSMC,不太理解这样的操作,



//LCD 操作结构体
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//使用 NOR/SRAM 的 Bank1.sector4,地址位 HADDR[27,26]=11 A6 作为数据命令区分线
//注意 16 位数据总线时, STM32 内部地址会右移一位对齐!
#define LCD_BASE ((u32)(0x6C000000 | 0x0000007E))
#define LCD ((LCD_TypeDef *) LCD_BASE)
其中 LCD_BASE,必须根据我们外部电路的连接来确定,我们使用 Bank1.sector4 就是从
地址 0X6C000000 开始,而 0X0000007E,则是 A6 的偏移量,
所以,有了这个定义,当我们要往 LCD 写命令/数据的时候,可以这样写:
LCD->LCD_REG=CMD; //写命令
LCD->LCD_RAM=DATA; //写数据
而读的时候反过来操作就可以了,如下所示:
CMD= LCD->LCD_REG;//读 LCD 寄存器
DATA = LCD->LCD_RAM;//读 LCD 数据
这其中, CS、 WR、 RD 和 IO 口方向都是由 FSMC 控制,不需要我们手动设置了。

  在前面的讲解中,明白了LCD->LCD_RAM与LCD->LCD_REG都是地址,为什么可以直接往地址里面写数据?查资料说有写寄存器序号啥的,也没整明白。谁能帮我解释一下,如何理解这一句。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
456
金钱
456
注册时间
2017-9-4
在线时间
70 小时
发表于 2018-5-17 17:34:34 | 显示全部楼层
同问,我也不明白为什么
LCD->LCD_REG=CMD;  和
LCD->LCD_RAM=DATA;
可以用来直接发送命令和数据,不应该是LCD->LCD_REG控制RS为0,LCD->LCD_RAM控制RS为1的吗?
另外程序里面好像没用到FSMC_D[15:0]
按照我的想法程序应该是
先写LCD->LCD_REG;然后给FSMC_D[15:0]赋值,用来写命令
然后LCD->LCD_RAM;然后给FSMC_D[15:0]赋值,用来写数据
有没有大神给解释一下啊,小白看不懂
回复 支持 3 反对 0

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-7-4 19:33:13 | 显示全部楼层
学会论坛搜索,这个问题论坛里面都不知道说了多少次了。http://www.openedv.com/forum.php ... =LCD%2B%B5%D8%D6%B7
回复 支持 0 反对 2

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-1-12
在线时间
42 小时
 楼主| 发表于 2017-7-31 20:55:43 | 显示全部楼层
michael91 发表于 2017-7-31 16:30
@正点原子 请问楼主理解了没,我看了一天了,也是这个地方理解不了,为什么把数据送到这两个地址里面数据就 ...

stm32f407自己的内存范围只有几百M大小,而LCD->LCD_REG这个地址是远远大于自身内存大小,(也就是默认的程序存储运行区,),这样的话,当向这个地址写数据的时候,FSMC内部会比较是外部还是内部,判断为外部存储设备(LCD显存,也就是目标寄存器)时,它就会产生相应的读写时序以及数据发送方向。这样就完成了写数据和命令的过程。姑且就这么理解吧,希望有大神帮我们有更透彻的理解。
回复 支持 1 反对 0

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2017-7-27 15:08:04 | 显示全部楼层
二十一画生 发表于 2017-7-4 20:23
我的意思就是,是不是执行这两条语句的时候,(往这两个特殊的地址赋值写内容,比如cmd,data)fsmc会自 ...

那是fsmc这个控制器已经设计好的东西,你为什么要理解这个。
回复 支持 0 反对 1

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-1-12
在线时间
42 小时
 楼主| 发表于 2017-7-4 20:10:23 | 显示全部楼层
zuozhongkai 发表于 2017-7-4 19:33
学会论坛搜索,这个问题论坛里面都不知道说了多少次了。http://www.openedv.com/forum.php?mod=viewthread& ...

你好,我理解这个地址的变化过程,但是不太明白LCD->LCD_REG=CMD这一句,为什么直接可以这样写?查了资料说这样写是fsmc自动给出了cs,we等读写时序信号。能否讲一下这方面的知识。
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-1-12
在线时间
42 小时
 楼主| 发表于 2017-7-4 20:12:18 | 显示全部楼层
二十一画生 发表于 2017-7-4 20:10
你好,我理解这个地址的变化过程,但是不太明白LCD->LCD_REG=CMD这一句,为什么直接可以这样写?查了资料 ...

后面还有
LCD->LCD_REG=CMD; //写命令
LCD->LCD_RAM=DATA; //写数据
这样的操作,一般情况下不是往寄存器写读写命令嘛,或者数据发送是放在变量啥的缓存里面读写?
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-1-12
在线时间
42 小时
 楼主| 发表于 2017-7-4 20:23:13 | 显示全部楼层
二十一画生 发表于 2017-7-4 20:12
后面还有
LCD->LCD_REG=CMD; //写命令
LCD->LCD_RAM=DATA; //写数据

我的意思就是,是不是执行这两条语句的时候,(往这两个特殊的地址赋值写内容,比如cmd,data)fsmc会自动给外部设备lcd或者sram给一个读写时序?如果是,这是为啥?如何更好的理解
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-1-12
在线时间
42 小时
 楼主| 发表于 2017-7-7 10:31:48 | 显示全部楼层
@正点原子 自己顶,原子哥,帮我理一下这个理解思路。。。
回复 支持 反对

使用道具 举报

35

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2016-10-12
在线时间
53 小时
发表于 2017-7-27 13:15:03 | 显示全部楼层
REG和RAM对应两个地址,往这两个地址写数据,D口输出数据,而A口会自己形成一个地址。
正因为两个地址的第7位(对应A6)不一样,才使便A6这根线产生不同的电平,来区分是命令还是数据。
回复 支持 反对

使用道具 举报

10

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
539
金钱
539
注册时间
2017-7-28
在线时间
109 小时
发表于 2017-7-31 16:30:45 | 显示全部楼层
本帖最后由 michael91 于 2017-7-31 16:32 编辑

@正点原子 请问楼主理解了没,我看了一天了,也是这个地方理解不了,为什么把数据送到这两个地址里面数据就能够传送到LCD的寄存器里面
回复 支持 反对

使用道具 举报

49

主题

341

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5265
金钱
5265
注册时间
2012-8-25
在线时间
1025 小时
发表于 2017-11-11 14:13:29 | 显示全部楼层
LCD->LCD_REG=CMD; //写命令
LCD->LCD_RAM=DATA; //写数据

REG  和RAM 是两个地址,用一根地址线控制,发cmd和data这根地址线一个高一个低,反正是反的,lcd控制根据这根线状态来区别是cmd还是data,ok?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 10:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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