MIPI及DSI协约介绍
- 格式:pdf
- 大小:1.92 MB
- 文档页数:49
MIPI及DSI协议介绍
郑明桑
sam0030@
MIPI是什么v M obile I ndustry P rocessor I nterface 移动通信行业处理器接口
v MIPI包括:
DCS 显示命令接口
DBI 显示总线接口
DPI 显示像素接口
DSI 显示串行接口
CSI 显示摄像接口
MIPI优点
v高速率
最多四个通道,每个通道最大传输1 Gbps
v低功耗
LowPower 1.2 V HighSpeed 200mV
v低成本:
PIN脚更少,PCB占用空间更少
v抗干扰(EMI,ESD)
高速传输信号200mV,差分信号
与其他差分信号对比
v TMDS:最小化差分信号传输
v LVDS:低压差分信号
D-PHY层定义
D-PHY介绍
v通道(lane)
v1个单向clock通道
v1到4个data通道
v传输模式
v Low Power模式:用于控制,最大10Mbps
此时Data0的D+,D-是两个独立的信号线
v High Speed模式:数据传输,80Mbps—1Gbps
v数据格式
LSB first,MSB last
v传输方向
只有Data0且在LP模式下,才能反向传输,其他都是单向的
Lane State&Line Level
v Lane State:
v LP Mode:LP-00, LP-01, LP-10, LP-11(DpDn)
v HS Mode:HS-0,HS-1(差分信号)
Lane Module
v LP-CD: LowPower ContentionDetector(LP争用探测器) v LP-RX/TX HS-RX/TX
Operating Mode
v Operating Mode:
v每个模式都必须从Stop State(LP-11)开始
v Escape mode request (LP-11→LP-10→LP-00→LP-01→LP-00),Exit(LP-10→LP-11)
v High-Speed mode request (LP-11→LP-01→LP-00),Exit(EOT →LP-11)
v Control Mode (Turnaround BTA)request (LP-11→LP-10→LP-00→LP-10→LP-
00),Exit(LP-00→LP-10→LP-11)
v Mode切换图
Escape Mode
v Escape模式是在LP状态下的特殊模式,只有进入该模式,下面这些功能才能实现:LPDT:Low Power Data Transmission
ULPS:Ultra-Low Power State
Trigger(比如Remote trigger, Ack trigger and TE trigger)
v一旦进入Escape模式,后面必须跟8-bit的entry命令才能实现对应Action
Escape Mode
v以LPDT为例,发送LCD sleep out 0x11命令,注意LSB first
Escape Mode
v ULPS:这种状态下,line处于Space状态,退出这种状态需要Mark-1状态唤醒
High-Speed Mode
v HS模式所有通道同时开始,但每个通道可能不同时结束,clock必须也在hs模式,并且是双边沿触发,也就是data 速率是clock的两倍
v完整的hs序列如下图,退出EOT+LP11
High-Speed Mode v下面是HS下发送0x29 display on时序图
BTA Mode
v It is different between DSI and other interface, other IF use Read signal to let slave send read response.But DSI integrate all control signal in DSI Data/Clock lane.
v So DSI need a procedure enables information transfer in the opposite direction of the current direction.
v用于读取外色参数(如ID)或确认发送包外设是否接收正确
BTA Mode
v Acknowledge is a Trigger Message (00100001) sent when all preceding transmissions since the last peripheral to host
communication is received by the peripheral with no errors.
DSI接口
v DSI(Display Serial Interface)
v DSI 收发接口,如下图:
DSI传输模式
v Command Mode
类似MPU接口,需要IC 内如GRAM。
通过ACK和error 向Host报告(Data Lane0)
v Video Mode
类似RGB接口,没用GRAM,需要不停往panel刷数据。
(相对于command模式,ESD差一点,曾经有项目出现过)v传输模式
HS和LP两种,对于returning data(比如cmd mode),必须使用Data Lane0并且在LP Mode
短数据包结构
v两种数据包类型:短数据包和长数据包
v虚拟数据通道两个bit最多表示4个
Virtual Channel
v Multiple independent data streams for up to four peripherals are supported by this specification. The data stream for each peripheral is a Virtual Channel
v一些高分辨率屏内部可能含有两个或更多独立的Driver IC,这个时候需要用到多VC(实际中,还没碰到需要多个VC的display)
Virtual Channel
v手头有项目用到800x1280 LCD,内部是有两个Driver IC,但跟屏厂工程师确认过,两个IC 并不是完全独立的,中间有同步信号连接,也就是只需要1个VC;
v工作方式:扫描方向,Master/Slave等设置好之后,IC根据内部控制信号和同步信号将前400 pixel数据送往屏半边,后400 pixel数据送往另半边,下图是屏厂提供:
长数据包结构
v SoT:开始传输EoT:结束传输LPS:LP模式
正向(Forward Direction)数据包类型
正向数据包类型
v DCS 读写命令,可带参数,可用于LCD下初始化参数命令;
v Generic读写命令,是协议规范外的命令,通常是一些IC定制的(比如IPhone4 LCD),只要确保主机和外设同意这些数据的格式和解释即可。
通常和DCS通用:比如0x05和0x13通用,0x15和0x23通用;
v0x22/0x32:切换开关视频显示(外设)模块。
有些IC休眠时需要关闭;v0x37:设置最大返回包大小,比如在读ID前发送;
v0x01&0x11&0x21&0x31:用于Sync Event模式下精确表示同步事件的开始和结束。
为了尽可能精确体现一个同步事件,开始标识位必须放第一位,结束标识位放最后一位;
v0x0E& 0x1E & 0x2E & 0x3E&0x39:各种RGB类型数据流传送控制,其中0x39用于command mode,接下来详细介绍。
反向数据包类型v外设向Host反馈有四个基本类型
v数据封装包类型
Error Report
v累计多个transaction error,直到host BTA时反馈v一个error report含2个byte
v BIT0-BIT7 D-PHY errors
v BIT8,BIT9 ECC errors
v其他BIT DSI errors
v RGB565和RGB888分别占用2和3个byte,这个无异议v重点分析RGB666,有18 bit packed和loosely:
18 bit Packed/pixel
v Command Mode下Data Type都是0x39 v RGB565和RGB888类似
18 bit loosely/pixel
Write Picture—Video Mode
v Video Mode,RGB565,RGB666 packed,RGB666 loosely,RGB888对应的Data Type分别是
0x0E,0x1E,0x2E,0x3E,以RGB888为例:
数据传输例程v两个数据通道
数据传输例程v三个数据通道
发送方数据处理
接收方数据处理
Video Mode v Video Mode有三个子模式:
(1)Non-Burst Mode with Sync Pulses
(2) Non-Burst Mode with Sync Events
(3)Burst Mode
Non-Burst Mode with Sync Pulses
v Accurately reconstruct original video timing, including sync pulse widths.
v The goal is to accurately convey DPI-type timing over the DSI serial Link.
Non-Burst Mode with Sync Events v和Sync Pulses类似,但只同步每个脉冲的起始位
Burst Mode
v In this mode, blocks of pixel data can be transferred in a shorter time using a time-compressed burst format.
v低功耗,高效率
BLLP
v BLLP:Blanking or Low Power period
v通常有以下几个情况:
1. Host and panel remain in Idle Mode. Lanes are in LP-11 state.
2. Host transmits one or more non-video packets to the peripheral using Escape
mode (low-power Tx).
3. Host transmits one or more non-video packets to the peripheral using HS Mode,
for example transmit blanking packets or DCS commands.
4. If the previous processor-to-peripheral transmission ended with BTA, panel
transmits one or more packets to the host processor using Escape Mode.
5. Host Transmit one or more packets to a different peripheral using a different
virtual Channel ID (VC).
Clock For Video Mode
v Continuous Clock Mode
Clock在传输数据包时持续工作在hs模式
MIPI协议规定所有DSI收发器必须支持
v Non-continuous Clock Mode
可选,一般在Vertical blanking和Horizontal blanking插入LPS。
碰过不支持这个模式的LCD,比如Iphone4和Ipad mini LCD,还有一些MIPI转换芯片等
Command Mode
v Display拥有自己的timing控制器和GRAM,为了防止Tearing Effect,必须主动通知Host
v MIPI DSI定义一个标准的TE trigger消息,Host一旦收到这个消息,自动发送像素数据
Command Mode v完整的波形
帧率测量
v帧率测量:测量两个Vertical Blanking之间的时间间隔
行间距测量
v Line Duration(TL):可以测量Vertical Blanking或Active区域
LP-示波器分析
v LP传输以Escape Entry开始,重点寻找Escape Mode(LP-11-10-01-00)
v下面是完整的LPDT流程
HS-示波器分析
v HS Mode对示波器要求比较高,除了高精度,还需要4个通道测量,Dp,Dn,Clock和差分输出信号(Dp和Dn相减)
HS-示波器分析
v DDR(Dual Data Rate):注意clock是双边采样的v下图中绿色表示(Dp –Dn)信号
高通DSI参数
v Continuous Clock设置
//在LCD初始化之前
uint32 data = MIPI_INP(MIPI_DSI_BASE + 0x0A8);
mipi_set_tx_power_mode(1); //设置TX LP
data |= BIT(28);
MIPI_OUTP(MIPI_DSI_BASE + 0x0A8,data); //修改相应的位,设置CLOCK HS
//也可以通过下面参数设置,寄存器设置一样
pinfo.mipi.force_clk_lane_hs=1;
v BLLP设置
/* 可参考高通Datasheet DSI1_VIDEO_MODE_CTRL 寄存器说明*/
pinfo.mipi.hfp_power_stop= TRUE; //set power mode during HFP
pinfo.mipi.hbp_power_stop= FALSE; //set power mode during HBP
pinfo.mipi.hsa_power_stop= TRUE; //set power mode during HSA
pinfo.mipi.pulse_mode_hsa_he= TRUE; // send HSA and HE following VS/VE packet pinfo.mipi.eof_bllp_power_stop= TRUE; //set power mode during bllp of last line of a frame pinfo.mipi.bllp_power_stop= TRUE; //set power mode during BLLP
v其他设置
pinfo.mipi.t_clk_post= 0x20; //data由hs->lp,hs clk需要继续发送byteclk周期个数
pinfo.mipi.t_clk_pre= 0x2F; //data由lp->hs,hs clock需要hold住的byteclk周期个数
读取ID
v参考函数
如有以下读取发生异常,可考虑设置BTA delay 或者
下Read命令之前设置Max Packet Size (0x37)
static char manufacture_id[2] = {0xc5,0x00}; // IC 读取ID寄存器
static struct dsi_cmd_desc nt35516_manufacture_id_cmd = {
DTYPE_DCS_READ/*DCS命令,0x06*/, 1, 0, 1, 5, sizeof(manufacture_id), manufacture_id};
static uint32 mipi_nt35516_manufacture_id(struct msm_fb_data_type*mfd)
{
struct dsi_buf*rp, *tp;
struct dsi_cmd_desc*cmd;
uint32 *lp;
uint32 data;
//set password for LCD,if necessary!
tp= &nt35516_tx_buf;
rp= &nt35516_rx_buf;
cmd= &nt35516_manufacture_id_cmd;
mutex_lock(&mfd->dma->ov_mutex);
mipi_dsi_cmds_rx(mfd, tp, rp, cmd, 4);
mutex_unlock(&mfd->dma->ov_mutex);
lp= (uint32 *)rp->data; // 接下来对lp进行操作,可得到ID
}
请多提宝贵意见!谢谢!。