5. sRGB

5.1. 环境准备

5.1.1. sRGB接口介绍

sRGB分为3-cycle RGB和4-cycle SRGB,3-cycle是为了支持Sitronix spec,4-cycle RGB是为了支持旭曜spec。接口和时序相关信息如下:

图示 描述已自动生成

下图以RGB666为例,介绍pixel排布情况:

图示 描述已自动生成

sRGB由disp_serial_ttl模块实现,disp_serial_ttl模块用来输出serial RGB格式,支持RGB565/666/888三种色深,RGB输出顺序可以重排,其架构图如下:

图示 描述已自动生成

5.1.2. CLK设置

可以设定3T或者4T打出一个pixel,同时需要对应设定clk_bt=3*clk_disp或者clk_bt=4*clk_disp。设定3T或4T时,对应的时序如下:

图示 描述已自动生成

5.1.3. VO MUX

sRGB以及其他的vo协议(BT, RGB, HW MCU, SW MCU)模块的输出数据会进入到sc_vo_mux,在该模块中做mux,选择其中一种输出格式,并可通过寄存器设定每个bit在输入和输出之间的映射关系,进入到vo_data_sync模块后,可以再次将该输出格式与APB设定的寄存器二则一输出。

图示 描述已自动生成

5.1.4. 如何配置VO MUX

图示 描述已自动生成 图示 描述已自动生成

上面两张图分别对应VO signal out mapping和VO mux的寄存器设置。以3-cycle RGB为例来展示如何配置mux。 由第一张图可以得到:

VO_16 -> data0
VO_17 -> data1
VO_18 -> data2
VO_19 -> data3
VO_20 -> data4
VO_21 -> data5
VO_22 -> data6
VO_23 -> data7
VO_24 -> vsync
VO_25 -> hsync
VO_26 -> hde

设置vo mux就是将对应的寄存器配置为:

__reg_write(REG_VO_MAC_VO_MUX1(inst), 0x00001A00);
_reg_write(REG_VO_MAC_VO_MUX3(inst), 0X16000000);
_reg_write(REG_VO_MAC_VO_MUX4(inst), 0x12131415);
_reg_write(REG_VO_MAC_VO_MUX5(inst), 0x19171011);
_reg_write(REG_VO_MAC_VO_MUX6(inst), 0x18000000);
_reg_write(REG_VO_MAC_VO_MUX7(inst), 0x00030000);
图示 描述已自动生成

然后根据pinout表来pin mux,类似于下面处理:

_reg_write(0x03001148, 0x02);  // VO_D[19]
_reg_write(0x0300114C, 0x02);  // VO_D[18]
_reg_write(0x03001150, 0x02);  // VO_D[17]
_reg_write(0x03001154, 0x02);  // VO_D[16]
_reg_write(0x03001158, 0x02);  // VO_D[15]
_reg_write(0x0300115C, 0x02);  // VO_D[14]
_reg_write(0x03001160, 0x02);  // VO_D[13]
_reg_write(0x03001144, 0x02);  // VO_D[20]

5.2. 配置步骤

寄存器配置流程如下:

图示 描述已自动生成

5.2.1. 背光和电源

sRGB的电源和背光都是外部控制的,不需要配置通过GPIO去控制。需要注意在配置driver IC的时候,需要先去拉reset,需要先拉高再拉低。

5.2.2. spi问题

  • 在spi设置pin mux的时候,需要注意mars3需要切换两次,第一次切成MUX_SPI_XX ,第二次再切成SPI_XX。

  • spi在下初始化序列的时候,需要通过GPIO拉低拉高来区分发送命令还是数据。发送命令需要拉低,发送数据需要拉高。

5.3. 问题DEBUG

5.3.1. 线序检查

sRGB涉及到了两次mux,一次是vo mux,一次是pin mux,所以点不亮屏的时候,检查线序是有必要的。检查线序的时候可以通过修改vo mux寄存器结合示波器观察波形来确认。比如说修改vo mux寄存器将data0设置成0,结合硬件同事给的线序,用示波器去量转接板data0那根线是否还有波形,如果有波形说明线序有问题。

5.3.2. 示波器检查CLK

Clk分为了clk_bt和clk_disp,其中clk_bt容易测量,直接通过示波器测量clk lane就可以了,但是clk_disp无法直接测量出来,但是可以通过测量data lane来反推clk_disp。具体做法是:把data lane波形展开,根据data波形的规律,可以测量出帧率是多少,结合htt和vtt就可以推出clk_disp是多少。这样就可以看出来clk_bt和clk_disp是否符合预期。

5.3.3. 波形电压

正常从主控板端测量到的波形电压一般在1.8V左右,到了转接板后经过level shift芯片后电压一般会提升到3.3V左右。