配置参考优快云上一篇文章:STM32CubeMX配置FSMC之TFTLCD驱动,并移植STemWin_Ningjianwen的博客-优快云博客
前言:
基于正点原子阿波罗H743开发板,驱动一个兼容正点原子2.8寸TFTLCD显示屏(硬件家园2.8寸-ILI9341),使用的软件工具是ST官方工具STM32CubeMX+keil。
关键寄存器:
#define LCD_CMD_LCDID 0xD3 // LCD ID读取地寄存器
#define LCD_CMD_LCDScanMode 0x36 // LCD扫描方向寄存器(GRAM自增方向)
#define LCD_CMD_SETxOrgin 0x2A // LCD横坐标设置寄存器
#define LCD_CMD_SETyOrgin 0x2B // LCD纵坐标设置寄存器
#define LCD_CMD_WRgram 0x2C // 写GRAM指令寄存器
#define LCD_CMD_RDgram 0x2E // 读GRAM指令寄存器
硬件接口:
开发板接口
单片机引脚连接
STM32CubeMX配置:
FMC配置
STM32CubeMX FMC配置
读写时序时间设置直接参考了正点原子带的源码设置,如下图:
此处地址建立时间正点原子设置的17,STM32CubeMX时间操作最大只能设置15,所以此处设置了15。正点原子做了屏幕兼容,此处的时间设置并非最佳,最佳设置参考ILI9341数据手册。
MPU设置
前期在做屏幕驱动时,未设置MPU内存保护,各种仿真调试,基本的ID读取也不正确。后来参考了别人的文章,当使用FMC访问外部地址时,还必须配置MPU(内存保护单元),参考文章在篇首位置。
MPU配置
正点原子源码MPU配置内容如下:
剩下的就是添加驱动代码,此处不做描述,我是参考的硬件家园TFTLCD屏幕驱动。之前一直调试不通,就是没有添加MPU内存保护,因为硬件家园是用的103,没有MPU保护这块内容。谨记,MFC访问外部地址需开MPU内存保护。