Felix

技术源于积累,成功始于执着!

MIPI扫盲——CSI-2介绍(三)

0
阅读(97) 评论(0)

目录篇地址:http://blog.chinaaet.com/justlxy/p/5100052503 

MIPI CSI-2d的Low Level Protocol主要有一下特征:

  • Transport of arbitrary data (Payload independent)

  •  8-bit word size

  • Support for up to four interleaved virtual channels on the same link

  • Special packets for frame start, frame end, line start and line end information

  • Descriptor for the type, pixel depth and format of the Application Specific Payload data

  • 16-bit Checksum Code for error detection.

CSI-2的Data Lane的Low Level Protocol数据包的一般形式为:

blob.png

如上图所示,也就是说,CSI-2的数据包有两种:长包和短包。无论是长包还是短包,包的开头都是SoT(Start of

 Transmission),包的结尾都是EoT(End of Transmission)。此外,长包的SoT之后还有包头(PH,Packet Header),EoT之前还有包尾PF(Packet Footer)。在两次HS传输过程之间,插入的是LP状态(一般是LP11等Control状态,当然也可以进入Escape状态进行LPDT或者进入UPLS)。

一个长包的基本结构如下图所示:

blob.png

  • 第一部分是PH,包头:分别由Data ID、16bit的WC和ECC构成,对应功能如上图所示;

  • 第二部分是包的有效数据;

  • 第三部分是PF,即CHECKSUM;

其中,ECC采用的是Hamming Code的方式,可以纠正PH(包头)中一位的错误或者发现两位的错误,具体可以看一下我之前转发的博文:http://blog.chinaaet.com/justlxy/p/5100052453

而CHECKSUM采用的则是CCITT的16-bit的CRC校检,即x^16+x^12+x^5+x^0。CRC只能检测数传输发生的一个或者多个错误,但是并不能纠正错误。具体可以参考这篇文章:http://blog.chinaaet.com/justlxy/p/5100052477

需要注意的是,无论是WC,还是PACKET DATA,或者CHECKSUM,都是先发低字节(LSB),再发高字节(MSB)!!!!对于一个具体的字节来说,也是先发低位,再发高位,如下图:

image.png

短包的结构比较简单,具体如下图所示:

blob.png

短包只是将长包中的WC的位置作为包的数据域,也就是说,短包每次最多只能发两个字节的数据。和长包一致,同样需要先发LSB,再发MSB。应当注意的是,短包一般是用来发送同步控制信号的,一般不建议使用短包来发送用户数据(当然你可以这样做)。

同步信号的类型如下:

blob.png

而当Data Type为0x08到0x0F时,则为Generic Short Packet Code,即可发送用户自定义数据。

其中,DI的高两位表示虚拟通道号,低六位表示Data Type,如下图所示:

blob.png

虚拟通道(VC,Virtual Channel)技术使得CSI-2可以在同一个Lane发送不同类型的数据,然后在接收端在进行恢复,如下图所示:

blob.png

举例如下:

blob.png

前面说到过,短包用来发同步控制信号,长包用来发数据,比如下面的例子,短包发帧同步信号,长包发数据:

blob.png