mipi-csi硬件篇

# 1 mipi-csi硬件

1.1 mipi-csi概念#

DSI (Display serial interface)定义了一个位于处理器和显示模组之间的高速串行接口,对应MIPI-TX.
CSI(Camera Serial Interface)定义了一个位于处理器和摄像模组之间的高速串行接口,也就是接下来要讲的MIPI-RX。

MIPI Rx (Mobile Industry Processor Interface Receiver) 模塊主要功能為接收由 CMOS sensor 所傳送的視頻數據, 支持 MIPI D-PHY、 sub-LVDS (Low-Voltage Differential Signal)、 HiSPi (High-Speed Serial Pixel Interface) 等不同的串行視頻信號輸入, 並將其處理轉化為內部視頻時序,傳遞給下一級的視頻處理模塊 (ISP)。MIPI Rx 模塊中可細分為 PHY 和 Controller 兩部分,其中 PHY 模塊集成了模擬和數字兩個部分,主要將串行信號轉換為並行信號,而 Controller 模塊則負責解碼不同的視頻數據格式,傳送給後端的視頻處理模塊 (ISP)。功能框圖及在系統中的位置如下图所示:

img

1.2 MIPI vs DVP#

DVP:

并口传输数据需要帧同步信号(Vsync)、行同步信号(Hsync)和八条数据线,共十根数据线, DVP 接口在信号完整性方面受限制,速率也受限制。

img

MIPI:

而 MIPI 传输只需要clk lane和data lane. 对比MIPI 接口比 DVP 的接口信号线少,由于是低压差分信号,产生的干扰小,抗干扰能力也强。

img

1.3 CSI规格#

可同時支持 2 路 sensor 輸入(2组D-PHY, 每组5对差分线(1C4D))

• sensor 0 最大支持 4K2K @60fps HDR or @30fps 線性輸入

• sensor 1 最大支持 3M(2304x1296) @60fps HDR or linear 輸入

• 單路最多支持 4-Lane MIPI D-PHY 接口,最大支持 2.5Gbps/Lane

• 單路最多支持 4-Lane sub-LVDS/ HiSPi 接口,最大支持 1.5Gbps/Lane

• 支持 RAW8/ RAW10/ RAW12 數據類型的解析

• 支持 YUV422 8-bit/ YUV422 10-bit 數據類型的解析

• 最多支持 2 幀 WDR,支持多種 WDR 時序

• 支持 sub-LVDS/ HiSPi 模式像素/同步碼大小端配置

• 支持 Lane 數和 Lane 順序可配置

MIPI Rx 的帶寬有兩部分限制: PHY 的接口數據率和內部處理速度。

輸入接口最大支持 2.5Gbps/Lane,內部處理速度最大為 600M*1pixels/s(MAC clk)

1.4 CSI接口類型#

Common modevoltage Differential modevoltage Maximum clockfrequency Maximum datarate per lane
MIPI DPHY 200mV 200mV 1.25GHz 2.5Gbps
Sub-LVDS 900mV 150mV 750MHz 1.5Gbps
HiSPi(HiVCM) 900mV 280mV 750MHz 1.5Gbps
HiSPi(SLVDS) 200mV 200mV 750MHz 1.5Gbps

1.5 CSI 硬件引脚及接线#

常用的电脑摄像头是USB接口, 主流的智能手机摄像头是MIPI接口, 下面讲解常用的智能手机 camera MIPI接口。

MIPI CSI一般会有1对I2C通信引脚,1对MIPI差分时钟引脚和1~4对MIPI差分数据信号引脚, 也就是1CD4(1 clk lane & 4 data lane)。

1.5.1 mipi sensor引脚描述:#

信号名 引脚类型 描述
DOVDD 电源 1.8V IO 电源
DVDD 电源 1.2V 数字电源
AVDD 电源 2.8V 模拟电源
SCL 输入 I2C 时钟线
SDA 输入/输出 I2C 数据线(open drain)
SID0 输入 I2C Device ID 的选择 0 (内置下拉电阻,默认Device ID 是 7’h30)
SID1 输入 I2C Device ID 的选择 1 (内置下拉电阻,默认Device ID 是 7’h30)
XSHUTDN (RST) 输入 复位信号输入(内置上拉电阻,低电位有效)
EXTCLK 输入 时钟输入
PWDNB 输入 Power Down 信号输入(内置上拉电阻, 低电位有效)
D<3>(MD3P) 输出 DVP 输出 bit[3]/MIPI 数据 3 正极信号
D<5>(MD1P) 输出 DVP 输出 bit[5]/MIPI 数据 1 正极信号
D<7>(MCP) 输出 DVP 输出 bit[7]/MIPI 时钟正极信号
D<8>(MD0P) 输出 DVP 输出 bit[8]/MIPI 数据 0 正极信号
D<10>(MD2P) 输出 DVP 输出 bit[10]/MIPI 数据 2 正极信号
D<4>(MD3N) 输出 DVP 输出 bit[4]/MIPI 数据 3 负极信号
D<6>(MD1N) 输出 DVP 输出 bit[6]/MIPI 数据 1 负极信号
PCLK(MCN) 输出 DVP 输出时钟/MIPI 时钟负极信号
D<9>(MD0N) 输出 DVP 输出 bit[9]/MIPI 数据 0 负极信号
D<11>(MD2N) 输出 DVP 输出 bit[11]/MIPI 数据 2 负极信号

1.5.2 电路图线路结构#

img

一般mipi接口的sensor支持4 lane,2 lane,1 lane等数据传输方式。上图硬件上的连接了1组clk lane, 4组data lane。这幅图只连接了i2c和lane总线,还有EXTCLK ,PWDN, RST, VDD等引脚的连线需要外部soc去提供。这里就需要驱动人员会看原理图,知道lane id和pn swap的接线。clk lane, data lane等。

1.6 差分信号介绍#

我们用一个方法对差分信号做一下比喻,差分信号就好比是跷跷板上的两个人,当一个人被跷上去的时候,另一个人被跷下来了 - 但是他们的平均位置是不变的。继续跷跷板的类推,正值可以表示左边的人比右边的人高,而负值表示右边的人比左边的人高。0 表示两个人都是同一水平。

img

下图,应用到电学上,这两个跷跷板用一对标识为V+和V-的导线来表示。当V+ > V-时,信号定义成正极信号,V+ < V-时,信号定义成负极信号。 差分对的平均电压设置成 2.5V。

img

1.7 MIPI sensor的 power on时序#

Sony imx334:

img

img

SC4210:

img

这里列举了sony imx334和格科微gc2093, sc4210的上电时序,现在市面上大部分的mipi接口sensor都可以让VDD,PWDN, RST,EXTCLK讯号同时发出,然后过一段时间后就可以进行I2c通信了。

在HW交接到SW后,要确保最基本的power on时序是ok的,最好是用示波器对VDD,PWDN, RST,EXTCLK,I2c等波形进行测量无误后再porting到SW手上。