文章目录
- 1. 背景
- 2. 概念介绍
- 2.1 HS 模式 和 LP 模式
- 2.2 连续模式时钟和非连续模式时钟
- 3. 长短包
- 3.1 数据格式
- 3.2 数据类型 (DI)
- 4. 波形图示
1. 背景
嵌入式领域中,很多高速、大数据通常都会使用mipi接口进行传输,如sensor、毫米波雷达等,mipi 协议包含D-PHY 和 C-PHY 架构,其中D-PHY使用1对源同步差分时钟和多对差分数据线进行数据传输,采用双边沿DDR进行数据采样。C-PHY不同于传统差分信号线,它采用三根信号线之间的差分作为信号判断,实现更高带宽的数据传输。本文主要进行记录D-PHY调试中相关的理解。
2. 概念介绍
2.1 HS 模式 和 LP 模式
通道支持高速(HS)和低功耗(LP)两种工作模式。HS模式以低压差分信号传输高数据速率,而LP模式则以单端信号实现低功耗。HS 模式下采用低压差分信号,功耗较大,但是可以传输很高的数据速率(数据速率为 80M~4.5Gbps),支持 100mV 到 300mV 的电压范围;LP 模式下采用单端信号,数据速率很低(<10Mbps),但是相应的功耗也很低,支持0V到1.2V信号电平。
上图中HS模式就是方波的 低脉冲期间,需要将低脉冲放大看,就可以看到低脉冲上的摆动了,见上面的第二张图。
2.2 连续模式时钟和非连续模式时钟
连续模式时钟全部工作在 HS 模式,非连续模式就是上图中情况,会在不发数据的时候,clk 进入 LP 模式。
使用示波器测到的 连续模式下 clk 波形如下:
ps : 关于波形是类正弦波,非方波,搜索了一下,大致是说,硬件电路会把高频谐波部分削除,以及电路中交流耦合电容(如 100 nF)隔离直流,使信号在零附近摆动,进一步削弱方波的“平顶”特征,使其看起来像正弦波。
3. 长短包
3.1 数据格式
- 短包:ST+SP(32bit)+ET
- 长包:ST+PH(32bit)+DATA+PF(16bit)+ET
包之间必须通过LPS间隔,具体为上一包恢复LP11,再LP11-LP01-LP00进入下一包。 - SOT:Start-of-Transmission,传输起始,8bit序列00011101 (0x1d)。
- EOT:End-of-Transmission,传输结束,为最后一个数据 bit 的取反。
SOT 是进入高速 (HS) 模式后必须发送的第一个字节,用于同步接收器。
短包:SoT + 32 位数据 + EOT(最后一位取反)
长包:SoT + 包头 + 数据 + 包尾 + EOT(最后一位取反)
- PH:packet head,长包的包头,32bit。
具体包括:DI 8bit(2bit虚拟通道+6bit数据类型);WC 16bit,指示后续数据byte数;ECC 8bit(实际6bit,高2bit补0)为DI+WC 24bit的校验值。 - SP:short packet,短包32bit,结构和PH基本一样,区别在短包不接数据,所以中间16bit不是byte数而是附带信息, 通常为帧号。
- 长包形式为PH+DATA+PF,其中:
- DATA:packet data数据,以Byte为单位。
- PF:packet footer包尾,内容为checksum ,即packet data部分的CRC校验值。
这里截取sensor 手册内容展示包结构:
3.2 数据类型 (DI)
其低6bit为数据类型编码, 高2bit 用于VC 通道号标识,用于区分不同的类型的图像数据。
| Data Type | Description |
|---|---|
| 0x00 to 0x07 | Synchronization Short Packet Data Types |
| 0x08 to 0x0F | Generic Short Packet Data Types |
| 0x10 to 0x17 | Generic Long Packet Data Types |
| 0x18 to 0x1F | YUV Data |
| 0x20 to 0x27 | RGB Data |
| 0x28 to 0x2F | RAW Data |
| 0x30 to 0x37 | User Defined Byte-based Data |
| 0x38 to 0x3F | Reserved |
a)列举短包常用数据类型,帧起始FS、帧结束FE、行起始LS、行结束LE,协议要求必须有帧标识包,可以没有行标识包。
| Data Type | Description |
|---|---|
| 0x00 | Frame Start Code |
| 0x01 | Frame End Code |
| 0x02 | Line Start Code (Optional) |
| 0x03 | Line End Code (Optional) |
b)长包数据类型主要包括RGB、YUV、RAW类型,以RAW灰度为例列举,RAW后数字指每个像素点的bit数,其他可以参照手册。
| Data Type | Description |
|---|---|
| 0x28 | RAW6 |
| 0x29 | RAW7 |
| 0x2A | RAW8 |
| 0x2B | RAW10 |
| 0x2C | RAW12 |
| 0x2D | RAW14 |
4. 波形图示
MIPI D-PHY 在高速模式下采用 LSB 优先(LSB first) 的传输顺序, 即先传输一个Byte 的 bit0,采集端先收到的也是 bit0。
- 短包
波形中可以看到完整流程,白色标注为具体时序阶段。
重点关注下图中HS驱动部分,数据lane双边沿输出,时钟和数据lane错半个相位。第1个红框为SoT序列00011101,第2个红框为数据,然后EoT是前最后1bit的反转。
数据先发低位,可以看到4lane数据为0x0、0x1、0x0、0x1a,其中:
[7:0]=0,指示虚拟通道0,数据类型为FS,帧开始。
[23:8]=1,指示帧号为1。
[31:24]=0x1a,为ECC校验值。
- 长包
长包的完整流程和短包相似,主要区别在HS部分,第1个红框为SoT序列先不看,后面可以看到lane0、1传输3Byte,lane2、3传输2Byte,共计10Byte,构成是包头4Byte+数据4byte+校验2Byte。
包头4Byte,第2红框列,0x2a对应数据类型RAW8,0x00 以及0x04 组合的16bit wc 值 0x0004 对应数据长度4Byte,0x33对应ECC。
数据4Byte,第3红框列,对应数据4Byte分别为0x1、0x2、0x3、0x4。
校验2Byte,第4红框列,组合起来是0xc66e,为0x04030201的CRC值。
ps: LSB 先行,采集的时间上是从左往右(bit0 --> bit7)。
参考:
- MIPI CSI-2 (2)HS模式 传输详解和波形图