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。
五、采集链路调试与常见问题排查
当采集链路无图像或图像异常时,建议按“由物理到逻辑、由底层到上层”的顺序排查:
- 物理层:确认线缆连接、供电电压(通常 1.8V/3.3V)、时钟是否起振。用示波器观察 CSI-2 差分信号是否有正常摆幅。
- 解串器锁定:读取 LOCK 寄存器。若未锁定,检查串行器配置、线缆长度(过长会导致衰减)、连接器接触。
- CSI-2 接收:在 Jacinto 侧读取 CSI-2 RX 的错误状态寄存器,确认是否有 ECC 错误、CRC 错误或 Lane 同步失败。常见原因是 Lane 速率配置不匹配或 VC 号冲突。
- 数据格式:确认 DT 与传感器输出一致。例如传感器输出 RAW10,而接收端配置为 RAW12,会导致图像错位。
- ISP 输出:若 RAW 数据正常但 YUV 异常,检查 VISS tuning 参数是否加载、AWB/CCM 是否收敛。
- 多摄同步:若单路正常、多路异常,重点检查 FSIN 信号是否同时到达各传感器,以及解串器端口映射是否正确。
v4l2-ctl 工具可用于抓取 RAW 帧并保存为文件,便于离线分析。掌握上述链路后,读者应能独立完成从传感器到内存的采集配置,并具备定位“无图、花屏、偏色、不同步”等典型问题的能力。实际项目中,建议将关键寄存器配置与调试命令整理为脚本,便于批量部署与复现。