DSI屏幕参数配置

DSI屏幕参数配置

Command模式参数配置¶

Command模式下DSI相关可配置的参数主要有:

freq

DSI时钟频率

color_mode

色彩格式,可以配置RGB888或者RGB565

AutomaticClockLaneControl

Clock自动控制,使能后,clock lane在空闲时会进入低功耗状态,这样可以降低接口功耗。

NumberOfLanes

DSI Data Lane数量,最高可以支持2 Data Lane

TearingEffectSource

配置DSI的TE来源

TEAcknowledgeRequest

配置Enable使能TE功能

vsyn_delay_us

TE功能触发送数的延迟,该功能只有在TE使能时才有效,配置表示TE信号来之后,到正式发送屏幕数据之间的延迟

如下的源码中,涵盖了DSI Command模式的所有配置,上述提到的配置是需要根据屏幕要求进行更改的,其他配置,也有对应描述,但是不建议进行更改。

static LCDC_InitTypeDef lcdc_int_cfg_dsi =

{

.lcd_itf = LCDC_INTF_DSI, /* 选择DSI接口 */

.freq = DSI_FREQ_480Mbps, /* 选择DSI接口频率,这里选择480M */

.color_mode = LCDC_PIXEL_FORMAT_RGB888, /* DBI output color format, should match with .cfg.dsi.CmdCfg.ColorCoding */

.cfg = {

.dsi = {

.Init = {

/* clock lane时钟自动控制,enable后,clock lane会自动进入lp模式来节省功耗,默认关闭,如果需要控制接口功耗,再打开。*/

.AutomaticClockLaneControl = DSI_AUTO_CLK_LANE_CTRL_ENABLE,

.NumberOfLanes = DSI_ONE_DATA_LANE,/* DSI Data Lane数量 */

/*

lp模式下的时钟分频比,不用做更改。

escape clk = dsi_phy_clk / 2(DDR) / 8 / TXEscapeCkdiv

*/

.TXEscapeCkdiv = 0x4,

},

.CmdCfg = {

.VirtualChannelID = 0,/* channel ID, 不用做更改 */

.CommandSize = 0xFFFF, /* 这个值目前没有作用,忽略 */

/* 配置TE源来自外部还是内部 */

.TearingEffectSource = DSI_TE_EXTERNAL, /* DSI link TE */

.TEAcknowledgeRequest = DSI_TE_ACKNOWLEDGE_ENABLE, /* Enable TE */

/* DSI input & output color format,该配置后面会被移除,与之前配置重复 */

.ColorCoding = DSI_RGB888,//DSI input & output color format

},

/* 这部分寄存器都是dsi物理层相关配置,不建议用户进行更改 */

.PhyTimings = {

.ClockLaneHS2LPTime = 35,/* clock lane从hs切换到lp模式需要的时钟周期 */

.ClockLaneLP2HSTime = 35, /* clock lane从lp切换到hs模式需要的时钟周期 */

.DataLaneHS2LPTime = 35,/* data lane从hs切换到lp模式需要的时钟周期 */

.DataLaneLP2HSTime = 35, /* data lane从lp切换到hs模式需要的时钟周期 */

.DataLaneMaxReadTime = 0,/* 单次读取所需要的最大时钟周期数,因为现有使用状况下,读取不会发生在发数的阶段,所以该值没有被使用。 */

.StopWaitTime = 0, /* stop模式下,发送hs模式切换请求的最小等待时间 */

},

/* HostTimeouts 这一部分配置主要设计timeout报错,一般用来检测异常情况,方便以后debug,用户不需要修改 */

.HostTimeouts = {

.TimeoutCkdiv = 1,/* timeout的时钟分频比,timeout debug目前没有打开,没有生效 */

.HighSpeedTransmissionTimeout = 0,

.LowPowerReceptionTimeout = 0,

.HighSpeedReadTimeout = 0,

.LowPowerReadTimeout = 0,

.HighSpeedWriteTimeout = 0,

//.HighSpeedWritePrespMode = DSI_HS_PM_DISABLE,

.LowPowerWriteTimeout = 0,

.BTATimeout = 0,

},

/* LPCmd 这里的寄存器定义了command模式下,各种类型的指令对应的发送模式,LP模式发送速度慢,但是可以被逻分抓到,高速模式发送速度快,但常用仪器无法检测。这里建议对于generic接口的command,设置为低速即可,对于dcs的指令,除了longwrite,其他均可以设置为低速,这样便于通过逻分查看波形。这部分允许用户更改,但不太建议改动。*/

.LPCmd = {

.LPGenShortWriteNoP = DSI_LP_GSW0P_ENABLE,/* generic接口shortwrite指令无参数发送模式,enable为低速,disable为高速 */

.LPGenShortWriteOneP = DSI_LP_GSW1P_ENABLE,/* generic接口shortwrite指令单参数发送模式,enable为低速,disable为高速 */

.LPGenShortWriteTwoP = DSI_LP_GSW2P_ENABLE,/* generic接口shortwrite指令双参数发送模式,enable为低速,disable为高速 */

.LPGenShortReadNoP = DSI_LP_GSR0P_ENABLE,/* generic接口shortread指令无参数发送模式,enable为低速,disable为高速 */

.LPGenShortReadOneP = DSI_LP_GSR1P_ENABLE,/* generic接口shortread指令单参数发送模式,enable为低速,disable为高速 */

.LPGenShortReadTwoP = DSI_LP_GSR2P_ENABLE,/* generic接口shortread指令双参数发送模式,enable为低速,disable为高速 */

.LPGenLongWrite = DSI_LP_GLW_ENABLE, /* generic接口longwrite指令发送模式,enable为低速,disable为高速 */

.LPDcsShortWriteNoP = DSI_LP_DSW0P_ENABLE,/* dcs接口shortwrite指令无参数发送模式,enable为低速,disable为高速 */

.LPDcsShortWriteOneP = DSI_LP_DSW1P_ENABLE, /* dcs接口shortwrite指令单参数发送模式,enable为低速,disable为高速 */

.LPDcsShortReadNoP = DSI_LP_DSR0P_ENABLE, /* ddcs接口shortread指令无参数发送模式,enable为低速,disable为高速 */

.LPDcsLongWrite = DSI_LP_DLW_DISABLE, /* dcs接口longwrite指令单参数发送模式,enable为低速,disable为高速 */

.LPMaxReadPacket = DSI_LP_MRDP_ENABLE, /* 设置最大读取包尺寸指令模式发送模式,enable为低速,disable为高速*/

.AcknowledgeRequest = DSI_ACKNOWLEDGE_DISABLE, //disable LCD error reports 使能后允许屏幕端发送应答包,主要用于debug,一般场景下disable即可。

},

.vsyn_delay_us = 0,/* 该配置在使能TEAcknowledgeRequest后,才有意义,用于配置TE信号高电平延时多少us后,再给屏送数 */

},

},

};

相关推荐

揭秘世界杯历史的黑哨丑闻:那些年令人瞠目结舌的判罚争议
如何利用闲鱼引流
365服务热线

如何利用闲鱼引流

⏱️ 09-12 ⭐ 7650
周瑜崛起,重塑王者荣耀中路格局
365服务热线

周瑜崛起,重塑王者荣耀中路格局

⏱️ 09-25 ⭐ 9912