中科蓝讯 BT8958B2 SDK 开发——屏幕驱动及其配置说明

       哈喽,大家好。前段时间笔者在大大通的方案专栏分享了基于中科蓝讯 BT8958B2 的 Smart Watch 方案,今天这篇博文就基于此方案跟大家分享一下如何在中科蓝讯 BT8958B2 SDK 中更换屏幕驱动进行 UI 界面显示。

一、平台准备
  1. 使用的 SDK 版本是 SDK_BT8958_LVGL_S2835_20230202。
  2. 使用的 LCD 芯片型号为 SPD2010,LCD 尺寸为 412x412,支持 QSPI 通讯,本次以 QSPI 通讯为例进行驱动屏幕显示的分享。
  3. 硬件连接如下图所示。


       主控 BT8958B2 中与 LCD 的连接如上图所示,需要注意的是,除了屏幕复位引脚以及背光控制引脚可改动外,其他引脚分配不可以改动。

       屏幕软板接口如上图所示。主控通过 PE2 引脚给 LCD 供电 3.3V,通过 VDDIO 引脚给 LCD 背光电路供电 3.3V。

二、驱动文件准备

       参考 SDK 中默认屏幕驱动的编写方式,创建 lcd_spd2010.c 以及 lcd_spd2010.h 文件。

  1. 结构体创建。

       首先参考 SDK 中默认的屏幕驱动 lcd_gc9c01.c 文件编写 lcd_spd2010.c 文件。

      

       如上图所示,SDK 中屏幕驱动相关函数是以屏幕驱动结构体的形式去调用的。

       参考默认屏幕驱动的结构体创建新屏幕驱动结构体,下一步需编写完成相关的函数。

  1. 外设初始化。

           首先进行 BT8958B2 与 LCD 所接 IO 口的配置,包括 QSPI、LCD 供电口(该 IO口默认已配置为供电输出)以及  LCD背光 IO 的配置,接着进行时钟的配置,SDK 中已封装好 LCD 的 QSPI 接口配置以及时钟配置,照着配置即可。

  1. 接着进行 LCD 复位的配置,SDK 中已封装好该配置函数。

           根据 LCD 使用情况,调用该函数进行配置即可。

           这里使用硬件复位,软件复位函数为空即可。

  1. 屏幕驱动初始化。

           SDK 中提供了发送一个字节数据的接口函数 despi_sendbyte(uint8_t val),可以根据屏幕驱动手册中 QSPI 的时序,将发送数据的函数进行封装。

           如上图中所用时序为例,首先以单线 SPI 进行数据发送,接着以四线 SPI 进行数据发送。

           函数封装后,如上图所示。

           屏幕初始化中还涉及到开窗函数,如上图所示。

           接着,进行屏幕驱动的初始化,根据屏幕驱动手册发送命令和数据进行驱动,不同屏幕驱动程序不同,此处不对发送的指令和数据进行解释。

  1. 模式设置。

       如上图所示,参考默认的屏幕驱动中的函数,修改函数名即可。模式相关函数的设置中包括睡眠模式、显示模式、低功耗模式,此时不进行展开。

  1. 方转圆。

       由于不使用方转圆,该函数直接返回 draw_buf 即可。

  1. 信号设置。

       如上图所示,参考默认的模式函数即可,修改函数名即可。

  1. 显示。

       显示相关的函数也参考默认的模式函数即可。

       完成以上内容后,即完成了 spd2010.c 文件的编写。

      9. 接下来需进行 spd2010.h 文件的编写。


       参考 lcd_gc9c01.h 文件,对屏幕驱动结构体进行外部声明,如上图所示。

       到这里就完成了驱动文件的准备,下一步进行 SDK 中屏幕驱动的相关配置的设置。

三、SDK 更换屏幕驱动配置说明

  1. 将屏幕驱动 .c 以及 .h 文件复制到工程文件夹目录 app\gui\lcd 下,在工程对应位置添加文件。

 

  1. 在 lcd_conf.h 文件下,添加屏幕型号,如下图所示:

           以及添加屏幕型号的屏幕宏定义参数。

          接着把当前屏幕型号改为上一步添加的屏幕型号。

  1. 在 lv_port_disp.c 中对头文件进行包含。



  1. 在 disp_buf_conf.h 中需要添加与显示 Buffer 相关的屏幕像素的宏定义参数。

          至此,屏幕配置完成。

          显示一张图片的效果如上图所示。

四、总结

       以上就是屏幕驱动的全部内容,其中屏幕背光控制 IO 口仅配置为普通 IO 使用,如需了解通过 PWM 控制屏幕背光,请参考我的另一篇博文《中科蓝讯 BT8958B2 SDK 开发——PWM 控制屏幕背光》,感谢阅读。

 

五、参考资料

  1. SDK_BT8958_LVGL_S2835_20230202
  2. BT895X DataSheet.pdf
  3. SPD2010(L-WEA2010)_0.50.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能