为SSD201添加 SPI_TFT小液晶
一、点屏流程概述
1)根据原理图配置SPI PIN脚。查询CheckList表格并更改dts文件,配置对应管脚的PIN_MUX。
2)Kernel中使能SPI驱动 menuconfig下使能如下选项:
>Device Drivers
>Sstar Soc platform drivers
>Sstar MSPI driver
3) 根据数据手册下初始化命令。初始化命令一般由屏厂提供,或者查看屏规格书自行配置。
4)写入图像数据,显示画面。有些屏自带内部测试partten,可通过命令使能输出。
二、具体流程记录
Sigmarstar 官方文档给出的点屏4条总流程 ,对与像我这样的新手来说看着有点一知半解,模模糊糊,接下来通过具体的操作分析,反复实验验证来一步步的进行。
1)首先我们要确认SSD201的硬件SPI口的管脚,我用的是启明云端做的核心板,因此在核心板资料中找到了IDO-SOM2D01-Pinout.xlsx 表格,其中列出了核心板管脚和SSD201 CPU 管脚的对应关系。

最左侧一列 9 10 11 12 为核心板的管脚 125 126 127 128 为SSD201CPU的管脚 并且从上图可以看出SPI0口所对应的GPIO 为GPIO8 GPIO9 GPIO10 GPIO11,默认上电模式已经设定为SPI。
核心板FLASH类型为nand 从 启明给的source 源码文件中的 Relese_to_customer.sh 编译脚本文件中得知 kernel 源码的默认配置文件为 infinity2m_spinand_ssc011a_s01a_minigui_defconfig,打开该文件后得知 该kernel 配置文件生成的设备树 dtb文件为 infinity2m-spinand-ssc011a-s01a-display.dtb,因此设备树源文件为 infinity2m-spinand-ssc011a-s01a-display.dts

打开 infinityms-spinand-ssc011a-s01a-display.dts 后发现 该文件又包含了 infinity2m.dtsi 、infinity2m-ssc011a-s01a-display.dtsi 、infinity2m-ssc011a-s01a-padmux-display.dtsi三个文件,因此该内核配置文件所对用的设备树文件我们只需要关心上面四个即可。

配置管脚复用的文件应该为 infinity2m-ssc011a-s01a-padmux-display.dtsi ,此文件记录着 所有管脚的复用情况。SSD201只有一个SPI0口,SPI0的管脚复用公分为6种方式,我们现在用的是方式5。因此在该文件下添加如下的配置字段。重点注意的是 一点要检查 这几个管脚有没有再次是配置为其他的功能,有的话一定删除,否则不能启动SPI功能,所关联的的DTS或者DTSI文件都要检查一遍。

2)在设备树文件中添加FBTFT设备。

3)由于设备树中的心跳灯节点和 SPI节点管脚冲突,因此在设备树中删除了心跳灯的节点。但是每次开机后系统会自动挂载心跳灯的驱动模块,需要删除rootfs.mk中相关操作
vi project/image/configs/i2m/rootfs.mk

4)ST7789V显示屏依赖于CPU的SPI口需要打开内核中的 SPI驱动,否则挂载不上。

5)重新编译内核 后 挂载 fb_st7789v.ko 和 fbtft_device.ko 后 显示屏黑屏,在串口终端输入 cat /dev/urandoom > /dev/fb0 后 雪花屏


浙公网安备 33010602011771号