看一段代码:
#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 这些都会有地址的操作,学以致用,活学活用。