3. 多摄像头硬件同步基础

多摄像头系统的“同步”并不是一个单一动作,而是一条从时间基准到曝光起点的信号链。要让多路 onsemi 图像传感器在同一时刻开始积分,必须同时解决三件事:谁产生时间基准、基准如何传到每一颗传感器、传感器内部如何把外部信号映射为曝光与读出时序。本节围绕同步信号类型、主从模式、外部触发与内部自由运行的差异,以及 onsemi 传感器同步引脚与寄存器配置展开。

一、同步信号类型:从帧同步到曝光同步

工程上常见的同步信号可分为三类。第一类是帧同步信号(Frame Sync / FSIN),它标记一帧的起始时刻,决定各摄像头的帧率与帧边界对齐。第二类是曝光同步信号(Exposure Sync / XVS 类),它直接控制积分窗口的起止,使多路传感器的曝光区间重合。第三类是行同步/像素时钟类信号,用于读出阶段的逐行节拍对齐,通常由传感器内部 PLL 产生,不直接跨摄像头分发。

对多摄像头同步而言,真正决定“是否同时曝光”的是帧同步与曝光同步。若只对齐帧起始而曝光起点存在固定偏移,画面仍会出现运动物体的相对位移。因此,同步设计的目标是让所有传感器的曝光起点与积分时长一致,而不仅仅是帧率相同。

onsemi 多摄像头同步信号链与主从模式 主控制器 / SoC 产生 FSIN / XVS 或配置主传感器输出 主传感器 (Master) 内部自由运行 / 外部触发 输出同步信号 从传感器 1 Slave 模式 接收外部同步 从传感器 2 Slave 模式 接收外部同步 配置/触发 FSIN 分发 XVS 分发 级联 外部触发同步 vs 内部自由运行:曝光时序对比 外部触发同步 FSIN Cam1 曝光 Cam2 曝光 曝光窗口对齐,无相对偏移 内部自由运行 Cam1 曝光 Cam2 曝光 曝光窗口错位,存在固定/漂移偏移

二、主从模式:谁定义时间基准

主从模式解决的是“时间基准由谁产生”。在主从模式下,一颗传感器被配置为 Master,它按自身内部时序产生帧同步与曝光控制信号,并通过同步引脚输出;其余传感器配置为 Slave,接收该信号并以其为曝光起点。主从模式的优点是链路简单、无需额外控制器,缺点是主传感器的时钟抖动会直接传递到所有从传感器,且主传感器故障会导致全系统失步。

另一种常见做法是控制器统一分发:由 SoC 或 FPGA 产生 FSIN,同时送到所有传感器,所有传感器都工作在从模式。这种方式同步精度取决于分发路径的等长与抖动,适合摄像头数量多、需要灵活调整帧率的场景。实际工程中,2~4 路摄像头常用主从级联,4 路以上更倾向控制器统一分发。

三、外部触发与内部自由运行的区别

内部自由运行指传感器按自身寄存器设定的帧率连续曝光,不依赖任何外部同步信号。它的曝光起点由内部计数器决定,因此多颗传感器之间必然存在相位差,且该相位差会随温度、时钟漂移缓慢变化。自由运行适合单摄像头或对同步无要求的场景。

外部触发指传感器等待外部 FSIN 或 XVS 信号到来后才启动一帧曝光。触发可分为边沿触发与电平触发,也可分为单次触发与连续触发。连续触发下,外部信号周期即帧率;单次触发则用于事件抓拍。外部触发的关键参数是触发延迟(Trigger Latency)与抖动(Jitter),它们直接决定多路曝光的对齐误差。

对比项内部自由运行外部触发同步
时间基准传感器内部计数器外部 FSIN / XVS
多路对齐无法保证,存在漂移可对齐到同一触发沿
帧率调整改寄存器即可需改触发源频率
典型抖动—取决于触发链路,约 ns~µs 级
适用场景单摄、预览多摄融合、立体视觉

四、onsemi 传感器同步引脚与寄存器配置

以 onsemi 常见的 AR/ARX 系列为例,同步相关引脚通常包括 FSIN(帧同步输入/输出)、XVS(曝光同步)、XHS(行同步)以及 STROBE(曝光指示输出)。FSIN 可配置为输入或输出:Master 模式下配置为输出,Slave 模式下配置为输入。XVS 用于直接控制曝光起点,在多摄系统中常与 FSIN 配合使用。

寄存器配置的核心思路是:先确定工作模式(Master/Slave),再选择触发源(内部/外部),最后设定触发沿与延迟。以下是一段示例配置,用于将传感器配置为 Slave、外部 FSIN 上升沿触发、连续模式:

// 示例:onsemi 传感器 Slave 外部触发配置(参数为教学示例)
// 1. 设置同步模式为 Slave,FSIN 作为输入
write_reg(0x30A0, 0x01);   // SYNC_MODE = Slave
write_reg(0x30A2, 0x00);   // FSIN_DIR = Input

// 2. 选择外部触发源,上升沿有效
write_reg(0x30A4, 0x01);   // TRIG_SRC = External FSIN
write_reg(0x30A6, 0x00);   // TRIG_EDGE = Rising

// 3. 连续触发模式,触发延迟设为 0
write_reg(0x30A8, 0x01);   // TRIG_MODE = Continuous
write_reg(0x30AA, 0x0000); // TRIG_DELAY = 0

// 4. 使能同步输出(若需级联到下一颗)
write_reg(0x30AC, 0x01);   // SYNC_OUT_EN = 1

配置完成后,需要验证三件事:一是 FSIN 信号是否真实到达传感器引脚,可用示波器在引脚处测量;二是曝光起点是否对齐,可通过拍摄 LED 闪烁或运动物体,观察多路图像中同一事件的时间位置;三是读出是否正常,检查帧率是否与触发频率一致。若发现某一路始终不同步,优先检查该路的 FSIN 走线是否等长、触发沿配置是否一致、以及 Slave 模式是否真正生效。

在实际调试中,建议先用低频 FSIN(如 1 Hz)逐路确认触发响应,再逐步提高到目标帧率。低频下更容易用示波器和肉眼判断曝光起点是否对齐,避免高频下误判为“同步正常”。
主从级联时,若从传感器的 SYNC_OUT 未使能或延迟配置不一致,会导致级联链路后端的摄像头出现累积偏移。级联路数越多,抖动累积越明显,通常建议级联不超过 3 级。

总结来看,多摄像头硬件同步的关键在于:明确同步信号类型(帧同步/曝光同步),选择主从或控制器分发模式,区分外部触发与内部自由运行的适用边界,并正确配置 onsemi 传感器的同步引脚与寄存器。只有把“时间基准—信号分发—曝光起点”这条链路打通,后续的标定与融合才有稳定的数据基础。