ST7789V2是一个单芯片TFT-LCD驱动器。该芯片可以直接连接到外部MCU,支持并行8080系列的8位/9位/16位/18位接口,也支持SPI串行通讯接口。 显示数据可以存储在240x320x18bits的片上显示数据RAM中。 它可以在没有外部操作时钟的情况下执行显示数据RAM读写操作,以尽量减少功耗。
并行接口占用外部MCU芯片引脚较多,但其通讯速率较快,一般只在需要高速刷新及MCU资源比较丰富的场合使用。SPI串行通讯接口占用MCU芯片引脚较少,通讯速率相对并行接口较慢,但因其占用MCU引脚资源较少被广泛使用。因此我们也使用SPI通讯的方式和ST7789V2进行通讯。
潘多拉开发板LCD部分原理图如下所示:
这里IM1为1,IM0为0表示选用4线SPI和LCD进行通讯,MCU和LCD驱动器的引脚对应如下:
1、MCU的LCD_CS对应LCD驱动器的CSX
2、MCU的LCD_WR对应LCD驱动器的WRX
3、MCU的LCD_SPI_SCK对应LCD驱动器的DCX
4、MCU的LCD_SPI_SDA对应LCD驱动器的SDA
根据数据在上升沿采样的信息,可以配置SPI的工作模式为以下两种:
1、CPOL=1,CPHA=1(空闲时时钟线为高,在第二个时钟边沿即上升沿进行采样)
2、CPOL=0,CPHA=0(空闲时时钟线为低,在第一个时钟边沿即上升沿进行采样)
因为外部芯片的SPI工作模式是固定的,但STM32的工作模式是可以配置的,因此需要将STM32的SPI工作模式配置和外部芯片一致才可以正常通讯,还需要注意外部芯片支持的SPI通讯的速率,STM32设置的SPI通讯速率不能比它高。一般情况下,外部SPI芯片手册中会说明该芯片是在时钟边沿的上升沿采样还是下降沿采样,根据此信息一般STM32会有两种两种工作模式可以满足,选择任意一种即可,一般偏向于选择CPOL=1即空闲时时钟为高的那种。
SPI配置好后就可以和ST7789V2芯片进行通讯了,具体发送的命令和需要LCD如何显示那就要看ST7789V2的芯片手册。该芯片手册共319页,大部分内容都介绍的是如何操作其中的寄存器以实现显示功能的配置。我们可以直接网上搜前辈们写好的驱动程序使用(网上资料鱼龙混杂,也不一定完全正确,因此需要自己边试边改),掌握芯片的操作原理即可,当需要实现特定的、炫酷的、网上找不到的功能时再继续深入去研究。不要重复造轮子,或者一上来就去啃ST7798V2的芯片手册,站在巨人的肩膀上才能看的更远,什么都想全部掌握是不可能的,根据项目需求去学习的效果往往会更好!