【学习笔记】MIPI CSI-2 协议全解析:从底层封包到像素解析

0. 前言:为什么 MIPI CSI-2 是现代视觉的基石?

在智能手机三摄、车载 ADAS 自动驾驶、AR/VR 交互的背后,都离不开一个共同的"幕后功臣"------MIPI CSI-2 (Camera Serial Interface 2) 协议。

许多初学者甚至资深工程师在调试摄像头时,常会被 THS−SETTLET_{HS-SETTLE}THS−SETTLE 报错、CRC 校验失败、图像颜色偏移等问题困扰。其核心原因在于对 低层协议层(Low Level Protocol, LLP) 的理解不够透彻。本文将带你深度复盘 MIPI CSI-2 的底层逻辑,让你不仅"会配寄存器",更能"看透比特流"。

1. 分层架构:物理层之上的物流体系

要理解 LLP,首先要看它在整个协议栈的位置。MIPI CSI-2 并非孤立存在,它建立在 D-PHY 或 C-PHY 之上。

  • 物理层 (D-PHY/C-PHY):铺设高速公路,负责差分信号的物理传输。
  • 低层协议层 (LLP):物流管理系统。它负责把像素"打包"成集装箱(长包)或信封(短包),并打上单号(Data ID)。
  • 像素-字节转换层 (Pixel to Byte):将 10-bit 或 12-bit 的像素拆解成适合 8-bit 总线传输的字节流。

生动比喻:物理层是高速公路上的车道,LLP 是物流公司的分拣标准,它决定了货物如何装箱、如何核对单据以及如何防止丢包。

2. 封包机制:短包与长包的"精密分工"

CSI-2 协议规定了两种基本的数据封包格式。

2.1 短包 (Short Packet) ------ 精准的指挥官

短包固定为 32 bits (4 字节)。它不携带任何图像像素,只负责指挥。

  • Data ID (8位):包含虚拟通道(VC)和数据类型(DT,如 0x00 表示帧开始)。
  • Data Field (16位):通常存放帧计数器(Frame Number)。
  • ECC (8位):纠错码。

2.2 长包 (Long Packet) ------ 沉稳的搬运工

长包是数据的载体,长度可变。

  • Packet Header (PH):32位,告诉接收端接下来有多少像素数据。
  • Data Payload:真正的像素狂欢,由 WC(Word Count)指定字节数。
  • Packet Footer (PF):包含 16 位的 CRC 校验码。

3. 错误控制:ECC 与 CRC 的"双重过滤"

在数 Gbps 的传输中,干扰无处不在。MIPI 如何保证数据不乱?

3.1 ECC:包头的"保险锁"

ECC 保护的是包头(PH)。它采用修正汉明码(Modified Hamming Code),具有 SEC-DED 能力:

  • 纠 1 错:如果 32 位包头中由于干扰翻转了 1 bit,ECC 能自动把它纠正过来。
  • 检 2 错:如果错了 2 bit,ECC 会报警,硬件通常会丢弃该包。

3.2 CRC:载荷的"质检员"

CRC-16 保护的是 Payload(像素数据)。

  • 原理:发送端根据像素流计算出 16 位码,接收端重算比对。
  • 局限:CRC 只能发现错误,不能修复。如果 CRC 报错,图像上可能会出现一条花线,或者 ISP 触发异常中断。

4. 像素打包 (Pixel Packing):字节的奥林匹克

这是 CSI-2 最具技术含量的地方。D-PHY 是按字节(8-bit)传的,但 Sensor 输出往往是 RAW10、RAW12。怎么塞进去?

4.1 RAW10 的"5字节循环"

以 10-bit RAW 为例:4 个像素一共 40 bits。

  • 传输方式
    • 前 4 个字节发 4 个像素的 高 8 位
    • 第 5 个字节发 4 个像素各自剩下的 2 位低位
  • 计算公式 :WC=Width×1.25WC = \text{Width} \times 1.25WC=Width×1.25。

4.2 为什么 WC (Word Count) 如此重要?

如果你的 Sensor 宽度是 1920,输出 RAW10,那么 WC 必须配置为 1920×1.25=24001920 \times 1.25 = 24001920×1.25=2400 字节。如果你的寄存器配成了 2401,接收端就会因为"找不到包尾"而疯狂报错。


5. 高级特性:不仅仅是传输图像

5.1 虚拟通道 (Virtual Channel, VC)

通过 DI 字节中的 VC 位,一根 MIPI 线可以同时传 4 路甚至更多路图像。

  • 场景:车载环视系统中,一个四合一解复用器将 4 路摄像头信号交织在一起,通过一根 MIPI 线传给 SoC。
  • 解析:SoC 根据 VC ID 自动把数据分发到不同的内存缓冲区。

5.2 数据加扰 (Data Scrambling)

当传输速率极高时,0 和 1 的规律跳变会产生巨大的电磁辐射(EMI)。

  • 机制:利用伪随机序列(PRBS)与数据异或,让频谱变"乱"。
  • 影响:不开启加扰,手机可能会搜不到 Wi-Fi;开启加扰,信号就干净了。

5.3 LRTE (延迟降低)

在自动驾驶中,每一毫秒都关乎生命。LRTE 通过优化包结构和物理层切换时序,让第一行像素到达处理器的速度提升了 10%~20%。


6. 驱动实战

6.1 偏色严重(绿变紫、蓝变红)

  • 根本原因:Bayer Pattern 顺序不匹配。
  • 排查:Sensor 发出的是 RGGB,你的 ISP 驱动里写成了 BGGR。
  • 解决 :修改驱动中的 mbus_code

6.2 "No data received" 或中断不触发

  • 根本原因 :THS−SETTLET_{HS-SETTLE}THS−SETTLE 时间不匹配。
  • 排查:Sensor 准备好了进入高速模式,但 SoC 延迟了 50ns 才打开接收窗口,导致错过了 SoT(传输开始信号)。
  • 解决:调整 SoC 端 MIPI PHY 的 Settle 参数。

6.3 图像右侧出现绿色噪点

  • 根本原因:WC 设置错误,导致每行多读了几个无效字节。
  • 解决:根据 Data Type 严格计算 Word Count。

7. 总结:

MIPI CSI-2 协议的精华都在 LLP 层。它通过复杂的封包、纠错和打包机制,把脆弱的电信号变成了稳定的图像数据流。

  • ECC 确保了指令的正确性;
  • CRC 保证了质量的可靠性;
  • VC 扩展了应用的灵活性;
  • Packing 压榨了物理带宽。

码字不易,如果这篇文章帮你解决了 MIPI 协议的疑惑,请点赞、收藏支持一下!

相关推荐
mounter6252 小时前
深度解析:Linux 内核为何要移除“直接映射” (Direct Map)?
linux·运维·服务器·security·linux kernel·direct mem map
就叫飞六吧2 小时前
企微组织架构同步到本地
笔记·企业微信
bugu___3 小时前
Linux系统、网络知识点回顾1
linux·网络
YCY^v^3 小时前
PSW、PFW、SPSW、SPFW 是信捷TouchWin
学习
Engineer邓祥浩4 小时前
JVM学习笔记(13) 第五部分 高效并发 第12章 Java内存模型与线程
jvm·笔记·学习
我命由我123454 小时前
程序员的心理学学习笔记 - 反刍思维
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
GISer_Jing4 小时前
AI知识学习
人工智能·redis·学习
星辰_mya4 小时前
PV之系统与并发的核心wu器
java·开发语言·后端·学习·面试·架构师
暗夜猎手-大魔王4 小时前
learn-claude-code项目学习总结
学习