最近几天与"MIPI" 这个词打交道比较多: 因为我使用了 MIPI CSI 和 MIPI DSI 这两个协议(不一定准确,初步理解,还望指正):
MIPI CSI-2:
我接触他主要是我们飞思卡尔imx6 的板子上ov5640是使用的使用的是他,ov5640通过mipi csi-2传输数据, 而板子上有MIPI csi-2 的控制器。具体的底层信号没有分析。但是可以确定的是 MIPI CSI-2的数据传输到了 IPU的CSI1的接口来处理。 那有必要时分析理顺 MIPI CSI的 驱动与 IPU CSI的驱动对接,再与V4l2 设备驱动的对接直至上层调用的实现。
MIPI DSI:
使用到他是因为项目的的 LCD 屏幕的接口是使用MIPI ,并且是两线的Lane (从数据手册来看,飞思卡尔只 支持两线数据的Lane, 这样导致从产品要加额外的芯片 ,增加成本不说,增大功耗也要命 )。
对于 MIPI DSI 体系的分析与总结:
整个MIPI DSI 分为四层:
1, PHY层: 主要是实现电气信号,和电路(我的理解);定义了传输媒介,输入输出电路,时钟和信号机制;
2, Lane Managerment:管理 传输的线(时钟啊,Lane 0-1 ),是不是由几个 D-PHY组成,主管数据的收发(by me);发送和收集数据流到每条Lane;
3, Low Level Protocol : 这里定义了帧的格式,(操作模式和传输模式的区别是不是 2.3两层的区别?);
4, Application : 现象命令的定义,LCD的初始化阶段和数据传输阶段的划分 什么的(by me);描述搞成编程和解析数据流;
关于操作模式:
操作模式应该只有两种: command mode 和 video mode。项目使用什么模式,有LCD的构架决定。
command mode: 采用发送命令和数据到具有显示缓存的控制器。 主机通过命令间接地控制外设。 采用双向接口。
video mode: 主机传输到外设采用实时像素流。 这种模式只能以高速传输。 为了减少复杂性和节约成本,只采用video模式的系统可能只有一个单向数据路径。支持3种格式的数据传输 :Non-Burst 同步脉冲模式 Non-Burst 同步事件模式 , Burst 模式。
video mode : 下信号传输模式支持: 高速信号模式 和低功耗信号模式(这是不是与实时像素流,高速传输矛盾啊)。
关于帧格式:
短帧: 只有4byte : 1+2+1: 数据标示(DI)+帧数据+错误检测
长帧: 长度可以在(6-65541): 4+(0-65535)+2: 帧头部(4个字节)+数据填充+帧尾
PHY层的几点注意事项:
1. 信号的传输模式 应该分为 低功耗(LP)信号模式和高速(HS)信号传输模式。
2. D-PHY规定数据传输的最小单位是 一个字节; 发送时 地位在前 高位在后。
数据线的三种操作模式:Escape mode , HIgh-speed mode , control mode;
escape mode: 是数据Lane 在低功耗 状态下的一种特殊操作: 在这种模式下可以进入额外的功能如ULPS;
个人理解,有不对的地方,请指出,十分感谢!