点屏参考
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¶
-
kernel需要enable如下两个config打开spi 驱动:
CONFIG_SPI_SPIDEV=y CONFIG_MS_SPI_INFINITY=y
-
dts配置好spi相关pin,kernel\arch\arm\boot\dts\infinity2m.dtsi
注意:spi用到的这些pin不能在padmux里面配置成其他用途。
-
修改makefile,编译spi 点屏demo
a. sdk\verify\feature\disp\config.mk
b. project\release\customer_tailor\nvr_i2m_display_glibc_tailor.mk
-
编译spi点屏demo
a. cd sdk/verify/feature
b. make clean;make disp
编译生成的demo在**sdk/verify/feature/disp/prog** -
将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的配置