4. 摄像头接入与图像采集

在 TI Jacinto(TDA4VM/TDA4VH 等)ADAS 平台上,摄像头接入不是“插上线就能出图”的简单动作,而是一条从光学传感器到内存缓冲区的完整信号链。理解这条链路上每一级的电气接口、数据格式与时序约束,是后续感知算法稳定运行的前提。本节围绕 CSI-2、SerDes 解串、多路同步、RAW/YUV 数据流、ISP tuning 基础以及采集链路调试展开,帮助读者建立可落地的接入与排障能力。

一、CSI-2 接口与物理层拓扑

Jacinto 的摄像头子系统(CAMSS)通过 MIPI CSI-2 接收图像数据。CSI-2 是逻辑协议层,其下通常承载 D-PHY 或 C-PHY 物理层。在车载场景中,传感器往往不直接连到 SoC,而是先经过同轴或屏蔽双绞线传输,再由 SerDes 解串器还原为 CSI-2 信号送入 SoC。因此一条典型链路是:Image Sensor → Serializer → 同轴线缆 → Deserializer → CSI-2 TX → Jacinto CSI-2 RX → DMA → 内存。

CSI-2 的关键参数包括:Lane 数量(1/2/4 lane)、每 lane 速率(如 1.5 Gbps/lane)、虚拟通道号(Virtual Channel, VC)、数据类型(Data Type, DT,如 RAW10=0x2B、RAW12=0x2C、YUV422 8-bit=0x1E)。Jacinto 的 CSI-2 RX 支持多虚拟通道解复用,这意味着一个 CSI-2 端口可以同时接收来自多个传感器的数据流,前提是各传感器被分配不同的 VC 号。若两路摄像头使用相同 VC,接收端会将其视为同一流而互相覆盖,这是多摄接入中最常见的配置错误之一。

二、SerDes 解串器配置要点

以 TI 常用的 DS90UB9xx 系列(如 DS90UB954/960)为例,解串器需要完成三件事:链路锁定、端口映射与 CSI-2 输出配置。上电后,SoC 通过 I2C 访问解串器寄存器,读取 0x5C(或对应状态寄存器)确认各 RX 端口是否 LOCK。若未锁定,需检查线缆、连接器、供电以及串行器端的 PLL 配置。

锁定后,需配置解串器的 CSI-2 输出:使能对应端口、设置 VC 映射、配置连续时钟模式(continuous clock)或非连续时钟模式。对于多路摄像头,通常将解串器的多个 RX 端口映射到不同的 CSI-2 VC,再通过一个 CSI-2 TX 输出到 Jacinto。示例配置思路如下:

# 伪代码:DS90UB954 端口0映射到VC0,端口1映射到VC1
i2cset -y 1 0x30 0x4C 0x01   # 使能RX端口0
i2cset -y 1 0x30 0x4D 0x02   # 使能RX端口1
i2cset -y 1 0x30 0x20 0x00   # VC0映射到CSI TX
i2cset -y 1 0x30 0x21 0x01   # VC1映射到CSI TX
i2cset -y 1 0x30 0x33 0x03   # 使能CSI输出

注意:不同型号寄存器地址不同,实际应以数据手册为准。配置完成后,应通过读取解串器的错误状态寄存器(如 0x4A、0x4B)确认无 CRC 错误、无 FIFO 溢出。

三、多摄像头同步机制

ADAS 中多摄同步分为两类:帧同步(所有摄像头在同一时刻曝光)和时间戳同步(每帧附带统一时基)。Jacinto 平台通常通过以下方式实现:

  • 硬件同步信号:由 SoC 或专用同步芯片产生 FSIN(Frame Sync)信号,同时送入各串行器的同步引脚,触发传感器同时开始曝光。
  • 解串器同步模式:部分解串器支持将一路 RX 的帧同步信号复制到其他端口,实现级联同步。
  • 软件时间戳:在 CSI-2 接收中断中读取 SoC 的全局时间戳计数器(TSC),为每帧打上时间标签,用于后续融合。

若同步失败,表现为多路图像中运动物体出现“撕裂”或融合算法误判。排查时应先确认 FSIN 信号是否到达传感器,再检查各传感器的曝光时间是否一致。

四、RAW/YUV 数据流与 ISP tuning 基础

传感器输出通常为 RAW Bayer 格式(如 RGGB、RCCB),需经 ISP 处理为 YUV 或 RGB 供感知算法使用。Jacinto 的 VPAC(Vision Processing Accelerator)包含 VISS(Vision Imaging SubSystem),负责 RAW 到 YUV 的转换。数据流为:CSI-2 RX → VISS → 输出 YUV422/NV12 → 内存。

ISP tuning 的核心是配置 VISS 中的各处理模块:黑电平校正(BLC)、镜头阴影校正(LSC)、去马赛克(Demosaic)、白平衡(AWB)、色彩校正(CCM)、伽马(Gamma)等。TI 提供 DCC(Dynamic Camera Configuration)工具生成 tuning 参数文件,通过 viss 节点加载。若 tuning 参数与传感器不匹配,会出现偏色、过曝或细节丢失。调试时可先使用默认参数,再逐步调整 AWB 与 CCM。

Jacinto 摄像头采集链路与数据流 Image Sensor RAW Bayer 输出 Serializer 并串转换 同轴线缆 Deserializer DS90UB954 CSI-2 TX Jacinto CSI-2 RX VC 解复用 VISS / ISP RAW→YUV DMA / 内存 NV12 / YUV422 多摄像头同步机制 FSIN 硬件同步 同时曝光触发 解串器级联同步 端口复制 FSIN TSC 时间戳 中断打标 同步失败 → 运动撕裂 / 融合误判 采集链路调试检查点 ① 解串器 LOCK 状态 ② CSI-2 VC 映射一致性 ③ 错误寄存器 CRC/FIFO ④ VISS tuning 参数匹配 ⑤ 帧率与曝光时间 ⑥ DMA 缓冲区对齐 ⑦ 时钟连续/非连续模式 ⑧ 电源与地噪声

五、采集链路调试与常见问题排查

当采集链路无图像或图像异常时,建议按“由物理到逻辑、由底层到上层”的顺序排查:

  1. 物理层:确认线缆连接、供电电压(通常 1.8V/3.3V)、时钟是否起振。用示波器观察 CSI-2 差分信号是否有正常摆幅。
  2. 解串器锁定:读取 LOCK 寄存器。若未锁定,检查串行器配置、线缆长度(过长会导致衰减)、连接器接触。
  3. CSI-2 接收:在 Jacinto 侧读取 CSI-2 RX 的错误状态寄存器,确认是否有 ECC 错误、CRC 错误或 Lane 同步失败。常见原因是 Lane 速率配置不匹配或 VC 号冲突。
  4. 数据格式:确认 DT 与传感器输出一致。例如传感器输出 RAW10,而接收端配置为 RAW12,会导致图像错位。
  5. ISP 输出:若 RAW 数据正常但 YUV 异常,检查 VISS tuning 参数是否加载、AWB/CCM 是否收敛。
  6. 多摄同步:若单路正常、多路异常,重点检查 FSIN 信号是否同时到达各传感器,以及解串器端口映射是否正确。
调试建议:先使用单路摄像头打通全链路,确认 RAW 抓图正常后,再逐步增加摄像头并配置 VC 映射。TI 提供的 v4l2-ctl 工具可用于抓取 RAW 帧并保存为文件,便于离线分析。
注意:修改解串器寄存器前,务必确认 I2C 地址与总线编号,避免误写其他器件。部分寄存器为只读状态位,写入无效但不会报错,需通过读回验证。

掌握上述链路后,读者应能独立完成从传感器到内存的采集配置,并具备定位“无图、花屏、偏色、不同步”等典型问题的能力。实际项目中,建议将关键寄存器配置与调试命令整理为脚本,便于批量部署与复现。