1、MIPI基础概念

各位工程师朋友,咱们今天聊聊MIPI。说实话,我刚开始接触嵌入式Linux驱动时,看到MIPI这三个字母也是一头雾水。后来做了几个摄像头和显示器的驱动项目,才慢慢摸清门道。这一章,我就把自己踩过的坑和积累的经验分享给你。

1.1 MIPI联盟简介

MIPI联盟,全称是Mobile Industry Processor Interface Alliance。说白了,就是一群手机芯片公司凑在一起,想解决内部接口太乱的问题。2003年成立,ARM、Intel、三星、TI这些大佬都是创始成员。

为什么要搞这个联盟?你想想看,以前手机里摄像头、屏幕、基带芯片之间各说各话,接口五花八门。MIPI联盟的目标很明确——制定一套统一的、高速的、低功耗的接口标准。

核心要点:MIPI不是单一协议,而是一整套接口标准家族。包括物理层、协议层、软件层。咱们驱动开发最常打交道的,就是CSI(摄像头)和DSI(显示)这两个协议。

我个人习惯把MIPI联盟的工作分成三块:

  • 物理层标准:D-PHY、C-PHY、M-PHY,定义信号怎么传
  • 协议层标准:CSI-2/3、DSI/DSI-2,定义数据怎么组织
  • 软件层标准:I3C、Debug等,定义上层怎么控制

我在项目中遇到过最头疼的事,就是芯片厂商说"支持MIPI",结果连D-PHY的电压轨都没配对。嗯,这里要提醒你:MIPI联盟只定标准,具体实现还得看各家芯片的勘误手册。

1.2 MIPI CSI/DSI协议概述

CSI和DSI,这两个是咱们驱动工程师的"老熟人"。CSI是摄像头接口,DSI是显示接口。名字很像,但干的活完全不同。

CSI(Camera Serial Interface)

CSI协议,说白了就是告诉摄像头传感器怎么把图像数据传出来。目前主流是CSI-2,CSI-3也开始在一些高端芯片上出现。

版本 最大速率 数据通道 典型应用
CSI-1 80 Mbps 1 Lane 早期手机摄像头
CSI-2 v1.0 1 Gbps/Lane 1-4 Lane 主流手机、平板
CSI-2 v2.0 2.5 Gbps/Lane 1-4 Lane 高清摄像头
CSI-3 5.8 Gbps/Lane 1-4 Lane 车载、工业相机

CSI协议的数据流,我习惯用"三层结构"来理解:

  1. 物理层:D-PHY或C-PHY负责比特传输
  2. 协议层:定义数据包格式、帧结构、错误检测
  3. 应用层:定义图像格式(RAW、YUV、JPEG等)

避坑指南:我曾经在调试一个4K摄像头时,发现图像有撕裂。查了两天才发现,是CSI的虚拟通道(Virtual Channel)配置错了。多个摄像头共用同一组数据线时,VC ID必须一一对应,否则数据就串了。

DSI(Display Serial Interface)

DSI是给屏幕用的。它有两种工作模式:

  • 命令模式:像写寄存器一样,一帧一帧地刷数据。适合低帧率、小尺寸屏幕
  • 视频模式:实时流式传输,像流水线一样不停送数据。适合高帧率、大尺寸屏幕

DSI协议里有个概念叫"Lane数",这个很关键。我见过不少工程师,为了省引脚只接了2 Lane,结果屏幕刷新率上不去。我的建议是:如果芯片支持4 Lane,就别省那两根线。

1.3 MIPI物理层:D-PHY与C-PHY

物理层是MIPI的"地基"。D-PHY和C-PHY是两种不同的物理层实现,各有各的脾气。

D-PHY

D-PHY是目前最常用的。它用差分信号传输,一对线传一个信号。特点很鲜明:

  • 差分对:Dp/Dn两根线,抗干扰能力强
  • 两种模式:高速模式(HS)和低功耗模式(LP)
  • 时钟独立:有一根专门的时钟线(Clock Lane)

D-PHY的速率等级,我整理了一个表:

等级 HS速率 LP速率 电压摆幅
D-PHY v1.2 1.5 Gbps 10 Mbps 200 mV
D-PHY v1.4 2.5 Gbps 10 Mbps 200 mV
D-PHY v2.0 4.5 Gbps 10 Mbps 200 mV

注意:D-PHY的LP模式虽然慢,但省电。我在做低功耗摄像头项目时,就用LP模式做控制信号传输,HS模式只传图像数据。这样待机功耗能降30%以上。

C-PHY

C-PHY是后来出的,用三根线传信号。它没有专门的时钟线,时钟信息嵌在数据里。好处是:

  • 引脚更少:3根线顶D-PHY的2对线
  • 带宽更高:每根线能到5.7 Gbps
  • 无时钟歪斜:不用对齐时钟和数据

但C-PHY也有缺点。我在调试一个C-PHY接口的屏幕时,发现信号质量对PCB布线特别敏感。稍微有点阻抗不连续,眼图就闭合了。

D-PHY vs C-PHY 对比

对比项 D-PHY C-PHY
信号线 2根/通道(差分对) 3根/通道(三线)
时钟 独立时钟线 内嵌时钟
最大速率 4.5 Gbps 5.7 Gbps
功耗 较低 略高
PCB布线 要求中等 要求高
兼容性 最广泛 较新,支持少

我个人习惯:如果项目不赶时间,优先选D-PHY。生态成熟,调试工具多,遇到问题好找资料。C-PHY虽然快,但坑也多。

1.4 MIPI协议栈结构图

下面这张图,是我自己画的一个MIPI协议栈结构。你看一眼,就能明白各层之间的关系。

MIPI协议栈结构图 MIPI协议栈结构 应用层(Application Layer) 图像格式(RAW/YUV/JPEG) | 显示命令 | 传感器控制 协议层(Protocol Layer) CSI-2/CSI-3 | DSI/DSI-2 | 数据包格式 | 错误检测 物理层(Physical Layer) D-PHY | C-PHY | M-PHY | 差分信号 | 时钟恢复 硬件层(Hardware Layer) PCB布线 | 阻抗匹配 | 端接电阻 | ESD保护 驱动开发关注重点 • 应用层:配置图像格式、分辨率、帧率 • 协议层:配置虚拟通道、数据类型、CRC校验 • 物理层:配置电压、速率、Lane数、时钟极性

这张图我画了好几个版本,最后觉得这样最清楚。从上到下,应用层、协议层、物理层、硬件层,每一层都有自己该干的事。咱们写驱动,主要跟应用层和协议层打交道,但物理层和硬件层也得懂,不然出了问题都不知道从哪查起。

1.5 小结

这一章,咱们把MIPI的底子打好了。MIPI联盟是干嘛的,CSI和DSI有什么区别,D-PHY和C-PHY各有什么特点。这些概念,后面每一章都会用到。