4. 基于MIPI CSI-2的多路视频传输

当系统从单摄像头走向多摄像头,MIPI CSI-2不再只是“一根数据线”的问题,而是一套关于通道复用、数据归属和接收端解复用的完整机制。onsemi的图像传感器(如AR0144、AR0234、AR0820等)普遍支持CSI-2输出,理解协议要点,是后续做同步与标定的前提。

CSI-2协议要点:从像素到数据包

CSI-2是MIPI联盟定义的摄像头串行接口,物理层通常采用D-PHY(也有C-PHY)。它把图像数据组织成“包”来传输:每个数据包由短包(Short Packet)和长包(Long Packet)构成。短包携带帧起始(FS)、帧结束(FE)、行起始(LS)、行结束(LE)等同步事件;长包则承载真正的像素数据,包头包含数据标识(Data ID)、字计数(Word Count)和校验(ECC/CRC)。

Data ID是一个8位字段,高2位是虚拟通道号(Virtual Channel,VC),低6位是数据类型(Data Type,DT)。例如DT=0x2A表示RAW8,0x2B表示RAW10,0x2C表示RAW12。这意味着:虚拟通道号决定了“这包数据属于哪路摄像头”,数据类型决定了“这包数据怎么解析”。接收端(如SoC的CSI-2控制器)正是靠Data ID把交织在一起的多路数据重新分开。

此外,CSI-2是单向高速差分传输,配合低速的CCI(I²C兼容)控制通道完成寄存器配置。每条Lane的速率、Lane数量(1/2/4 lane)决定了总带宽。以4 lane、每lane 1.5 Gbps为例,理论带宽约6 Gbps,扣除协议开销后,可支撑约1080p@60fps的RAW10数据流。

虚拟通道与数据流标识

虚拟通道是CSI-2实现多路复用的核心手段。VC字段只有2位,因此最多支持4个虚拟通道(VC0~VC3)。对于超过4路摄像头的系统,通常需要多路CSI-2控制器或使用聚合器(Aggregator)扩展。

每路摄像头被分配一个唯一的VC号,发送端在打包时写入对应VC,接收端按VC分流。除了VC,数据流还可以通过Data Type区分不同格式,但同一VC内通常只跑一种格式。实际工程中,常见做法是:VC0给前视、VC1给后视、VC2给左视、VC3给右视,这样在SoC侧只需按VC号把数据写入不同DMA通道即可。

注意:VC号是“逻辑通道”,与物理Lane无关。多路摄像头可以共享同一组Lane,也可以各自独立Lane,取决于硬件拓扑。

多路复用与解复用

多路复用发生在发送端:当多个传感器共享一条CSI-2链路时,需要一个聚合器或具备多路输入能力的发送端,把各路数据按VC交织成一条数据流。交织的粒度通常是“包”级别——即一个长包完整发送后,再发送另一路的长包,而不是逐字节交替。这样接收端才能正确解析。

解复用发生在接收端:CSI-2控制器解析每个包的Data ID,提取VC号,将像素数据路由到对应的DMA通道或内存缓冲区。如果VC配置错误,会出现“图像错位”“花屏”“帧率异常”等现象。因此,调试多路系统时,第一步往往是确认VC分配与接收端路由是否一致。

多路CSI-2复用与解复用数据流 Sensor A VC0 · RAW10 Sensor B VC1 · RAW10 Sensor C VC2 · RAW12 Sensor D VC3 · RAW10 复用器 Mux / Aggregator 按包交织 写入 VC 标识 4-lane D-PHY CSI-2 链路 高速 差分 解复用 CSI-2 控制器 解析 Data ID 按 VC 路由 DMA 通道 关键:VC号决定数据归属,Data Type决定解析方式;复用按包交织,解复用按VC路由

onsemi传感器输出配置

onsemi传感器通常通过寄存器配置CSI-2输出。以AR0234为例,关键寄存器包括:

  • 0x301A(RESET_REGISTER):软复位与流启动控制。
  • 0x3064(SMIA_TEST):测试图案使能,调试时可用于验证链路。
  • 0x31D0(CSI_VC_ID):设置虚拟通道号,写入0~3。
  • 0x31D2(CSI_LANE_MODE):设置Lane数量,如0x03表示4 lane。
  • 0x31D4(CSI_DATA_FORMAT):设置Data Type,如0x2B对应RAW10。

配置顺序建议:先软复位,再设置PLL和时钟,然后配置Lane数量、VC号、Data Type,最后使能流输出。如果多路传感器共享链路,必须确保每路的VC号唯一,且接收端路由表与之一致。

常见错误:两路传感器都使用默认VC0,导致接收端无法区分,表现为图像交替闪烁或DMA溢出。务必在初始化时显式写入不同的VC号。

带宽与Lane分配示例

假设4路1080p@30fps RAW10,每帧约1920×1080×10/8 ≈ 2.59 MB,30fps约77.8 MB/s。4路合计约311 MB/s。若使用4 lane、每lane 1.0 Gbps,理论带宽4 Gbps = 500 MB/s,扣除协议开销后约400 MB/s,可满足需求。若提升到60fps,则需8 lane或提高每lane速率。

实际配置时,还需注意:CSI-2的连续时钟模式(Continuous Clock)与非连续时钟模式(Non-continuous Clock)会影响功耗和同步;多路系统中,建议使用连续时钟以保持链路稳定。此外,ECC/CRC校验若频繁报错,应检查Lane极性、走线长度匹配和终端电阻。

掌握以上要点后,多路视频传输的“数据归属”问题就变得清晰:VC号是身份,Data Type是格式,复用器负责交织,解复用器负责分流。下一步的同步与标定,都建立在这条可靠的数据通道之上。