1. MIPI CSI 接口概述
各位好,我是老周。做嵌入式驱动十几年了,RK平台也折腾了七八年。今天咱们开始聊MIPI CSI——说白了,就是摄像头和处理器之间怎么传数据的那条路。
你想想看,一个摄像头模组,拍完照片,数据怎么送到CPU或者ISP里?靠的就是MIPI CSI。我刚开始接触这个接口时,总觉得它很神秘,后来发现,搞懂物理层和协议层,其实没那么复杂。
1.1 什么是MIPI CSI
MIPI CSI,全称是Camera Serial Interface。它是MIPI联盟制定的一套摄像头串行接口标准。目前主流的是CSI-2,咱们RK平台用的也是这个。
它的核心思想很简单:用差分信号,高速串行传输。好处很明显——线少、抗干扰强、能跑高带宽。
关键点:MIPI CSI不是一种物理接口,而是一整套协议栈。从物理层的差分对,到协议层的帧格式,再到应用层的图像数据,每一层都有明确规范。
我记得刚入行时,有个老工程师跟我说:“搞懂MIPI,你就搞懂了一半的摄像头驱动。”当时不信,后来踩了无数坑,才明白这话有多对。
1.2 物理层基础
物理层,就是那些实实在在的硬件连线。MIPI CSI物理层基于D-PHY标准。
一个典型的CSI接口包含:
- 时钟线(CLK):一对差分线,提供高速传输的时钟基准
- 数据线(DATA):一对或多对差分线,传输实际数据
数据线的数量,决定了带宽。1-lane、2-lane、4-lane,这是咱们最常见的配置。RK3588甚至支持8-lane。
| 配置 | 数据线对数 | 典型带宽(每lane 1Gbps) | 常见应用 |
|---|---|---|---|
| 1-lane | 1 | ~1 Gbps | 低分辨率摄像头 |
| 2-lane | 2 | ~2 Gbps | 720p/1080p |
| 4-lane | 4 | ~4 Gbps | 4K/8K摄像头 |
个人经验:我建议你在选型时,留出30%的带宽余量。为什么?因为实际传输中,还有协议开销、时钟抖动、线缆损耗。我曾经在一个项目里,4-lane跑满了,结果温度一高就丢帧,后来换成8-lane才稳。
物理层还有个重要概念——LP模式和HS模式。LP是低功耗模式,用于控制指令;HS是高速模式,用于数据传输。两者通过电压摆幅区分。嗯,这里要注意:LP模式下电压摆幅大(约1.2V),HS模式下电压摆幅小(约200mV)。
1.3 协议层基础
协议层,就是数据怎么组织、怎么传输的规则。CSI-2协议层分三层:
- 像素/字节打包层:把原始图像数据打包成字节流
- LLP(Low Level Protocol)层:管理数据包的开始、结束、错误检测
- 通道管理层:管理多个数据流(比如同时传RAW图和YUV图)
数据在CSI链路上,是以包(Packet)为单位传输的。每个包分为:
- 短包(Short Packet):用于同步、帧开始、帧结束等控制信息
- 长包(Long Packet):包含实际图像数据,有包头、数据负载、CRC校验
我举个例子你就明白了。一帧图像传输,流程是这样的:
帧开始(短包) → 行数据1(长包) → 行数据2(长包) → ... → 行数据N(长包) → 帧结束(短包)
每个长包内部结构:
包头(4字节) → 数据负载(可变长度) → CRC校验(2字节)
包头里包含了数据类型(RAW8、RAW10、YUV422等)和数据长度。CRC校验用于检测传输错误。
避坑指南:我曾经在一个项目里,摄像头输出RAW10格式,但RK平台默认配置成了RAW8。结果图像全是花屏,查了三天才发现是数据类型配置错了。所以,数据类型一定要和摄像头模组规格书严格对应。
1.4 RK平台CSI控制器简介
RK平台的CSI控制器,集成在SoC内部。不同芯片型号,控制器版本和特性略有差异。
以RK3588为例,它包含:
- 2个CSI主机控制器:每个支持4-lane或8-lane
- 1个DPHY控制器:负责物理层信号处理
- 1个ISP(图像信号处理器):处理RAW数据
控制器的核心功能:
- 接收MIPI差分信号,转换为并行数据
- 解析协议层包结构,提取有效数据
- 支持多种数据类型(RAW8/10/12、YUV422、JPEG等)
- 提供DMA接口,把数据送到内存
下面这张图,是我画的一个简化架构,帮你理解数据流:
从图上你能看到,数据从摄像头出来,经过MIPI总线、DPHY、CSI主机,最后到内存或ISP。每个环节都可能出问题,这也是咱们后面调试的重点。
1.5 常见问题与调试思路
搞MIPI CSI,最常遇到的就是没图像或者图像花屏。我总结了几类常见问题:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 完全无数据 | 硬件连接、供电、时钟 | 检查原理图、测量电压、示波器看时钟 |
| 图像花屏 | 数据类型、分辨率、时序 | 核对寄存器配置、检查DT值 |
| 图像偏色 | Bayer格式、白平衡 | 确认RAW格式、检查ISP配置 |
| 帧率不足 | 带宽、DMA、中断 | 计算带宽、检查DMA传输效率 |
调试小技巧:我习惯先用示波器看MIPI时钟和数据线的波形。如果波形干净、摆幅正常,说明物理层没问题。然后再看协议层——RK平台提供了debugfs接口,可以查看CSI控制器的状态寄存器,比如帧计数、错误计数。这些信息对定位问题非常有帮助。
好了,这一章就到这里。MIPI CSI的基础概念,咱们已经捋了一遍。物理层、协议层、控制器架构,这些是后面所有配置和调试的根基。你心里有个谱就行。