点屏参考


1. 确认spec是否支持

点panel前先确认panel的clk是否支持,TTL输出CLK的spec如下:

Min (MHz) Max (MHz)
SSD20X 9 75
SSD21X & SSD22X 6 75
SSC268 2.3 74.25

计算方法: htotal * vtotal * fps

MIPI DSI输出CLK的spec如下:

Min (bps/lane) Max (bps/lane)
SSD20X 100M 1.5G
SSD21X & SSD22X - -
SSC268 100M 1.5G

计算方法:H_Total * V_Total * FPS * BitsPerPixel / lane number  

BitsPerPixel=24(RGB888)/18(RGB666)/16(RGB565)


2. 配置Panel相关的Pin

首先根据硬件原理图确认好使用的pin,然后在kernel的dts里面切换到对应的mode。

2.1. TTL

查阅硬件原理图,确认TTL Panel使用的pin。

对照HW CheckList中的tmux表,确认TTL对应的mode和padmux中的pin设置,如下图,使用ttl24 mode4,pin为PAD_GPIO0~PAD_GPIO7,PAD_TX0_IO00~PAD_TX0_IO09,PAD_TTL18~PAD_TTL27:

在padmux中配置成PINMUX_FOR_TTL24_MODE_4:

2.2. MIPI

查阅硬件原理图,确认MIPI panel使用的pin脚 TTL_R3~TTL_R7,TTL_G2~TTLG6。

 

对照HW CheckList中的tmux表,确认MIPI对应的mode和padmux中的pin设置。如下图,使用mipi mode1,pin脚为PAD_TX0_IO00~PAD_TX0_IO09:

在padmux里面配置成PINMUX_FOR_TX_MIPI_MODE_1 mode:


3. 屏参设置

3.1. TTL Panel参数设置

首先找一个已经配好的相同分辨率的TTL 屏参,然后根据panel spec填好以下参数:

u16HSyncWidth & u16HSyncBackPorch & u16VSyncWidth & u16VSyncBackPorch

对应panel spec的数据如下:

u16HStart=u16HSyncWidth + u16HSyncBackPorch

u16VStart=u16VSyncWidth + u16VSyncBackPorch

u16Width & u16Height对应panel spec数据如下:

u16HTotal=u16Width+u16HSyncWidth+u16HSyncBackPorch+HSyncFrontPorch

u16VTotal=u16Height+u16VSyncWidth+u16VSyncBackPorch+VSyncFrontPorch

对应panel spec数据如下:

u16DCLK = u16HTotal * u16VTotal * frequence(60)/1000*1000

如下三个参数分别对应R G B 三个channel的数据是否要做swap

u8SwapOdd_RG & u8SwapEven_RG & u8SwapOdd_GB

对应channel选择的情况如下:

0 default(不做swap)

1 select R

2 select G

3 select B

u8SwapEven_GB 表示rgb数据线的高低位是否需要做swap

如下图,R和B以及高低位反了,所以屏参的配置为3,2,1,1

3.2. MIPI Panel参数设置

mipi panel跟ttl panel屏参设置的差别主要在于它需要额外配置mipi data line相关数据,具体如下:

下面对应的是mipi的四对data line & clk line是否需要swap,可以根据公版的线序和屏参配置进行设定

MI_PANEL_ChannelSwapType_e 这个结构体成员分别代表panel的:

eCh0,eCh1,eCh2,eCh3,eCh4 依次对应panel的CLK CH,Data CH0,Data CH1,Data CH2,Data CH3

对应eCh选择的value情况如下:

0 - use soc TX_MIPI_D0

1 - use soc TX_MIPI_D1

2 - use soc TX_MIPI_CK

3 - use soc TX_MIPI_D2

4 - use soc TX_MIPI_D3

参照原理图:(左侧为soc pin,右侧为panel pin)

panel和soc的连接:

CLK CH    <-> panel TX_MIPI_CK  <->   soc TX_MIPI_CK     2

Data CH0 <-> panel TX_MIPI_D0  <->   soc TX_MIPI_D3    4

Data CH1 <-> panel TX_MIPI_D1  <->   soc TX_MIPI_D2    3

Data CH2 <-> panel TX_MIPI_D2  <->   soc TX_MIPI_D1    1

Data CH3 <-> panel TX_MIPI_D3 <->   soc TX_MIPI_D0     0

配置应该为:

(MI_PANEL_ChannelSwapType_e)2,               - CLK CH
(MI_PANEL_ChannelSwapType_e)4,               - Data CH0
(MI_PANEL_ChannelSwapType_e)3,               - Data CH1
(MI_PANEL_ChannelSwapType_e)1,               - Data CH2
(MI_PANEL_ChannelSwapType_e)0,               - Data CH3

屏参设置为:

m_ucClkLane      = 2        (CLK CH)

m_ucDataLane0 = 4        (Data CH0)

m_ucDataLane1 = 3        (Data CH1)

m_ucDataLane2 = 1        (Data CH2)

m_ucDataLane3 = 0        (Data CH3)

MIPI Panel需要重点关注的参数如下:

m_wHactive,m_wHpw,m_wHbp,m_wHfp

m_wVactive,m_wVpw,m_wVbp,m_wVfp

这几个参数对应的是panel spec中的 :

u16Width,u16HSyncWidth,u16HSyncBackPorch,HSyncFrontPorch

u16Height,u16VSyncWidth,u16VSyncBackPorch,VSyncFrontPorch

**m_wFps**默认设置为60。

enLaneNum 对应mipi 几line mode根据实际情况配置。

**m_pCmdBuf **对应mipi的初始化cmd,由屏厂提供。

**m_ucPolCh0,m_ucPolCh1,m_ucPolCh2,m_ucPolCh3,m_ucPolCh4**对应mipi四组data line一组clk line是否需要反转。

如下图就不需要反转

**m_wDataClkSkew**如果出现clk&data都正常,但是panel不亮可以微调。默认是9,可以左右6 7 8 9 a b c d e f 微调,

m_wHsTrail,m_wHsPrpr,m_wHsZero,m_wClkHsPrpr,m_wClkHsExit,m_wClkTrail,m_wClkZero,m_wClkHsPost,m_wDaHsExit的计算可以参考如下表格,只需要填写H_Total,V_Total,FPS,BitsPerPixel,lane number,就可以自动算来其他相关数据,手动取整下就可以了。

需要的公式和概念:


4. 导入屏参

将填好的ttl&mipi 屏参添加到 project/board/m6/SSC016A-S01A/config/config.ini 文件中,并在m_pnlList 中包含当前的屏参项。

demo中指定DISP和Panel的panelType ,然后在板子跑点屏demo即可点亮panel。


5. SPI panel

  1. kernel需要enable如下两个config打开spi 驱动:

    CONFIG_SPI_SPIDEV=y
    CONFIG_MS_SPI_INFINITY=y
    
  2. dts配置好spi相关pin,kernel\arch\arm\boot\dts\infinity2m.dtsi

    注意:spi用到的这些pin不能在padmux里面配置成其他用途。

  3. 修改makefile,编译spi 点屏demo

    a. sdk\verify\feature\disp\config.mk

    b. project\release\customer_tailor\nvr_i2m_display_glibc_tailor.mk

  4. 编译spi点屏demo

    a. cd sdk/verify/feature

    b. make clean;make disp
    编译生成的demo在**sdk/verify/feature/disp/prog**

  5. 将prog 和 240_320_rgb565_20.bin放到同一目录下面执行./prog即可点亮panel

注意: 目前demo的pin的配置如下。

CS GPIO47
CS1 GPIO48
RST GPIO6
RS GPIO7

SPI相关pin:
CZ GPIO8
CLK GPIO9
DI GPIO10
DO GPIO11

如果跟demo的pin脚有差异需要在sdk\verify\feature\disp\spi_panel.c中如下地方更改pin的配置


6. FAQ

  1. 关闭panel clk

    /config/riu_w 0x1038 53 101
    /config/riu_w 0x1038 63 1
    
  2. 点击下载 点屏列表展频计算表格