哈喽,大家好。
今天用中科蓝讯 BT8918C 做一个驱动屏幕的示例。 本示例用到的屏幕的驱动芯片为 ST7789V,屏幕的尺寸为 1.69 寸。 希望对大家做屏幕驱动移植时有所帮助。
下面先对驱动芯片做个大致了解,参考驱动芯片 ST7789V 资料,可知 ST7789V 是一个单芯片 TFT-LCD 驱动器。 该芯片可以直接连接到外部 MCU,支持并行 8080 系列的8位/9位/16位/18位接口,也支持SPI串行通讯接口。 显示数据可以存储在 240x320x18bits 的片上显示数据RAM中。 它可以在没有外部操作时钟的情况下执行显示数据 RAM 读写操作,以尽量减少功耗。
中科蓝讯 BT8918C 的芯片引脚数量无法支持占用 MCU 引脚资源较多的并行接口,因此驱动该屏幕将使用 SPI 串行通讯接口。 屏幕每个像素点可选择 16bits 控制,RGB 三种颜色控制的位数分别为 5:6:5。
接着介绍下中科蓝讯 BT8918C 与 ST7789V 屏幕驱动芯片进行 SPI 串行通讯所需使用到的引脚,下图是屏幕引出来的引脚:
1)cs:SPI 片选
2)RS:命令/数据选择脚
3)reset:屏幕复位
4)K:背景光控制
5)SDA:SPI 数据传输脚
6)SCK:SPI 时钟信号
7)VCC:屏幕供电正极
8)GND:屏幕供电负极
注意,图中的 TP 相关的四个引脚是屏幕触控芯片的控制引脚,如果不用屏幕触控功能可以不连接。 cs、RS、reset、k 选用 BT8918C 的普通 GPIO 连接即可; SDA、SCK 负责 SPI 串行通信,可选择 BT8918C 的 SPI1 引脚 PA7(SDA)、PA6(SCK),注意,不可以配置 BT8918C 的 SPI0,因为 SPI0 已被配置来读取内部 Flash; 最后连接供电脚即完成连接。
接下来即可配置 BT8918C 与 ST7789V 的 SPI 通信,可以直接找找到 spi_lcd_init()函数,这个函数默认已经做好了 SPI 的配置,默认配置系统时钟为 160M,时钟极性、时钟相位、高位先行的配置需与屏幕驱动芯片 ST7789V 要求一致,需要注意的是默认配置的引脚是不是前面选取的 PA7(SDA)、PA6(SCK), 配置完成可直接用 lcd_id_read()函数发送 0x04 读取屏幕 ID,若成功读取则说明 SPI 通讯成功。
SPI 通讯成功后,即可通过 BT8918C 向 ST7789V 发送屏幕相关的初始化指令,完成之后就可以正常显示中科蓝讯默认的屏幕 UI 了。
中科蓝讯开发了非常便捷的表盘设计工具,可用于表盘的各种控件类型的生成,生成的资源文件,可在 SDK 中的 api_gui.h 文件找到相应的接口函数来做显示。 具体资料可联系 WPI。
本文的介绍就到这里,希望对大家有所帮助。 如有错误欢迎大家批评指正。 如果大家还有什么其他的问题或者功能想要询问,亦可以在评论区中提出,可以共同探讨,一起进步。
参考文档:
1、ST7789V datasheet
2、中科蓝讯蓝皮书