点屏参考
1. 确认spec是否支持¶
因为Takoyaki clk的限制,点panel前先确认panel的clk是否支持,Takoyaki clk的spec如下:
TTL输出CLK支持范围9Mhz-75Mhz,
计算方法: htotal * vtotal * fps
MIPI DSI输出CLK支持范围100Mbps/lane – 1.5Gbps/lane
计算方法:H_Total*V_Total*FPS*BitsPerPixel/lane number
BitsPerPixel=24(RGB888)/18(RGB666)/16(RGB565)
2. Panel相关pin脚的配置¶
首先确认硬件使用的pin脚(最好是使用下文中所列的pin,这些pin我们都有验证过),然后在kernel的dts里面切到对应的mode。
2.1. TTL¶
以公版为例,用的是PAD_TTL0~PAD_TTL27这组:
在infinity2m-ssc011a-s01a-padmux-display.dtsi中配置成PINMUX_FOR_TTL_MODE_1
2.2. MIPI¶
如下图所示,用的是PAD_TTL6~PAD_TTL15:
所以在padmux里面配置成PINMUX_FOR_TX_MIPI_MODE_1 mode:
2.3. RMII¶
如下图所示,用的是PAD_TTL0~PAD_TTL19:
所以padmux里面配置成PINMUX_FOR_TTL_MODE_10:
3. 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
eg: demo板原理图如下,R和B以及高低位反了,所以屏参的配置为3,2,1,1
对应debug 寄存器如下:
total - (de end - de start) = bp + fp + sync width
4. mipi panel¶
mipi panel跟ttl panel屏参部分相差不大,主要是需要额外配置mipi data line相关数据,具体如下:
下面对应的是mipi的四对data line & clk line是否需要swap,可以根据公版的线序和屏参配置进行设定
MI_PANEL_ChannelSwapType_e 这个结构体成员分别代表下面几组pin:
eCh0 → TTL11 - 10
eCh1 → TTL15 - 14
eCh2 → TTL13 - 12
eCh3 → TTL9 - 8
eCh4 → TTL7 - 6
对应取值的定义为:
D0 - 0
D1 - 1
D2 - 3
D3 - 4
CLK - 2
所以按照公版的原题图对应关系如下:
eg: demo板原理图和配置如下
配置应该为:
(MI_PANEL_ChannelSwapType_e)2, - clk(TTL11~10)
(MI_PANEL_ChannelSwapType_e)4, - D3(TT15~14)
(MI_PANEL_ChannelSwapType_e)3, - D1(TTL13~12)
(MI_PANEL_ChannelSwapType_e)1, - D2(TTL9~8)
(MI_PANEL_ChannelSwapType_e)0, - D0(TTL7~6)
MI_PANEL_MipiDsiConfig_t需要重点关注的参数如下:
u16Hactive u16Hpw u16Hbp u16Hfp u16Vactive u16Vpw u16Vbp u16Vfp
这几个参数对应的是panel spec中的 :
u16Width u16HSyncWidth u16HSyncBackPorch HSyncFrontPorch
u16Height u16VSyncWidth u16VSyncBackPorch VSyncFrontPorch
这几个参数需要保持和MI_PANEL_ParamConfig_t一致
enLaneNum 对应mipi 几line mode根据实际情况配置
pu8CmdBuf u32CmdBufSize 对应mipi的初始化cmd,对应格式如下:
-
屏厂提供的mipi初始化命令如下:
regw(0x01);//Reset Delay 30ms regw(0x80,0x58); regw(0x81,0x47); regw(0xB0,0x00,0x11,0x18,0x0E,0x11,0x06,0x07,0x08,0x07,0x22,0x04,0x12,0x0F,0xAA,0x31,0x18);
-
填入屏参的数据格式如下:
0x01,0,0x0, //0x01: 寄存器, 0:参数个数, 0x0:写寄存器的值 FLAG_DELAY, FLAG_DELAY, 30, 0x80,1,0x58, 0x81,1,0x47, 0xB0, 16,0x00,0x11,0x18,0x0E,0x11,0x06,0x07,0x08,0x07,0x22,0x04,0x12,0x0F,0xAA,0x31,0x18,
u8PolCh0 u8PolCh1 u8PolCh2 u8PolCh3 u8PolCh4 对应mipi四组data line一组clk line是否需要反转
eg: 如下原理图就不需要反转
如果出现clk&data都正常,但是panel不亮可以微调BK1033_44[15:7] ,默认是9,可以左右6 7 8 9 a b c d e f 微调,
这个值是clk和data之间的时间差,对应mipi屏参的最后一个:
MI_PANEL_MipiDsiConfig_t stMipiDsiConfig = { //HsTrail HsPrpr HsZero ClkHsPrpr ClkHsExit ClkTrail ClkZero ClkHsPost DaHsExit ContDet 0x7, 0x05, 0xC, 0x05, 0x0C, 0x07, 0x1D, 0x0E, 0x0C, 0x00, //Lpx TaGet TaSure TaGo 0x10, 0x1A, 0x18, 0x32, //Hac, Hpw, Hbp, Hfp, Vac, Vpw, Vbp, Vfp, Bllp, Fps 1920, 44, 148, 88, 1080, 5, 36, 4, 0, 60, ……
HsTrail HsPrpr HsZero ClkHsPrpr ClkHsExit ClkTrail ClkZero ClkHsPost DaHsExit的计算可以参考《mipi相关参数计算表格》,只需要填写H_Total,V_Total,FPS,BitsPerPixel,lane number就可以自动算来相关数据,手动取整下就可以了。
需要的公式和概念:
5. 导入屏参¶
将填好的ttl&mipi 屏参替换到对应点屏demo(H264Player & JpegPlayer),然后在板子跑点屏demo即可点亮panel
6. 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 GPIO7SPI相关pin:
CZ GPIO8
CLK GPIO9
DI GPIO10
DO GPIO11如果跟demo的pin脚有差异需要在sdk\verify\feature\disp\spi_panel.c中如下地方更改pin的配置
7. FAQ¶
-
关闭panel clk
/config/riu_w 0x1038 53 101
/config/riu_w 0x1038 63 1
-
已经点过的panel list
TTL PANEL
分辨率 Pixel CLK(MHz) 型号 驱动IC 1024x600 51 ADT07016BR50 FITI 480x854 40 LX50FWB4001 ICN9700 800x480 29 SAT050AT40H12B2 1024x600 51 SAT070CP50 480x854 27 TXW500066S0 ST7701S 480x272 9 VS043ISN26V10 ST7282 480x800 28 FRD400H40003 ST7701S-G5 MIPI PANEL
分辨率 Pixel CLKMHz LaneNum BitsPerPixel CLK LANEMHz DATA LANEMbps 型号 驱动IC 800x480 30 4 24 90 180 HONTRON 800x1280 68 4 24 204 408 SAT101CP40I28R1 720x1280 79 4 24 237 474 LX50HDI4002 RM68200 1024x600 52 4 24 156 312 SAT070BO30I21Y0 800x1280 68 4 24 204 408 SAT101AT40I28R1 JD9365 480x480 24 2 24 144 288 LX40WVH4060 ST7701S 800x1280 68 4 24 204 408 Q10140IM7167AA0 JD9365AA 1024x600 52 4 24 156 312 EK79007 -
点击获取《展频计算表格》