嵌入式开发-STM32硬件SPI驱动TFT屏
- 这次用到的TFT屏
- CubeMX设置
- 代码编写
- 增加的内容
- 需要注意问题
- 代码下载
这次用到的TFT屏
现在的TFT屏幕已经很便宜了,65536色屏幕,2.8英寸,分辨率320X240的液晶屏才20元,我为了图省事,多配了一个转接板12元,共32元包邮到家,真是香。
上面这个是这次用到的2.8寸TFT屏幕(20元),下面的是0.96寸OLED屏(10元),可见尺寸的巨大差别。当然OLED屏的优势是省电,在手持设备上是首选。
这个屏幕是SPI接口,最少4线驱动,分别是MOSI数据,CLK时钟,CS片选,DC数据/指令切换,还有2根线可选,是RESET和背光,复位可以用电阻电容上电时拉一下跳变即可,背光可以一直接高电平,也可以用PWM控制亮度。
CubeMX设置
CubeMX教程见这里:嵌入式开发–CubeMX使用入门教程
MCU是STM32H750VBT6,用的是SPI1接口,其他是常规设置,
支持的最高时钟频率,液晶屏厂家没有给出,ILI9341芯片手册上是这样说的
最高频率是6.35MHz,但要注意的是这是点频率,而我们在CubeMX中设置并不是这个,而是SPI的时钟频率,每个点是8位,所以这个频率要乘以8才是我们要的,5.35*8=50.8MHz,实测25M没有问题。27.5M花屏,30M以上无显示,可能是我用的杜邦线比较长信号衰减大。
具体设置如下:
代码编写
厂家只提供了F103系列的软件驱动GPIO来模拟SPI时序的代码,效率太低,于是改用硬件SPI,代码做了一些修改。
显示效果如下,16点阵字库:
增加的内容
增加了24点阵字库,常用的12或16字库太小了,看着费劲。
下图是24点阵的显示效果
需要注意问题
这个液晶屏是65536色,或者叫65K色,颜色格式是RGB565,传送数据时,正序和倒序的不同,会导致红蓝颠倒,通过改变大小端的设置,可以修正。理论上ILI9341应该有相关的寄存器设置,懒得去仔细查手册了,直接改的SPI设置搞定。如果有知道的,麻烦告知一下,十分感谢。
代码下载
代码可以在这里下载:嵌入式开发,STM32H750VBT6用硬件SPI方式驱动TFT液晶屏