基于STM32的FSMC接口驱动TFT彩屏的设计方案
STM32 寻址空间的地址映射中的0×60000000 ~0x6FFFFFFF 是分配给PSRAM、NOR FLASH 这类可直接寻址的器件。当外部接了NOR FLASH,并且FSMC外设被设置为正常工作,当向0×60000000 地址写入数据0xFFFF,FSMC会自动把数据转化成各信号线上相应的电平信号写入数据。
4.2 用FSMC模拟8080时序
FSMC写NOR 时序跟8080接口的时序是十分相似的,对它们的信号线对比如表1所示。
为了模拟出8080 时序,把FSMC 地址线中的A0 连接8080的D\CX,当A0为低电平时,数据线D[15:0]的信号会被理解为ILI9341命令,若A0为高电平时,传输的信号则会被理解为数据。所以传送数据时只需向地址为0x6xxxxxx1,0x6xxxxxx3,0x6xxxxxx5 这些奇数地址写入数据,此时地址线A0(D/CX)会为高电平;需要发送命令时向0x6xxxxxx0,0x6xxxxxx2,0x6xxxxxx4 这些偶数地址写入数据时,地址线A0(D/CX)会为低电平,这个数据会被理解为命令。在代码中利用指针变量,向不同的地址单元写入数据,就能够由 FSMC 模拟出8080 接口向ILI9341写入控制命令或GRAM的数据了。
4.3 部分代码设计
(1)初始化液晶屏
初始化液晶屏是对液晶控制器ILI9341 用到的I/O口、FSMC 接口进行初始化,并且向该控制器写入了命令参数,配置好LCD液晶屏的基本功能。除了复位、背光用的PD11和PD0设置为通用推挽输出外,其他的与FSMC 接口相关的控制信号、地址信号、数据信号的端口全部设置为复用推挽输出。代码如下:
(2)初始化FSMC模式
LCD_Init()函数调用LCD_FSMC_Config()设置FSMC的模式使它模拟出8080接口,函数主要作用是设置各个信号的产生时间,使FSMC接口的时序与8080接口匹配。LCD_FSMC_Config()设置FSMC模式的代码如下:
以上主要使用FSMC_NORSRAMInitTypeDef类型的结构体和 FSMC_NORSRAMTimingInitTypeDef类型的结构体对FSMC 进行配置。第一种类型结构体主要配置存储器类型,数据宽度等用于NOR FLASH 的模式配置;另一种类型结构体用于配置FSMC 的NOR FLASH模式下读/写时序中的地址建立时间、地址保持时间等。
(3)FSMC模拟8080读/写参数、命令
初始化完成FSMC 接口后,就可以使用FSMC 向ILI9341发送数据了。在LCD_Ini(t )中调用Lcd_init_conf()函数向ILI9341写入一系列的控制参数:
限于篇幅,以上只是该函数其中的一部分,省略部分的代码只是写入的参数和命令有些不一样,这些命令和参数设置了像素点颜色格式、屏幕扫描方式、横屏/竖屏等初始化配置,可以从ILI9341的datasheet命令列表中查到这些命令的意义。函数 LCD_ILI9341_CMD()的作用是写入命令,函数LCD_ILI9341_Parameter()的作用是写入命令参数。
5 结语
本文对基于STM32的TFT液晶显示模块的驱动方法进行了探讨,设计的硬件电路和软件能对显示控制芯片ILI9341进行有效的控制,所有程序均在STM32系列的软件编译环境下调试通过。经实际证明,本方案是可行的,能保证320×240 点阵的TFT 刷新率,且留有足够CPU时间给用户程序。其硬件电路结构简单、控制方式灵活、对于其他型号的接口芯片也有参考价值。(作者:汤莉莉,黄伟)
FSMC TFT数字彩屏 TFT-LCD STM32 相关文章:
- 基于TPS65105的TFT-LCD电源设计方案(10-28)
- TFT-LCD技术及生产工艺流程简介(07-29)
- 盘点STM32-NUCLEO开发与仿真平台(03-28)
- 一种基于ZigBee和STM32的室内智能照明系统的设计(05-13)
- 大联大友尚集团推出ST STM32马达控制Nucleo开发工具包,可直接开始运转无刷直流马达(05-27)
- 这些VR设备“内脏”构造大解剖!绝对有你没见过的(02-14)