3. Sensor 模块配置:sensor_id、sensor_name、曝光时间、增益、帧率、MIPI Lane 配置

Sensor 模块是 Camera 管线链路的物理起点,其配置质量直接决定原始图像数据的采集精度与传输稳定性。在高通 CHI 架构中,Sensor 配置通过 XML 节点 <sensor> 定义,包含设备标识、曝光控制参数、帧率同步以及 MIPI 物理层接口配置。本章将逐一拆解这些核心参数,并给出调优建议。

3.1 设备标识:sensor_id 与 sensor_name

sensor_id 和 sensor_name 是 Sensor 模块在 CHI 配置中的唯一标识,用于在运行时匹配物理设备与逻辑管线。

参数 数据类型 说明 典型值
sensor_id uint32 全局唯一数字 ID,用于驱动层设备枚举与 UEFI 匹配 0x50, 0x58
sensor_name string 可读名称,用于日志输出与调试工具识别 "imx586", "ov48c"
调优提示: 在多摄像头项目中,sensor_id 必须与硬件原理图上的 I2C 地址或 CSI 端口号一一对应,避免在 UEFI 阶段发生设备冲突。

3.2 曝光时间与增益控制

曝光时间(Exposure Time)和增益(Gain)共同决定了 Sensor 的感光能力与信噪比。CHI 配置中通过 <exposure> 和 <gain> 节点定义其范围与步进。

  • 曝光时间:单位通常为微秒(μs),范围受帧率与行时间限制。最大曝光时间 ≤ 帧周期 - 消隐时间。
  • 模拟增益:在像素读出前放大信号,噪声较低,典型范围 1x ~ 16x。
  • 数字增益:在 ADC 转换后放大,会放大噪声,建议仅在模拟增益不足时使用。
<!-- CHI XML 曝光与增益配置示例 -->
<sensor>
    <exposure>
        <min>100</min>          <!-- 最小曝光时间 (μs) -->
        <max>33000</max>        <!-- 最大曝光时间 (μs) -->
        <step>1</step>          <!-- 步进 (μs) -->
    </exposure>
    <gain>
        <analog_min>1.0</analog_min>
        <analog_max>16.0</analog_max>
        <digital_min>1.0</digital_min>
        <digital_max>8.0</digital_max>
    </gain>
</sensor>
常见问题: 曝光时间设置过长会导致帧率下降;增益设置过高会导致图像出现明显噪点。建议在低光照场景下优先增加曝光时间,其次再提升模拟增益。

3.3 帧率配置与同步

帧率(Frame Rate)由 Sensor 的垂直消隐(VBlank)和水平消隐(HBlank)共同决定。CHI 配置中通过 <frame_rate> 节点或直接配置 <vt_pixel_clk>、<line_length_pclk>、<frame_length_lines> 来实现。

帧率计算公式:

帧率 (fps) = vt_pixel_clk / (line_length_pclk × frame_length_lines)
参数 说明 调优方向
vt_pixel_clk 像素时钟频率 (Hz) 受 MIPI 速率限制,不宜超过 Sensor 规格
line_length_pclk 每行像素时钟数 减小可提升帧率,但需保证 HBlank 足够
frame_length_lines 每帧总行数(含 VBlank) 减小可提升帧率,但 VBlank 过小会导致曝光时间不足
案例: 某项目需要 60fps 输出,但 Sensor 默认配置为 30fps。通过将 frame_length_lines 从 2240 减小到 1120,同时保持 vt_pixel_clk 不变,成功将帧率提升至 60fps,但需验证曝光时间范围是否满足需求。

3.4 MIPI Lane 配置

MIPI CSI-2 物理层通过 Lane 传输图像数据。Lane 数量与速率直接影响带宽上限。CHI 配置中通过 <mipi> 节点定义 Lane 数、每 Lane 速率以及时钟配置。

<!-- MIPI Lane 配置示例 -->
<mipi>
    <lane_count>4</lane_count>           <!-- 1/2/4 Lane 可选 -->
    <lane_speed_mbps>2400</lane_speed_mbps> <!-- 每 Lane 速率 (Mbps) -->
    <clk_continuous>true</clk_continuous>   <!-- 连续时钟模式 -->
</mipi>

带宽计算公式:

总带宽 (Mbps) = lane_count × lane_speed_mbps × 2 (DDR)
有效带宽 = 总带宽 × (8/10)  (8b10b 编码开销)
调优提示: 4 Lane 配置下,每 Lane 速率 2400 Mbps 可提供约 7.68 Gbps 有效带宽,足以支持 4K@60fps 10-bit 数据。若 Lane 数减少,需相应提升每 Lane 速率或降低分辨率/帧率。

3.5 Sensor 配置整体流程

下图展示了 Sensor 模块从设备识别到参数生效的完整配置流程:

Sensor 模块配置流程 Sensor 模块配置流程 1. 设备识别 sensor_id / sensor_name 2. 曝光与增益 exposure / gain 范围 3. 帧率计算 vt_pixel_clk / line_length / frame_length 4. MIPI Lane 配置 lane_count / lane_speed / clk 5. 带宽校验 总带宽 ≥ 数据量 说明:每一步配置错误都可能导致图像异常或驱动崩溃,建议按顺序逐项验证。

3.6 参数调优检查清单

在实际项目中,建议按照以下清单逐项确认 Sensor 配置的正确性:

  1. 设备匹配:确认 sensor_id 与硬件 I2C 地址一致,sensor_name 在日志中正确打印。
  2. 曝光范围:验证最大曝光时间是否满足低光照场景需求,最小曝光时间是否支持高速运动场景。
  3. 增益步进:检查模拟增益步进是否平滑,避免出现亮度跳变。
  4. 帧率稳定性:使用示波器测量 VSYNC 信号,确认帧率波动在 ±1% 以内。
  5. MIPI 信号完整性:通过眼图测试确认每 Lane 速率下的信号质量,确保误码率低于 10⁻¹²。
  6. 带宽余量:计算有效带宽是否大于实际数据量,建议保留 20% 余量以应对突发场景。
实战经验: 某项目在 4K@60fps 10-bit 配置下,MIPI 4 Lane 速率设置为 2400 Mbps,有效带宽约 7.68 Gbps,而实际数据量约 6.2 Gbps,余量充足。后因 PCB 走线过长导致信号衰减,将 Lane 速率降至 2000 Mbps 后,带宽余量仍满足需求,图像稳定性显著提升。