嵌入式中的寻址地址设置,以使用FSMC接LCD控制器为例

看一段代码:

#define SSD1963_BASE ((u32)(0x6C000000)) //SSD1963设备基址
#define SSD1963_REG_BASE ((u32)(0x6C000000)) //SSD1963寄存器基址
#define SSD1963_RAM_BASE ((u32)(0x6C000008)) //SSD1963 RAM基址

#define LCD_WR_REG(index)  (*(volatile u16 *)(SSD1963_REG_BASE) = index)
#define LCD_WR_Data(value)  (*(volatile u16 *)(SSD1963_RAM_BASE) = value) //写RAM
#define SSD1963_READ_RAM(addrptr) (*(addrptr) = *(volatile u16*)(SSD1963_RAM_BASE)) //读RAM

LCD控制器最基本的地址设置:命令地址SSD1963_REG_BASE和数据地址SSD1963_RAM_BASE。

要知道这两个地址的设置,

第一. 查看你连接LCD驱动器的接口。 打开MCU的user manual,而不是reference manual(一般情况)。 找到memory map,找到你连接的接口的起始地址。比如我用FSMC BANK1的第一段地址就是0X60000000。这样就找到了第一个地址。. 第二个地址就打开你LCD控制器的数据手册,看控制器的命令位占多少,我的SSD1963占8位所以数据的位置就是起始位置偏移8位,也就是0X60000008

memory map 需要细看清了,是驱动的开发必不可少的图!

后面诸如外部sram,flash 这些都会有地址的操作,学以致用,活学活用。

原文地址:https://www.cnblogs.com/bandynewer/p/2576587.html