Panel配置参考
1. 基本介绍¶
1.1 概述¶
屏参顾名思义是屏幕使用的参数配置。本文档主要讲解点屏相关配置,屏参的含义和如何设置正确的屏参。
1.2. 关键字说明¶
-
TTL/MIPI-DSI
TTL: Transistor-Transistor Logic,接口信号为数字信号,传输并行RGB数据。
MIPI-DSI: Mobile Industry Processor Interface-Display Serial Interface,接口信号以差分信号传输,传输RGB数据,有高速HS和低速LP模式 。
2. 屏参配置文件介绍¶
2.1 屏参配置文件路径¶
project\board\$(chip)\$(boardname)\config\config_disp.json
2.2 屏参配置文件组成¶
系统启动过程中会去解析屏参配置文件,然后将不同屏参保存到系统中,给显示模块使用。显示模块会根据用户调用API的参数设定向系统获取所需屏参。 获取屏参流程请参考:MI_DISP_API
屏参配置文件组成如下图所示,mi_disp是根节点,包含三个子节点:content,屏参,PQ。
content节点是屏参名称列表的集合,包含了三个子节点:m_pnlList、m_btList、m_mipidsiList。
-
m_pnlList
m_pnlList罗列了每种接口类型的屏参名称,用户自定义屏参可放于此处,但是一种接口类型只能对应一份屏参,若存在相同类型,只会选取排在最前面的屏参。
-
m_btList/m_mipidsiList
m_btList罗列BT656多种分辨率屏参名称,m_mipidsiList罗列mipidsi多种分辨率屏参名称。
屏参由section、variable name组成:
section指的是图中屏参名称,EX:"SAT070AT50H18BH"。
variable name指的是":"左边的字段,右边是给variable name赋的值。
section是唯一的,不允许有同名,但是variable name允许。如上图,section SAT070AT50H18BH只能有一个,但是m_pPanelName可以在不同的section中。系统根据不同的section区分variable name,然后添加不同的屏参。
3. 新增屏参¶
1、新增的屏参定义的section name不允许和已有的section name重名
2、新增的屏参可以放在在m_pnlList的前面(同类panel只有第一个panel是有效的)。如果m_pnlList存在与新增屏参相同接口类型的屏参,可以将原有相同接口类型的屏参删除,也可以将新增的屏参加在原有接口屏参前面。
3、在屏参节点中添加新屏参,如下所示:
"SAT070AT50H18BH": { "m_wPanelDispPath": 0, "m_pPanelName": "SAT070AT50H18BH", "m_ePanelTiming": 52, "m_ePanelIntfType": 9, "m_wPanelHSyncWidth": 48, "m_wPanelHSyncBackPorch": 46, "m_wPanelVSyncWidth": 4, "m_wPanelVBackPorch": 23, "m_wPanelHStart": 98, "m_wPanelVStart": 27, "m_wPanelWidth": 1024, "m_wPanelHeight": 600, "m_wPanelHTotal": 1344, "m_wPanelVTotal": 635, "m_wPanelDCLK": 51000000, "m_bPanelInvDCLK": 0, "m_bPanelInvDE": 0, "m_bPanelInvHSync": 0, "m_bPanelInvVSync": 0, "m_wSpreadSpectrumFreq": 0, "m_wSpreadSpectrumRatio": 0, "m_ucPanelSwapChnR": 3, "m_ucPanelSwapChnG": 2, "m_ucPanelSwapChnB": 1, "m_ucPanelSwapRgbML": 0 },
4. 屏参参数说明¶
4.1 公共参数¶
参数 | 描述 |
---|---|
m_pPanelName | panel name |
m_ePanelTiming | 输出分辨率,52表示用户自定义 |
m_ePanelIntfType | 接口类型 BT656:3 TTL:9 MIPIDSI:10 SRGB:12 |
m_wPanelHSyncWidth | 行同步信号脉宽 |
m_wPanelHSyncBackPorch | 行同步信号后肩 |
m_wPanelVSyncWidth | 场同步信号脉宽 |
m_wPanelVBackPorch | 场同步信号后肩 |
m_wPanelHStart | m_wPanelHSyncWidth+m_wPanelHSyncBackPorch |
m_wPanelVStart | m_wPanelVSyncWidth+m_wPanelVBackPorch |
m_wPanelWidth | 行有效像素点数 |
m_wPanelHeight | 场有效行数 |
m_wPanelHTotal | m_wPanelWidth+m_wPanelHSyncWidth+m_wPanelHSyncBackPorch+HsyncFrontPorch |
m_wPanelVTotal | m_wPanelHeight+m_wPanelVSyncWidth+m_wPanelVBackPorch+VsyncFrontPorch |
m_wPanelDCLK | pixel clk: m_wPanelHTotal * m_wPanelVTotal * fps |
m_bPanelInvDCLK | pixel clk极性反转 |
m_bPanelInvDE | DE极性反转 |
m_bPanelInvHSync | Hsync极性反转 |
m_bPanelInvVSync | Vsync极性反转 |
m_wSpreadSpectrumFreq | 时钟延展幅度调制(详见spreadSpectrumFreqCalculation) |
m_wSpreadSpectrumRatio | 时钟延展频率调制(详见spreadSpectrumFreqCalculation) |
m_ucPanelSwapChnR | Swap channel R default = 0(保持物理线路原始连接,即R通道使用硬件设计中默认对应的信号源) 1:select R(强制覆盖通道信号源,将R通道数据替换为主控输出的R通道信号) 2:select G 3:select B |
m_ucPanelSwapChnG | Swap channel G default = 0 1:select R 2:select G 3:select B |
m_ucPanelSwapChnB | Swap channel B default = 0 1:select R 2:select G 3:select B |
m_ucPanelSwapRgbML | Swap RGB MSB/LSB(控制RGB数据的高低位(MSB/LSB)顺序交换) 0:disable M/L swap 1:enable M/L swap MSB:数据的最高位有效 LSB:数据的最低位有效 |
m_ePanelRgbDataType | RGB data type or LCD data bus 0:E_MI_DISP_MHALPNL_RGB_DTYPE_RGB888, 1:E_MI_DISP_MHALPNL_RGB_DTYPE_RGB666, 2:E_MI_DISP_MHALPNL_RGB_DTYPE_RGB565, 3:E_MI_DISP_MHALPNL_RGB_DTYPE_RGB444, 4:E_MI_DISP_MHALPNL_RGB_DTYPE_RGB333, 5:E_MI_DISP_MHALPNL_RGB_DTYPE_RGB332, 6:E_MI_DISP_MHALPNL_RGB_DTYPE_BGR888, 7:E_MI_DISP_MHALPNL_RGB_DTYPE_BGR666, 8:E_MI_DISP_MHALPNL_RGB_DTYPE_BGR565, 9:E_MI_DISP_MHALPNL_RGB_DTYPE_BGR444, 10:E_MI_DISP_MHALPNL_RGB_DTYPE_BGR333, 11:E_MI_DISP_MHALPNL_RGB_DTYPE_BGR332, 12:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_UY0VY1, 13:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_VY0UY1, 14:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_UY1VY0, 15:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_VY1UY0, 16:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_Y0UY1V, 17:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_Y0VY1U, 18:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_Y1UY0V, 19:E_MI_DISP_MHALPNL_RGB_DTYPE_YUV422_Y1VY0U |
m_ePanelRgbDataSwap | RGB data swap ,对所有的数据做swap 0: disable 1: enable |
m_wPadDrvngLvl | pin脚驱动能力调整,对接口所有的pin脚设置驱动能力档位,共有4个档位 0: 4mA 1: 8mA 2: 12mA 3: 16mA |
注:m_ePanelRgbDataType当前全部支持,12~19是BT接口可选。m_wPadDrvngLvl目前只支持0档和1档。m_ucPanelSwapRgbML是交换RGB数据传输的高低位,m_ePanelRgbDataSwap是对RGB所有数据进行交换。
m_bPanelInvDCLK,m_bPanelInvDE,m_bPanelInvHSync,m_bPanelInvVSync正常timing示意图:
m_bPanelInvDCLK,m_bPanelInvDE,m_bPanelInvHSync,m_bPanelInvVSync开启极性反转timing示意图:
4.2 MIPIDSI接口特有参数¶
如果是MIPI panel,还需要对MIPI DSI进行配置。
MIPI DSI参数说明:
注:如果没有特殊时序需求,目前支持自动计算m_wHsTrail、m_wHsPrpr、m_wHsZero、m_wDaHsExit、m_wClkTrail、m_wClkHsPrpr、m_wClkZero、m_wClkHsExit、m_wClkHsPost、 m_wLpx、m_wTaGet、m_wTaSure、m_wTaGo、m_wContDet。即这些参数可不填写,由代码自动计算。
注:以上dphy参数来源于MIPI_D-PHY_specification.pdf
参数 | 描述 |
---|---|
m_wHsTrail | T_{HS-TRAIL} (可参考文件配置MIPIDSIParamCalculation) |
m_wHsPrpr | T_{HS-PREPARE} (可参考文件配置MIPIDSIParamCalculation) |
m_wHsZero | T_{HS-ZERO} (可参考文件配置MIPIDSIParamCalculation) |
m_wDaHsExit | T_{HS-EXIT} (可参考文件配置MIPIDSIParamCalculation) |
参数 | 描述 |
---|---|
m_wClkTrail | T_{CLK-TRAIL} (可参考文件配置MIPIDSIParamCalculation) |
m_wClkHsPrpr | T_{CLK-PREPARE} (可参考文件配置MIPIDSIParamCalculation) |
m_wClkZero | T_{CLK-ZERO} (可参考文件配置MIPIDSIParamCalculation) |
m_wClkHsExit | T_{HS-EXIT} (可参考文件配置MIPIDSIParamCalculation) |
m_wClkHsPost | T_{CLK-POST} (可参考文件配置MIPIDSIParamCalculation) |
参数 | 描述 |
---|---|
m_wLpx | T_{LPX} (可参考文件配置MIPIDSIParamCalculation) |
m_wTaGet | T_{TA-GET} (可参考文件配置MIPIDSIParamCalculation) |
m_wTaSure | T_{TA-SURE} (可参考文件配置MIPIDSIParamCalculation) |
m_wTaGo | T_{TA-GO} (可参考文件配置MIPIDSIParamCalculation) |
m_wContDet | contention detection, default 0(可参考文件配置MIPIDSIParamCalculation) |
m_wBllp | blanking or low power interval, default 0 |
m_wFps | frame per second, follow panel spec |
m_eLaneNum | data lane number, 1 ~ 4 |
m_eFormat | data output format 0:RGB565 1:RGB566 2:LOOSELY_RGB666 3:RGB888 |
m_eCtrlMode | 0:CMD_MODE 1:SYNC_PULSE 2:SYNC_EVENT 3:BURST_MODE |
m_wDataClkSkew | defult: 7 |
m_ucPolCh0 | Channel 0 polarity 0:default 1:positive |
m_ucPolCh1 | Channel 1 polarity 0:default 1:positive |
m_ucPolCh2 | Channel 2 polarity 0:default 1:positive |
m_ucPolCh3 | Channel 3 polarity 0:default 1:positive |
m_ucPolCh4 | Channel 4 polarity 0:default 1:positive |
m_ucClkLane | clk lane selection 0:select chn0 1:select chn1 2:select chn2 3:select chn3 4:select chn4 |
m_ucDataLane0 | data lane0 selection 0:select chn0 1:select chn1 2:select chn2 3:select chn3 4:select chn4 |
m_ucDataLane1 | data lane1 selection 0:select chn0 1:select chn1 2:select chn2 3:select chn3 4:select chn4 |
m_ucDataLane2 | data lane2 selection 0:select chn0 1:select chn1 2:select chn2 3:select chn3 4:select chn4 |
m_ucDataLane3 | data lane3 selection 0:select chn0 1:select chn1 2:select chn2 3:select chn3 4:select chn4 |
m_pCmdBuff | MIPI panel cmd buffer, follow panel spec |
m_pDeinitCmd | MIPI panel deinit cmd buffer, follow panel spec, 内容格式与m_pCmdBuff相同,如不需要可删除该参数 |
m_pCmdBuff是panel初始化cmd,该部分是各panel厂商参照协议标注自定义的,因此该参数设定内容一般找panel厂商提供。该参数的设定内容格式如下所示,以十六进制填写。
"m_pCmdBuff":[ "cmd1","data_num","data[0]","data[1]",...,"data[num-1]", ..., "cmdN","data_num","data[0]","data[1]",...,"data[num-1]", "0xFF","0xFF" //结束符 ]
参数 | 描述 |
---|---|
m_pAfterLP11 | LP11之后,power on时序控制,如不需要可删除该参数 |
m_pAfterInit | mipidsi init cmd发送完成后,power on时序控制,如不需要可删除该参数 |
m_pAfterDeinitCmd | mipidsi deinit cmd发送完成后,power off 时序控制,如不需要可删除该参数 |
m_pAfterLP11、m_pAfterInit、m_pAfterDeinitCmd 用于控制屏幕的上下电时序,内容格式如下所示。pin_idx后面必须跟上level和delay_ms,以十进制填写。
"m_pAfterLP11":[ "pin_idx","level","delay_ms", "pin_idx","level","delay_ms", ..., "pin_idx","level","delay_ms" ]
示例:seq-after-lp11:拉高gpio_179并延时10ms -> 拉低gpio_179并延时10ms -> 拉高gpio_179并延时10ms。
seq-after-lp11 = <179 1 10 179 0 10 179 1 10>; seq-after-initmd = <179 1 10 179 0 10 179 1 10>; seq-after-deinitcmd = <179 1 10 179 0 10 179 1 10>;
¶
5. 配置正确的屏参¶
配置正确的屏参除了可以参考上述列表中的附件表格,还需要根据屏幕规格书或者协议规范调整对应的参数。
5.1 屏幕规格书¶
大部分屏芯片的规格书可以找到Timing相关部分,如下图所示。如果找不到,可以找厂家询问。
参数 | 描述 |
---|---|
m_wPanelVSyncWidth | Horizontal Sync. Width |
m_wPanelHSyncBackPorch | Horizontal Sync. Back Porch |
m_wPanelVSyncWidth | Vertical Sync. Width |
m_wPanelVBackPorch | Vertical Sync. Back Porch |
m_wPanelHStart | m_wPanelHSyncWidth+m_wPanelHSyncBackPorch |
m_wPanelVStart | m_wPanelVSyncWidth+m_wPanelVBackPorch |
m_wPanelWidth | 240(H) |
m_wPanelHeight | 320(V) |
m_wPanelHTotal | m_wPanelHStart+m_wPanelWidth + hfp |
m_wPanelVTotal | m_wPanelVStart+m_wPanelHeight + vfp |
5.2 协议规范¶
如果是MIPI panel,还需要根据MIPI spec配置MIPI dphy相关参数。
UI的计算方法: H_Total = m_wPanelHTotal V_Total = m_wPanelVTotal BitsPerPixel=24(RGB888)/18(RGB666)/16(RGB565) Bitrate = H_Total * V_Total * FPS * BitsPerPixel / lane number UI = 1/Bitrate
比如表格中HS-PREPARE的要求是大于(40ns + 4 * UI)并且小于(85ns + 6 * UI),那么对应MIPI dphy timing中的参数
(40ns + 4 * UI) / 8 * UI < m_wHsTrail < (85ns + 6 * UI) / 8 * UI
其他MIPI dphy timing中参数计算方法同上。
hpw、hbp、hfp需满足下列公式
data_init_cycle = HsExit + Lpx + HsPrpr + HsZero HFP_WC = HFP * BPP – 12 – data_init_cycle * lane_num HBP_WC = HBP * BPP – 10 HSA_WC = HPW * BPP – 10 HFP_WC/HBP_WC/HSA_WC need > 0
上述参数计算都可参考文件 MIPIDSIParamCalculation。
6. TTL配置¶
6.1 基本概念¶
Parallel RGB Interface有两种,DE mode和HV mode,当使能DE的时候,会使用VSYNC、HSYNC、DOTCLK、DE、D[0-23]这些pin,当使能HV mode的时候,会使用VSYNC、HSYNC、DOTCLK、D[0-23]。现在程序默认使用DE mode,相关参数请按照DE mode配置。
一些panel driver IC需要对其初始化,即对其内部register进行设定,一般会通过SPI或者IIC接口来通信,初始化需要的cmd和data是由屏厂提供,发送时的数据格式需要参考panel datasheet。
Parallel RGB Interface的panel通过HSYNC、VSYNC、DOTCLK、DE作为同步信号,RGB data只在timing的有效区间显示,blanking区间是不可见区域。
6.2 padmux¶
kernel/arch/arm64/boot/dts/sstar/$(boardname)-padmux.dtsi
可如下配置,将#if 0 更改为 #if 1
6.3 屏参配置¶
新屏参设置请参考第2章,屏参内容设置请参考4、5章。
6.4 背光¶
如果需要背光控制,在原理先找出对应Pin脚和芯片对应的pad,通过控制上述pin脚来达到控制背光的效果
7.MIPIDSI配置¶
7.1 MIPIDSI规格¶
- 1-4 data lanes, 1 clock lane
- Level:
- LP: 0~1.2V
- HS: 100~300mV
- HS: 80Mbps ~ 2.5Gbps/lane
- Pixel format:
- 16 bpp (5,6,5 RGB) each pixel using two bytes
- 18 bpp (6,6,6 RGB) packed
- 18 bpp (6, 6, 6 RGB) loosely packed into three bytes
- 24 bpp (8, 8, 8 RGB), each pixel using three bytes
- video mode: BURST_MODE/SYNC_EVENT/SYNC_PULSE
- data chn swap
- data/clk chn P/N swap
- max resolution 2560x1440@60
7.2 padmux¶
kernel/arch/arm64/boot/dts/sstar/$(boardname)-padmux.dtsi
可如下配置,将#if 0 更改为 #if 1
7.3 屏参配置¶
新屏参设置请参考第2章,屏参内容设置请参考4、5章。
7.4 背光¶
背光控制与TTL一致。