一,MIPI了解
MIPI 接口广泛用于摄像头,和显示部分;PHY 属于 MIPI 接口的最底层部分,也就是物理层,直接涉及到物理连线,信号传输等等,要搞清楚 MIPI 的数据传送,那么从 PHY 入手了解,是一个不错的选择;
既然是 PHY,那么肯定在 PHY 层上,还搭建了其他的硬件层次结构,这里暂时只关注 PHY 层,后面会结合更加上层的逻辑来分析;在 PHY 上,只负责定义数据物理层的收发标准;
MIPI 的 PHY 分为了 3 种:
D-PHY
C-PHY
M-PHY
他们之前有什么区别和联系呢?

D-PHY 最先出来,现在用得很多,传输速度快;M-PHY 再出来,速度最快,但是与 D-PHY 不兼容,而且受限于其他器件的发展,如此高的带宽,暂时用不上;最后出来的是 C-PHY,没有时钟信号,靠 pin 脚的编码来区分数据信号;
也就是说,M-PHY 现在基本没有应用场景,D-PHY 和 C-PHY 用得居多;
注意:C-PHY 和 D-PHY 的 C 和 D,不是 Camera 和 Display 的简写,只是 PHY 的命名;D-PHY 可以接 CSI 成为摄像头端的 PHY,也可以用在 DSI,作为 Display 的 PHY;C-PHY 也一样;
C-PHY是电压驱动型,由于是两两相差,信号幅度绝对值分别是0,100,200mv,信号较弱,不利于传输。D-PHY是电流驱动型,单信号幅度一般是200mv,线对差分的幅度在400mv左右,布线要求是等长且成双成对。
C-PHY和D-PHY最直观的差异是DPHY是源同步系统,有专门的同步时钟通道,但是CPHY没有同步时钟,时钟是嵌入到数据中的。显然的,实现嵌入时钟的目的是为了增加带宽,肯定会涉及到编码,物理层的结构必然是完全不同,单从线路上看,CPHY是一个A/B/C三线系统
MIPI DPHY的物理层,咱们大家都很清楚,一对时钟,几对数据,接收端根据时钟边沿采样数据,找到0xB8的同步头,物理层实现就算是齐活了,但MIPI CPHY不同,因为它不传输时钟,那么要接收CPHY的数据,必须先恢复时钟,然后再用恢复的时钟采样数据并寻找同步头,最后还需要进行数据解码恢复出最初的发送的内容(发送端的过程相反)

MIPI D-PHY是差分串口传输,速度快,抗干扰。主流手机模组现在都是用MIPI传输,传输时使用4对差分信号传输图像数据和一对差分时钟信号;
ov13850 MIPI摄像头采用D-PHY,有三个电源:VDDIO(IO电源),AVDD(模拟电源),DVDD(内核数字电源),不同sensor模组的摄像头供电不同
MIPI传输模式
LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz
HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane
传输的最小单元为 1 个字节,采用小端的方式及 LSB first,MSB last。
clk lane:
mipi csi clk 存在两种工作模式,一种是连续时钟模式,传输过程不会切换 LP 状态;另一种是非连续时钟信号模式,每传输完一帧图像数据,帧 blanking 时将会切换为 LP 状态。
从时序图可以看到,clk lane 也会有一个 LP11→LP01→LP00 的时序,从而进入 HS 模式。
如果是连续时钟信号模式,在 sensor 传输的图像数据的过程,帧间隔时,clk lane 不会切换到 LP 状态,即 LP11→LP01→LP00 时序只有一次;
如果是非连续时钟信号模式,每传输完一帧图像数据,都将会从 HS 模式切换回 LP 模式,在传输下一帧图像数据时,再从 LP 模式进入 HS 模式;
如果 camera sensor mipi clk lane 支持非连续时钟模式,建议配置为非连续时钟模式。
data lane:
在数据线上有 3 种可能的操作模式:Escape mode, High-Speed (Burst) mode and Control mode,下面是从停止状态进入相应模式需要的时序:
Escape mode
进入时序:LP11→LP10→LP00→LP01→LP00
退出时序:LP10→LP11
High-Speed mode
进入时序:LP11→LP01→LP00→SoT(0001_1101)
退出时序:EoT→LP11
时序图如下:
Turnaround
进入时序:LP11→LP10→LP00→LP10→LP00
退出时序:LP00→LP10→LP11
D-PHY规范的2.0版的标准

二,关键数据

MIPI接口在系统的实现如上图所示,MIPI DPHY提供了4 Lane的Rx接口,由Sensor提供Clock,并通过四条数据Lane输入图像数据。DPHY与CSI-2 Host Contrller之间通过PPI(PHY-Protocol Interface)相连,该接口包括了控制,数据,时钟等多条信号。CSI-2 Host Contrller通过PPI接口收到数据后进行解析,完成后通过IDI(Image Data Interface)或者IPI(Image Pixel Interface)输出到SoC的其他模块(ISP);同时SoC通过APB Slave总线控制CSI-2 Host Contrller的相关寄存器。
PPI(Phy Protocal Interface)接口:
PPI接口主要分成四部分,分别为
(1) Data: 用于传输HS/LP模式下数据;
(2) Clock: 用于传输数据时钟控制;
(3) Interface Control: 接口控制,如Shutdown信号;
(4) Error Signal: 用于传输错误信号;
(5)几个用于实现Synopsys专用命令控制的TEST信号;

IDI(Image Data Interface )接口:
- 输出CSI-2 规格书中推荐的32位或者64位的图像格式;
- 提供水平或竖直方向的精确视频同步信号;
- 提供CSI-2 Data Type (DT) 和 Virtual Channel (VC)的相关信息;
IPI(Image Pixel Interface)接口:
- 48 位并行输出,提供像素时钟同步信号;
- 提供水平或竖直方向的精确视频同步信号;

MIPI DPHY采用1对源同步的差分时钟和1~4对差分数据链路来进行数据传输,数据传输采用DDR方式,即在时钟的上下边沿都有数据传输;根据Sensor不同的输出链路数量,接收端可以配置1到4条输入链路;数据链路越多,图像数据传输速度也就越快,多通道发送实现如上图所示,接收端与其类似,从不同通道接收的数据加以合并最后形成完整的数据流。
Interface Control:
SHUTDOWNZ:
用于关闭DPHY的信号;
ENABLE_N:
用于使能第N条Lane的信号;
RSTZ:
用于Reset DPHY的信号;
Clock
STOPSTATEDATA_N:
用于指示第N条Lane处于停止状态;
RXBYTECLKHS
High-Speed数据接收时钟(Byte为单位),即用于PPI接口图像数据的同步时钟;
STOPSTATECLK
用于指示时钟通道处于停止状态;
RXULPSCLKNOT
用于指示时钟通道处于ULP(Ultra Low Power)模式;
RXCLKACTIVEHS
用于指示时钟通道处于高速数据接收状态;
Data
RXDATAHS_N[7:0]
高速模式下数据传输线,在RXBYTECLKHS的上升沿被传输;
RXACTIVEHS_N
用于指示当前处于高速数据接收状态;
RXVALIDHS_N
用于指示当前正在接收有效的数据(从Phy层到协议层);
ERRSOTHS_N
用于指示高速数据传输时发生SoT(Start of Transmission)错误,但是信号仍然可以被同步;每个RXBYTECLKHS周期检测一次;
ERRSOTSYNCHS_

本文围绕MIPI接口展开,介绍了其在摄像头和显示部分的应用,分析了D - PHY、C - PHY和M - PHY的特点及差异,阐述了MIPI传输模式和关键数据接口。同时,对MIPI驱动进行研究,包括寄存器写入方法、链路速率计算方法、txrx stream on方法以及ISP控制MIPI的相关配置。
最低0.47元/天 解锁文章





