MIPI协议-DSI

对于现代的智能手机来说,其内部要塞入太多各种不同接口的设备,给手机的设计 和元器件选择带来很大的难度。下图是一个智能手机的例子,我们可以看到其内部存储、显示、摄像、声音等内部接口都是各不相同的。即使以摄像头接口来说,不 同的摄像头模组厂商也可能会使用不同的接口形式,这给手机厂商设计手机和选择器件带来了很大的难度。

MIPI (Mobile Industry Processor Interface) 是2003年由ARM, Nokia, ST ,TI等公司成立的一个联盟,目的是把手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性。 MIPI联盟下面有不同的WorkGroup,分别定义了一系列的手机内部接口标准,比如摄像头接口CSI、显示接口DSI、射频接口DigRF、麦克风 /喇叭接口SLIMbus等。统一接口标准的好处是手机厂商根据需要可以从市面上灵活选择不同的芯片和模组,更改设计和功能时更加快捷方便。下图是按照 MIPI的规划下一代智能手机的内部架构。

1、MIPI优点:

MIPI优点:高速率:最多四个通道、每个通道最大为1GBps;

      低功耗:LowPower:1.2V;

      低成本:PIN脚更少,PCB占用成本更少;

      抗干扰:高速传输信号200mV;

2、DSI规范:

2.1分层结构

DSI分四层,对应D-PHY、DSI、DCS规范、分层结构图如下:

(备注:名词解释)

• DCS (DisplayCommandSet):DCS是一个标准化的命令集,用于命令模式的显示模组。

• PHY 定义了传输媒介,输入/输出电路和和时钟和信号机制。

• Lane Management层:发送和收集数据流到每条lane。

• Low Level Protocol层:定义了如何组帧和解析以及错误检测等。

• Application层:描述高层编码和解析数据流。

2.2 Command和Video模式:

• DSI兼容的外设支持Command或Video操作模式,用哪个模式由外设的构架决定 • Command模式是指采用发送命令和数据到具有显示缓存的控制器。主机通过命令间接的控制外设。Command模式采用双向接口 • Video模式是指从主机传输到外设采用时实象素流。这种模式只能以高速传输。为减少复杂性和节约成本,只采用Video模式的系统可能只有一个单向数据路径;

如图所示:

3、D-PHY的模式:(物理层)

• DSI兼容的外设支持Command或Video操作模式,用哪个模式由外设的构架决定

• Command模式是指采用发送命令和数据到具有显示缓存的控制器。主机通过命令间接的控制外设。Command模式采用双向接口

• Video模式是指从主机传输到外设采用时实象素流。这种模式只能以高速传输。为减少复杂性和节约成本,只采用Video模式的系统可能只有一个单向数据路径

3.1 Lane模块:

PHY由D-PHY(Lane模块)组成;

D-PHY可能包含:

  • 低功耗发送器(LP-TX)   • 低功耗接收器(LP-RX)

  • 高速发送器(HS-TX)      • 高速接收器(HS-RX)

  • 低功耗竞争检测器(LP-CD)

• 三个主要lane类型

  • 单向时钟Lane

      • Master:HS-TX, LP-TX        • Slave:HS-RX, LP-RX

  • 单向数据Lane

      • Master:HS-TX, LP-TX        • Slave:HS-RX, LP-RX

  • 双向数据Lane

      • Master, Slave:HS-TX, LP-TX, HS-RX, LP-RX, LP-CD

3.2 操作模式:

数据Lane的三种操作模式:

 • Escape mode,   High-Speed(Burst) mode,   Control mode

•从控制模式的停止状态开始的可能事件有: 

 • Escape mode request (LP-11→LP-10→LP-00→LP-01→LP-00)

 • High-Speed mode request (LP-11→LP-01→LP-00)

 • Turnaround request (LP-11→LP-10→LP-00→LP-10→LP-00)

 Escape mode是数据Lane在LP状态下的一种特殊操作

    •在这种模式下,可以进入一些额外的功能:LPDT, ULPS, Trigger

    •数据Lane进入Escape mode模式通过LP-11→LP-10→LP-00→LP-01→LP-00

    •一旦进入Escape mode模式,发送端必须发送1个8-bit的命令来响应请求的动作

    • Escape mode 使用Spaced-One-Hot Encoding

超低功耗状态(Ultra-Low Power State)     •这个状态下,lines处于空状态 (LP-00)      • 时钟Lane的超低功耗状态     •时钟Lane通过LP-11→LP-10→LP-00进入ULPS状态     •通过LP-10 → TWAKEUP →LP-11退出这种状态,最小TWAKEUP时间为1ms

• 高速数据传输     •发送高速串行数据的行为称为高速数据传输或触发(burst)

    •全部Lanes门同步开始,结束的时间可能不同。     •时钟应该处于高速模式

• 各模操作式下的传输过程

•进入Escape模式的过程 :LP-11→LP-10→LP-00→LP-01→LP-00→Entry Code → LPD (10MHz)     •退出Escape模式的过程:LP-10→LP-11     •进入高速模式的过程:LP-11→LP-01→LP-00→SoT(00011101) → HSD (80Mbps ~ 1Gbps)       •退出高速模式的过程:EoT→LP-11       •控制模式 - BTA 传输过程:LP-11→LP-10→LP-00→LP-10→LP-00       •控制模式 - BTA 接收过程:LP-00→LP-10→LP-11

  • 状态转换关系图:

4、DSI介绍:(链路层)

4.1、DSI是一种Lane可扩展的接口,1个时钟Lane/1-4个数据Lane;

DSI兼容的外设支持1个或2个基本的操作模式:    

    • Command Mode(类似于MPU接口)       • Video Mode(类似于RGB接口)- 必须用高速模式传输数据,支持3种格式的数据传输

• 传输模式:

     • 高速信号模式(High-Speed signaling mode)

    • 低功耗信号模式(Low-Power signaling mode) - 只使用数据lane 0(时钟是由DP,DN异或而来)。

 • 帧类型       • 短帧:4 bytes (固定)

     短帧结构:          • 帧头部(4个字节)           • 数据标识(DI) 1个字节           • 帧数据- 2个字节 (长度固定为2个字节)           • 错误检测(ECC) 1个字节          • 帧大小           • 长度固定为4个字节

      • 长帧:6~65541 bytes (可变)           • 帧头部(4个字节)           • 数据标识(DI) 1个字节           • 数据计数- 2个字节 (数据填充的个数)           • 错误检测(ECC) 1个字节          •数据填充(0~65535 字节)             • 长度=WC*字节          • 帧尾:校验和(2个字节)          • 帧大小:             • 4 + (0~65535) + 2 = 6 ~ 65541 字节

 • 两个数据Lane高速传输示例:

总结论:

 • 传输模式和操作模式是不同的概念;

 • Video Mode操作模式下必须使用High-Speed的传输模式;

 • Command Mode操作模式并没有规定使用High-Speed或Low Power的传输模式,或者说即使外部LCD模组为Video Mode,但通常在LCD模组初始化时还是使用Command Mode模式来读写寄存器,因为在低速下数据不容易出错并且容易测量。

 • Video Mode当然也可以用High-Speed的方式来发送指令,Command Mode操作模式也可以使用High-Speed,只是没有必要这么做。 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Leetcode名企之路

【java】CountDownLatch运用场景(1)

CountDownLatch也叫闭锁,使得一(多)个主线程必须等待其他线程完成操作后再执行。 使用的方式是:CountDownLatch内部维护一个计数器,主线...

651
来自专栏芋道源码1024

重磅:JDK 11 正式发布!东半球第二全特性解读!

千呼万唤,JDK11于2018-09-25正式发布!你是不是和笔者一样还在使用JDK8呢?甚至有些开发者还在使用JDK7!没关系,让我们先一睹JDK11的风采。

882
来自专栏C/C++基础

C++以智能指针管理内存资源

C++作为一门应用广泛的高级编程语言,却没有像Java、C#等语言拥有垃圾回收(Garbage Collection )机制来自动进行内存管理,这也是C++一直...

693
来自专栏开发 & 算法杂谈

基于Lockset的数据竞争检测方法汇总(二)

前一篇文章提到的是使用Lockset最经典的方法,但是存在很多误报,针对这些误报产生的原因,有很多分析并改进了原始的Lockset方法,今天主要和大家谈的就是有...

1497
来自专栏技术点滴

高性能分布式执行框架——Ray一、简单开始二、系统架构三、核心操作四、安装Ray参考资料

Ray是UC Berkeley RISELab新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更...

892
来自专栏张善友的专栏

实现WebSocket和WAMP协议的开源库WampSharp

Websocket Application Messaging Protocol 协议:https://github.com/wamp-proto/wamp-p...

1977
来自专栏Ryan Miao

java并发编程实践学习(2)--对象的组合

先验条件(Precondition):某些方法包含基于状态的先验条件。例如,不能从空队列中移除一个元素,在删除元素前队列必须处于非空状态。基于状态的先验条件的操...

34014
来自专栏Linyb极客之路

工作流引擎之activiti6流程节点自由跳转实现

在中国式的流程需求中,诸如驳回,退回功能需要进行流程跳转,比如领导审批不通过,退回到申请人。这种中国式的流程需求,可以通过以下三种方式实现

4213
来自专栏源哥的专栏

Disruptor高性能缓存队列入门指导

Disruptor是什么,怎么使用,网上有很多教材,但有些过于复杂,剖析了Disruptor的方方面面,实际上对应普通的开发人员,使用这个工具,只需要指导知道大...

882
来自专栏java达人

ThreadLocal与Spring 事务管理

编写线程安全代码的关键是管理程序中的共享可变状态,除了通过synchronized加锁机制防止多个线程同时访问同一段数据外,还有一种方法就是通过ThreadLo...

19910

扫码关注云+社区