打印

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

[复制链接]
536|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第三章|  楼主 | 2018-7-5 18:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
诸位,最近在看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都是地址,为什么可以直接往地址里面写数据?查资料说有写寄存器序号啥的,也没整明白。谁能帮我解释一下,如何理解这一句。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

380

主题

380

帖子

0

粉丝