MIPI-3
上一篇文章讲了以下D_PHY层,这只是最底层的,针对于显示,上层由分出了四种,由专门的工作组进行定义,显示器方面叫做display wrok group,主要分为
DSC(display command set) 显示命令接口
DBI(display bus interface) 显示总线接口 ,CPU端的总线设计
DPI(display pixel interface) 显示像素接口,对于像素数据的处理
DSI(display serial interface) 显示串行接口,高速速度传输接口设计
DSC
这是一个纯协议层的设计,通过相关的命令设计来便捷的控制显示的一些快捷功能,部分command列表如下
这些命令通过DSI的再次封装之后发送就能控制显示器的相关功能
DBI
显示总线的设计,这套协议类似于定义电气连接,定义了视频流,音频流,控制流等数据以怎样的方式在CPU端封装,包含ABC三种方式,分别如下
数据通过读写一根线,使能一根线的传输方式,将音频视频流数据传输到主机端的mipi处理单元,典型的68显示接口
通过读写分离的方式来传输像素数据,80显示接口
通过串行总线方式传输图像数据
而数据来到之后,CPU以一个怎样的架构来处理视频数据就形成了DPI协议
DPI
DPI定义了CPU总线应该以怎样的架构来处理图像数据,主要分为四种类型,
可以看到,图像处理架构中,时序控制,缓存,寄存器,非实时内存,电源等组件形成type1模式,视频流由内部产生,外部只有控制端口.
2与1相比而言,数据缓存变成了局部缓存,占用的内存空间变小,相应的处理器压力会变大,同时,视频流由外部输入,此时,这就能对接上DBI的协议了
第三种模式,为了传输的实时性,不在用内存帧缓存,直接将输入数据转码成MIPI数据,同时,视频流依旧外部产生
不仅取消了帧缓存,而且取消了非实时内存,没有control interface,换成了control line,也没有
了控制寄存器
这四种架构在功能上各有不同,官方给了一个表格,可以根据自己的实际应用选择合适的架构
DSI
DSI主要的作用就是将CPU这一端的数据发送到设备端,包含链路管理,协议封装,数据装箱等,这也是MIPI最繁杂的部分
首先,DSI传输数据以包的形式发送,包括两种类型的数据包
- 短数据包,短数据包只有包头
四字节固定长度,一个字节的数据标示符+2字节数据+1字节ECC校验码
标示符包含虚拟数据通道[7:6]以及数据类型(5位),
数据:2字节固定
Ecc校验码:可以把两个位的错误纠正过来,例子如下
- 长数据包
6-65541字节长度(可变)
包含四字节包头:1字节数据标示符与短数据包一样,2字节数据长度+1字节ECC校验码
包含0-65535个有效数据(包头数据长度65535,十六位最大65535)
包含两字节数据包页脚:不能计算为0x0000,数据有效长度为0,页脚为0xffff
在传送过程中,链路层需要插入一些key来作为数据传送的标志性事件
同时,在数据包头有六个bit指示数据类型,部分如下
发送数据包中的部分数据类型定义
回应数据包中的数据类型定义
另外,还有数据包的响应,错误报告等,各种组合起来就形成了比较复杂的协议结构,想要详细了解请查看DSI协议手册
传送数据中像素的编码
在主机发送数据包中规定了数据包中的图像数据的像素格式,通过像素格式可以解析传送来的数据
另外,对于像素行列的切换也有响应的数据类型如下
通过这些信息,MIPI从设备可以解码出主机发送的数据转换为原始的RGB信号来驱动屏幕
像素格式有很多种,以0x0E格式举例
图像数据在数据包中以如下方式存放,LSB send frist
(注意这只是DSI格式,在经过D_PHY之后,这些数据会分散到几个lane中,最后在设备端汇总)
说到这里,基本上说完了MIPI的DISPLAY协议架构,比较概略,详细都是去看文档,一般而言,MIPI协议都有芯片厂商设计好了,但是对于芯片而言,调试寄存器的时候知道这些知识,百利无一害
目前的很多屏幕都是使用的mipi技术,apple,mi,meizu,nexus等,一般而言,CPU中也会存在display的接口,不想用高档CPU又想用高档屏幕的人,可以选择一些集成芯片来实现RGB或者YUV转MIPI,推荐芯片SSD2825 SSD2828,这家公司的系列产品,不同编号支持的lane数量不同,下一张聊聊怎样使用SSD2828驱动屏幕
MIPI-3的更多相关文章
- mipi和dsi
转自: http://blog.csdn.net/longxiaowu/article/details/24410021 一.MIPI MIPI(移动行业处理器接口)是Mobile Industry ...
- 理解mipi协议
完成mipi信号通道分配后,需要生成与物理层对接的时序.同步信号: MIPI规定,传输过程中,包内是200mV.包间以及包启动和包结束时是1.2V,两种不同的电压摆幅,需要两组不同的LVDS驱动电路在 ...
- mipi协议中文详解
一.MIPI MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写.MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放 ...
- I.MX6 Linux mipi配置数据合成
/*************************************************************************** * I.MX6 Linux mipi配置数据合 ...
- MIPI DSI 和 D-PHY 初始化序列
MIPI DSI 和 D-PHY 初始化序列 -- 深圳 南山平山村 曾剑锋 参考文档: i.MX 6Dual/6Quad Multimedia Applications Processor Refe ...
- 晶振波形、MIPI波形
/********************************************************************************** * 晶振波形.MIPI波形 * ...
- android MIPI屏 导航栏丢失
/**************************************************************************** * android MIPI屏 导航栏丢失 ...
- MIPI D-PHY 简写收集
Acronyms APPI Abstracted PHY-Protocol InterfaceBER Bit Error Rate 417 CILControl ...
- mipi 调试经验
转载自http://blog.csdn.net/g_salamander/article/details/9163455 以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议 ...
- MIPI总结和MIPI规格说明书
1. MIPI 因为是差分信号,所以时钟和数据lane 都是一对一对的,对应的即是: 1land = lane(N) + lane(P). 分享mipi 规格说明书文档如下: http://yun.b ...
随机推荐
- c语言判断打开文件是否为空的方法
void writeReslut2(char* caseName,double averageTime,double max, double min,int loops,int size){ fpos ...
- Python基础学习6---存储器
Python提供一个标准的模块,称为 pickle .使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来.这被称为 持久地 储存对象.还有另一个模块称为 cPickle ...
- 4D(DRG、DLG、DOM、DEM)数据 概念
抱歉原文链接未知 Technorati 标签: DRG,DLG,DOM,DEM 以下有不同的说法,但是意思都很相近. 一. DOM (数字正射影像图):利用数字高程模型对扫描处理的数字化的航空相片.遥 ...
- PHP递归算法的一个实例 帮助理解
递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行,可能这样给大家讲 ...
- SVM阅读资料
1,Andrew Ng机器学习公开课笔记 -- 支持向量机 2,http://blog.pluskid.org/?page_id=683 3,支持向量机SVM(一) 4,机器学习中的算法(2)-支持向 ...
- nginx 504 Gateway Time-out 解决办法
今天用PHP执行一个非常耗时的文件[ps:自己有用,大概3分钟] 但是执行到一分钟后显示 nginx 504 Gateway Time-out 于是修改php-ini.php中的max_executi ...
- jquery选中checkbox多选项并添加到文本框中
<script> function check(){ var dd = ""; if($("input[type='checkbox'][name='moke ...
- (转)收集:Hibernate中常见问题 No row with the given identifier exists问题的原因及解决
Hibernate中No row with the given identifier exists问题的原因及解决 产生此问题的原因: 有两张表,table1和table2.产生此问题的原因就是tab ...
- zf-关于分页必写的代码
1 存储过程 ALTER PROCEDURE [dbo].[getStatForXXGKWeb] ), ), ), @page int, -- 必写的 @pageRows int,-- 必写的 @al ...
- zf-关于<ww:iterator /> 标签中的<td /> 标签添加序号问题
一开始代码是这样的 那个<ww:if> 标签 是我添加的,可是添加之后出问题了. 因为我加了一个判断语句,使得不需要的信息没显示出来,导致#li.count 这个显示下标的方法行不通了 之 ...