[MSP-EXP432E401Y] MSP432E401 LaunchPad SPI驱动ST7789屏幕

[复制链接]

2

主题

12

帖子

150

积分

二氧化硅

Rank: 2

积分
150
查看: 4058回复: 3 发表于 2021-4-14 12:48:37   只看该作者
本帖最后由 pikka 于 2021-4-14 18:10 编辑

MSP432E401 LaunchPad SPI驱动ST7789屏幕
首先感谢TI和培训网在上个月的活动中为广大学子赠送了板卡,为正在准备国赛的同学提供了很大的帮助。
一、背景介绍
MSP432E4系列MCU是是一款主流的高性能 MCU,主频可达120MHz ,拥有USB2.0和百兆以太网等丰富的外设。目前,网络上关于E4系列的分享还很少,因此撰写本文,为竞赛培训网的发展做一些微薄的贡献。根据代码分享活动面向入门者的要求,本文讨论时会尽量贴近初学者的知识范围,增加一些背景知识介绍。
ST7789是一款常用的LCD屏幕驱动芯片,最高支持240×320分辨率,因此广泛应用于3寸以下的LCD屏幕驱动。无论是分辨率还是色彩效果,都要比常见的IIC屏幕:0.96寸OLED要好得多。ST7789支持8-bits/9-bits/16-bits/18-bits的并行接口和3/4线制的串行接口。本文所使用的屏幕是1.3寸,分辨率240×240的IPS屏幕,在某知名购物网站上面很容易买到。由于驱动芯片支持多种接口,市售的1.3寸IPS屏幕模块大致可分为引出并行接口、引出SPI接口和并口、SPI兼容三种形态,本文使用SPI驱动,因此只引出并行接口的屏幕模块是不能使用的。
使用SPI驱动屏幕的过程本质上就是使用SPI与屏幕驱动芯片通信的过程。从宏观上看,这个通信可以分为两类。
  • 屏幕控制。屏幕驱动芯片内部有大量的寄存器,控制着各种效果,比如背光的开启与关闭、显示方向的调整、帧率的控制等等,驱动程序根据需求,向这些寄存器中写入指定的值。
  • 显示的像素数据。屏幕驱动芯片中有一块显示缓冲区,向缓冲区写入的数据会被刷新到屏幕的一个个像素点上面。ST7789最高支持单像素使用18bit表示,也就是RGB666格式,不过常用的是16bit格式,也就是RGB565,如果不了解色彩格式可以参考这里

从底层来看,SPI通信又可以分为写入命令和写入数据两种。举个例子,ST7789的色彩格式寄存器地址是0x3A,我要配置芯片为RGB565色彩格式,就要向其中写入0x55这个值。因此应首先写入一个命令0x3A,指示我正在修改该寄存器,然后再写入一个数据0x55,代表将这个数写入到我刚才指定的寄存器中。在使用SPI驱动时,写入命令和写入数据是通过额外的一个引脚电平(DC引脚,代表Data or Command)来确定的,这一引脚一般使用GPIO来承担,它为高电平时芯片将传入的数据认为是写入数据,为低电平时芯片将传入的数据认为是写入命令。有时候我们还需要复位屏幕驱动芯片,因此本程序有一个GPIO连接到驱动芯片的复位脚,实际应用中不一定需要使用到。
编写屏幕驱动程序是一个较为复杂的过程,需要仔细研究驱动芯片的手册(见附件)。例如本程序的屏幕初始化部分就涉及到了十几个寄存器的操作,因此不建议新手从零开始编写驱动,可以借鉴网络上的开源驱动代码,作一定修改以后嵌入到自己的工程中。
本程序使用硬件SPI驱动,SPI模式是模式0,关于SPI的极性与相位问题可参考这篇文章
二、硬件连接与效果展示
LaunchPad 引脚 屏幕引脚
3.3V BLK(背光)
3.3V VCC
GND GND
PA4 RST
PA5 DC
PQ0(SCLK) SCK
PQ1(FSS) CS
PQ2(MOSI) SDA
需要注意的是,一些并口/SPI兼容的屏幕模块往往需要修改跳线电阻修改为SPI模式,它们的引脚标识也与上面描述的不同,具体请参考购买时附带的资料。
1618374956775.jpg
色彩与刷新率测试开始,中间那条白线是屏幕瑕疵导致的,与代码无关。
1618374956784.jpg
红色与蓝色切换,当然,还有其他颜色,这里就不一一列举了。
1618374956792.jpg 1618374956788.jpg
三、程序介绍
在工程当中,lcd.c/h是屏幕驱动程序,封装了绘制点、绘制直线、显示字符等函数,并提供了屏幕初始化和屏幕测试功能。fonts.c/h 是字库,包含不同大小的ASCII字符和14个中文字符(显然是全国大学生电子设计竞赛培训网,hhh)。nuedc.h是电赛的图标。ST7789_MSP432E401Y.c则是main函数所在程序文件。
  • GPIO和SSI外设初始化,配置用于D/C和RST引脚的GPIO,以及作传输的SSI3外设。SSI的频率设置为了20M,理论上越高屏幕刷新越快,在我的硬件上面最高测试过50M,如果线路连接质量较差,可能只能用较低的频率。
  • 屏幕初始化,配置了屏幕驱动芯片电压、背光、休眠、显示方向等一系列选项。
  • 屏幕测试,如前一部分图片所示,屏幕将首先连续快速刷新不同的颜色,然后显示2021、NUEDC Contest等电赛相关字符串,最后将显示电赛Logo,除了这些功能以外,驱动中还有绘制圆、正方形等功能,读者可以自己添加测试。

由于使用的是硬件的SPI片选信号,本程序使用了SSI外设的高级模式,具体的讨论可见论坛文章,感谢shengxiang的解答。
ST7789_MSP432E401Y.zip (3.97 MB, 下载次数: 120)

2

主题

12

帖子

150

积分

二氧化硅

Rank: 2

积分
150
发表于 2021-4-14 18:13:10   只看该作者
开发环境:CCS v10.1, SimpleLink MSP432E4 SDK(4.20.00.12), CCS Compiler

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
发表于 2021-4-27 13:41:45   只看该作者
pikka 发表于 2021-4-14 18:13
开发环境:CCS v10.1, SimpleLink MSP432E4 SDK(4.20.00.12), CCS Compiler

感谢分享~

0

主题

2

帖子

75

积分

一粒轻沙

Rank: 1

积分
75
发表于 2023-7-14 14:34:32   只看该作者
感谢分享
快速回复 返回顶部 返回列表