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