4. 摄像头输入接口与协议
在Qualcomm车载平台(如SA8155P、SA8295P、SA8650等)上,摄像头接入的物理层与协议层是两件必须分开理解的事。MIPI CSI-2定义的是“数据包长什么样、怎么组织帧和行”,而D-PHY与C-PHY定义的是“这些比特用什么电气方式、几条线、什么时钟关系传出去”。同一颗Sensor可以输出CSI-2 over D-PHY,也可以输出CSI-2 over C-PHY,但两者的Lane数、时钟结构、带宽计算和寄存器配置完全不同。调试时如果混淆这两层,很容易把“链路没起来”误判成“Sensor没出图”。
一、CSI-2、D-PHY、C-PHY的职责边界
CSI-2是协议层,核心概念包括Virtual Channel(VC)、Data Type(DT)、Packet Header/Footer、ECC与CRC。一条CSI-2链路上可以交织多个VC,例如同一路CSI接收器同时接前视8MP和环视2MP,通过VC区分。D-PHY是传统方案,采用1对差分时钟Lane加1~4对差分数据Lane,数据在HS(高速)与LP(低功耗)之间切换,HS模式下靠DDR采样,因此“数据率”通常写成Gbps/lane,而实际时钟频率是其一半。C-PHY则没有独立时钟Lane,采用3线一组(Triple)的A/B/C三线,通过三线之间的电平跳变组合编码,每个符号携带约2.28 bit,因此同样物理线数下C-PHY的吞吐更高,且EMI特性不同。
在Qualcomm平台侧,Camera子系统通常由CSIPHY(物理层)、CSID(CSI解码器)、ISP与IFE组成。CSIPHY负责D-PHY/C-PHY的电气接收与Lane映射,CSID负责CSI-2包解析、VC/DT过滤、错误统计。设备树中需要分别描述CSIPHY的Lane配置、CSID的VC映射,以及Sensor端的输出模式。三者必须一致,否则会出现“有clock但无帧”“帧头ECC错误”“行数不对”等典型现象。
二、D-PHY与C-PHY的配置差异
以一颗8MP Sensor、30fps、RAW10输出为例。若采用D-PHY 4-lane,总数据率约为 3840×2160×10×30 ≈ 2.49 Gbps,加上消隐开销按1.15倍估算约2.86 Gbps,分摊到4条Lane约715 Mbps/lane,对应HS时钟约357 MHz。若改用C-PHY,同样带宽下通常只需3条Triple(即9根线),每Triple约953 Msps,符号率与D-PHY的“时钟频率”不是同一概念,不能直接套用。设备树中D-PHY需要配置clock-lanes与data-lanes,C-PHY则配置为三线组,且CSIPHY的settle参数、去加重、均衡设置不同。
在Qualcomm平台常见的设备树片段中,D-PHY模式大致如下:
csiphy0: qcom,csiphy@... {
compatible = "qcom,csiphy-v2.0";
reg = <...>;
clocks = <...>;
clock-names = "csiphy_clk";
qcom,csiphy-vdd-supply = <...>;
qcom,csiphy-csiv2-combo-mode = <0>; /* 0: D-PHY, 1: C-PHY */
qcom,csiphy-lane-assign = <0 1 2 3>;
qcom,csiphy-lane-polarity = <0 0 0 0>;
};
port {
csiphy0_ep: endpoint {
data-lanes = <1 2 3 4>;
clock-lanes = <0>;
link-frequencies = /bits/ 64 <357000000>;
};
};
若切换为C-PHY,则combo-mode置1,data-lanes改为三线组描述,link-frequencies按符号率填写,同时Sensor寄存器中要切换到C-PHY输出模式。两者不一致时,CSIPHY可能完全收不到有效符号,表现为CSID无帧中断。
三、调试顺序与常见问题
建议按“供电与复位 → I2C通信 → Sensor输出模式 → CSIPHY链路 → CSID解析 → ISP出图”的顺序排查。第一步先确认Sensor的AVDD/DVDD/DOVDD、MCLK、PWDN、RESET时序符合手册;第二步用i2c-tools读取Sensor ID,确认地址与寄存器写入成功;第三步读取Sensor的0x0100等流开启寄存器,确认已进入输出状态;第四步通过Qualcomm的camss调试节点或内核日志查看CSIPHY是否锁定、CSID是否有帧中断和错误计数。
常见问题中,最典型的是“CSID有帧中断但图像花屏或全绿”。这通常不是链路没起来,而是VC/DT映射错误、行长度不匹配或RAW位宽配置错误。例如Sensor输出RAW10,但CSID按RAW8解析,就会导致每行像素错位。另一种是“帧率只有一半”,往往是因为D-PHY时钟连续/非连续模式配置与Sensor不一致,或MIPI速率被降档。C-PHY场景下还常见“换线后完全无数据”,多数是Triple内A/B/C三线顺序接错,C-PHY对线序比D-PHY更敏感。
四、多路摄像头并发时的带宽与VC规划
车载环视通常需要4路2MP@30fps同时输入。若每路RAW10,单路约 1920×1080×10×30 ≈ 622 Mbps,四路合计约2.49 Gbps。Qualcomm平台的CSIPHY与CSID资源有限,需要确认每路是否独占PHY、还是通过VC复用到同一PHY。若复用,必须保证各Sensor的VC编号不冲突,且CSID的VC过滤表正确配置。带宽不足时,表现为丢帧、帧中断间隔抖动或CSID FIFO溢出。此时应优先降低单路分辨率或帧率,而不是盲目提高MIPI速率,因为PHY速率受限于PCB走线、连接器与EMI余量。
最后,D-PHY与C-PHY的选择不只是带宽问题,还涉及线束数量、连接器成本、EMI与走线难度。D-PHY生态成熟、调试工具多;C-PHY线少、带宽高,但对线序、阻抗和共模噪声更敏感。在Qualcomm平台上,两者都通过CSIPHY统一接入,但寄存器配置、设备树属性和调试观察点不同,必须成对理解、成对验证。