一、硬件平台
1、MCU
选用STM32F205
2、LCD
选用ILI9488驱动芯片,16位并口的LCD(自带显存),像素为480 X 320,大小为3.5寸。
3、其他
由于选用LCD自带显存,无需外加SDRAM。显示格式为RGB565格式。
二、软件配置
软件框架使用freeRTOS操作系统
1、FSMC驱动LCD原理
a、由于LCD自带显存,把LCD显存看成SRAM,可以理解为FSMC控制器上外挂了一个SRAM,只要配置好地址,FSMC就可以直接访问。值得注意的是,这个SRAM有2个地址,第一个地址为0x60000000,对于MCU来说是LCD的寄存器地址。第二地址是0x60020000,对于MCU来说是LCD的读写数据地址。
b、LCD上使用引脚有 RS、数据总线D0-D15、WR、RD、CS。其中特别注意的是LCD没有地址总线。硬件上LCD的RS引脚需要接到FSMC的A0上面,假如RS=0,就是写命令,RS=1,就是写数据。
2、初始化流程
a、初始化ILI9488 IO口
b、初始化FSMC(使能通过FSMC总线对显存屏的寄存器和数据进行读写),例子中使用的是 FSMC Bank1 (0x60000000 – 0x63FFFFFF)
c、初始化ILI9488的相关寄存器(寄存器地址相对MCU来说 0x60000000, 读写数据地址相对MCU来说 0x60020000)
d、开启背光(PWM)
e、重写 emWin 的 LCD_X_Config
–GUI_DEVICE_CreateAndLink()
–LCD_SetSizeEx()
–LCD_SetVSizeEx()
–GUIDRV_FlexColor_Config()
–GUIDRV_FlexColor_SetFunc()
f、由于带操作系统, 重写 emWin 的 GUI_X_Config
–GUI_ALLOC_AssignMemory();
–GUI_ALLOC_SetAvBlockSize();
–GUI_SetDefaultFont();
g、重写 emWin 的 LCD_X_DisplayDriver
三、其他知识点
1、RGB888和RGB565区别
RGB565是16位的,R-5位,G-6位,B-5位。
RGB888 是24位的,R、G、B各8位。
2、没有自带显存LCD驱动原理
a、需要MCU具有LTDC控制器,在STM32系列中,STM32F429级别以上的芯片才具有LTDC控制器。
b、需要MCU通过FSMC总线外接SDRAM,在SDRAM里面开辟显存区域。假如LCD像素大小 480 X 320,格式 RGB565,双缓冲情况下,则需要480 X 320 X 16 X 2大小显存。
c、在软件框架上需要特别注意,首先LTDC控制LCD时序,显存数据在SDRAM上面,MCU通过DM2D的方式不断地拿显存数据,然后通过LTDC把数据不断地刷新LCD显示。由于数据量特别大,经常容易造成总线仲裁冲突的问题。
欢迎技术交流QQ 736009573
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!