PSPI PANEL使用参考
1. 概述¶
PSPI即Private SPI,Sigmastar私有SPI协议。本文将介绍rtos下如何点一颗spi panel,以SSD222 demo板为例。目前sensor只能接pspi0, panel只能接pspi1。
PSPI驱动代码不开放,使用方法详见MI PSPI。
2. sysdesc配置¶
根据HW Checklist中的padmux table选择PSPI的输出pad,根据panel的特性,决定是否复用TE脚。本例中以PSPI1的mode4以及TE mode5为例。
对应的引脚为:
Pad | Mode |
---|---|
PAD_TTL0 | PSPI1_CS |
PAD_TTL1 | PSPI1_CLK |
PAD_TTL2 | PSPI1_MOSI[0] |
PAD_TTL3 | PSPI1_MOSI[1] |
需要确认当前使用的product config是使用的何种sysdesc文件,可在rtk/proj/mak/product
中找到当前工程的配置,打开配置搜索CONFIG_SYSDESC_SELECT
确认当前使用的sysdesc文件。例如,当前工程使用pioneer3_ssc020a_64_freertos_smp_isw_usbdev
,其对应的sysdesc文件为CONFIG_SYSDESC_SELECT = "pioneer3-ssc020a-s01b.sys"
,那么就去修改这个文件。
sysdesc配置文件路径:rtk/proj/sc/driver/sysdriver/sysdesc/hal/pioneer3/pub/
配置示例:
如上图,<pspiX>
表示PSPI栏目,X的值为0和1,例如<pspi0>
表示PSPI0,仅支持输入接收,适用于sensor,<pspi1>
表示PSPI1,仅支持输出,适用于panel。
用户只需关心两个选项[pspi_padmux_u8]
和[te_padmux_u8]
。
[pspi_padmux_u8]
:表示padmux值。例如<pspi1>
下[pspi_padmux_u8] 4;
,表示PSPI1被复用成mode 4。
[te_padmux_u8]
:表示te padmux值。例如<pspi1>
下[te_padmux_u8] 5;
,表示PSPI1 TE被复用成mode 5。
3. 配置PSPI模块并初始化屏¶
根据屏的数据手册,3-Line SPI模式使用的是9bits传输,最高位控制发送0表示命令,发送1表示数据。
使用MI_PSPI_Transfer
接口实现数据传输到panel,通过结构体MI_PSPI_Msg_t
进行设置。如下,因为要区分命令/数据,所以第9位需要设置0或者1:
根据屏厂给的默认配置或者参考屏的数据手册,使用上述方式将相关命令发送到panel, 初始出driver IC。
4. 使用PSPI输出图像¶
使用MI_PSPI_SetDevAttr
接口可以重新配置PSPI的参数,发送命令初始化屏时未开启TE模式,时钟为1M,单线模式传输;输出数据时打开TE模式,并提高时钟频率,使用双线模式传输,提高传输速度,如下:
首先将一张图像数据拷贝到PSPI申请的buffer中,PSPI收到TE上升沿信号后,将一张图像发送到Panel。
Demo有对这些PSPI接口做一个简易的封装,可参考rtk/proj/sc/application/common/src/st_spi.c
。