MIPI LCD屏厂初始化时序转换为 qcom,mdss-dsi-on-command

一.前言

最近在sdm450、msm8953 Android O 上,调试jd9365da(800x1280)和gc9305v(480x960)两块mipi屏,一个作为主屏,一个作为副屏。厂家各提供了屏的初始化代码,初始化代码需要转换成dcs格式,合到到lk和kernel里。

二.厂商提供格式

总结了一下厂商提供的代码格式,分为以下两种:

1. 厂商提供格式一

DCS_Short_Write_1P(0xE0,0x00);//0 
理解:地址(0xE0)+数据(0x00) 向0xE0写0x00.
DCS_Short_Write_1P(0xE1,0x93);//1
DCS_Short_Write_1P(0xE2,0x65);//2

2.厂商提供格式二

{0xF0, 5,{0x55, 0xAA, 0x52, 0x08, 0x00}},
理解:{地址(0xf0),data个数(5),data(0x55 0xAA 0x52 0x08 0x00)};
{0xF6, 2,{0x5A, 0x87}},
{0xC1, 1,{0x3F}},

三.需要转换格式

以上两种格式,是厂商普遍点屏使用的,怎么转换为以下两种格式?

3.需要的格式一(lk)

static char jd9365da_800p_video_on_cmd0[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xE0, 0x00, 0xFF, 0xFF,
};//DCS_Short_Write_1P(0xE0,0x00); 

理解://长类型代码
//Pack header 0x02, 0x00, 0x39, 0xC0, (2长度+1类型+1标记=4HDR)
//Data 0x35, 0x00, 0xFF, 0xFF,(1命令addr,写入的data)

1.0x02+0x00 之和是dsi 数值写入的个数,第二个一般为0x00 
2.0x39 和 0xc0 ,是data type(23、15、05对应的是80)(29、39对应c0)
3.0x35 0x00 是要写的数值(0X02+0X00),理解:地址(0x35)+数据(0x00),一行不满4个,缺省填写0xff

static char jd9365da_800p_video_on_cmd1[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xE1, 0x93, 0xFF, 0xFF,
};//DCS_Short_Write_1P(0xE1,0x93);

static char jd9365da_800p_video_on_cmd2[] = {
	0x02, 0x00, 0x39, 0xC0,
	0xE2, 0x65, 0xFF, 0xFF,
};//DCS_Short_Write_1P(0xE2,0x65);

static char jd9365da_800p_video_on_cmd216[] = {
	0x11, 0xFF, 0x05, 0x80	
};//短类型代码
Data (1命令addr 0x11,1写入的data 0xff,1类型 0x05, 1标记0x80)



4.需要的格式二(kernel)

        39 01 00 00 00 00 02 E0 00 
        39 01 00 00 00 00 02 E1 93 
        39 01 00 00 00 00 02 E2 65
	    05 01 00 00 78 00 02 11 00

理解:
39 01 00 00 00 00 02 E0 00 
解析:
39                                     long write 
   01 00 00                            结构体其他位 
            00                         ms
               00 02                   write-len “E0和00,两个” 
                     E0 00             data“地址(E0)+数据(00)”

说明:

1. 以下清楚的描述了qcom,mdss-dsi-on-command 意思,结合dsi_ctrl_hdr结构体,可以理解以上代码。

2.同时dcs type :39、15、05、29 意思如下:

 

三.转换实例

1. 格式一实例

##  DCS_Short_Write_1P(0xE0,0x00);//0


##(lk)----->
            static char jd9365da_800p_video_on_cmd0[] = {
	            0x02, 0x00, 0x39, 0xC0,
	            0xE0, 0x00, 0xFF, 0xFF,
            };//DCS_Short_Write_1P(0xE0,0x00);

            static struct mipi_dsi_cmd jd9365da_800p_video_on_command[] = {
	        {0x8, jd9365da_800p_video_on_cmd0, 0x00},


##(kernel)----->
             39 01 00 00 00 00 02 E0 00 

2.格式二实例

## {0xF0, 5,{0x55, 0xAA, 0x52, 0x08, 0x00}},


##(lk)---------------》

                    static char gc9503v_480p_video_on_cmd0[] = {
	                    0x06, 0x00, 0x39, 0xC0,
	                    0xF0, 0x55, 0xAA, 0x52,
                        0x08, 0x00, 0xFF, 0XFF,
                    };// {0xF0, 5,{0x55, 0xAA, 0x52, 0x08, 0x00}},

                    static struct mipi_dsi_cmd gc9503v_480p_video_on_command[] = {
	                {0xC, gc9503v_480p_video_on_cmd0, 0x00},

##(kernel)-----------》
                       39 01 00 00 00 00 06 F0 55 AA 52 08 00

                13 0A 00 01 28      关屏
                13 78 00 01 10      睡眠
   
                13 78 00 01 11     唤醒
                13 64 00 01 29    显示

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于MIPI-DSI协议的LCD驱动接口设计是一种在嵌入式系统中使用的显示技术。MIPI-DSI(Mobile Industry Processor Interface - Display Serial Interface)是一种面向移动设备的高速串行接口协议,用于处理显示和触摸数据传输。 在基于MIPI-DSI协议的LCD驱动接口设计中,LCD控制器与主处理器之间通过MIPI-DSI接口进行通信。该接口使用差分信号传输,其中包括一个差分对作为时钟线和多个差分对作为数据线。通过这种方式,可以实现高速数据传输和抗干扰能力。 接口设计中的关键组件包括显示控制器、MIPI D-PHY、MIPI DSI TX、以及液晶显示。显示控制器负责生成图形数据和控制信号,将它们转换MIPI-DSI协议所需的格式。MIPI D-PHY负责处理差分信号的物理层转换,以及时钟和数据的发送与接收。MIPI DSI TX是将数据流编码为MIPI-DSI协议的转换器。液晶显示是接收和解码来自DSI TX的协议,并将数据转换为相应的像素信息并显示出来。 这种接口设计的实现具有以下优点: 1. 高速传输:基于差分信号的传输,使得数据的传输速度更快。 2. 灵活性:可以通过配置和协议选项支持不同分辨率和颜色位深的LCD幕。 3. 低功耗:接口设计能够提供较低的功耗和电压等级。 4. 抗干扰能力:MIPI-DSI接口提供了抗干扰的特性,能够有效减少干扰对显示效果的影响。 总结而言,基于MIPI-DSI协议的LCD驱动接口设计使得显示系统在嵌入式领域中有更好的性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值