3. 多摄像头硬件同步基础
多摄像头系统的“同步”并不是一个单一动作,而是一条从时间基准到曝光起点的信号链。要让多路 onsemi 图像传感器在同一时刻开始积分,必须同时解决三件事:谁产生时间基准、基准如何传到每一颗传感器、传感器内部如何把外部信号映射为曝光与读出时序。本节围绕同步信号类型、主从模式、外部触发与内部自由运行的差异,以及 onsemi 传感器同步引脚与寄存器配置展开。
一、同步信号类型:从帧同步到曝光同步
工程上常见的同步信号可分为三类。第一类是帧同步信号(Frame Sync / FSIN),它标记一帧的起始时刻,决定各摄像头的帧率与帧边界对齐。第二类是曝光同步信号(Exposure Sync / XVS 类),它直接控制积分窗口的起止,使多路传感器的曝光区间重合。第三类是行同步/像素时钟类信号,用于读出阶段的逐行节拍对齐,通常由传感器内部 PLL 产生,不直接跨摄像头分发。
对多摄像头同步而言,真正决定“是否同时曝光”的是帧同步与曝光同步。若只对齐帧起始而曝光起点存在固定偏移,画面仍会出现运动物体的相对位移。因此,同步设计的目标是让所有传感器的曝光起点与积分时长一致,而不仅仅是帧率相同。
二、主从模式:谁定义时间基准
主从模式解决的是“时间基准由谁产生”。在主从模式下,一颗传感器被配置为 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 模式是否真正生效。
总结来看,多摄像头硬件同步的关键在于:明确同步信号类型(帧同步/曝光同步),选择主从或控制器分发模式,区分外部触发与内部自由运行的适用边界,并正确配置 onsemi 传感器的同步引脚与寄存器。只有把“时间基准—信号分发—曝光起点”这条链路打通,后续的标定与融合才有稳定的数据基础。