点屏参考


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

  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的配置


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
  • 点击获取《展频计算表格》