MIPI扫盲——CSI-2介绍(三)
0赞目录篇地址:http://blog.chinaaet.com/justlxy/p/5100052503
MIPI CSI-2的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数据包的一般形式为:
如上图所示,也就是说,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)。
一个长包的基本结构如下图所示:
第一部分是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)!!!!对于一个具体的字节来说,也是先发低位,再发高位,如下图:
短包的结构比较简单,具体如下图所示:
短包只是将长包中的WC的位置作为包的数据域,也就是说,短包每次最多只能发两个字节的数据。和长包一致,同样需要先发LSB,再发MSB。应当注意的是,短包一般是用来发送同步控制信号的,一般不建议使用短包来发送用户数据(当然你可以这样做)。
同步信号的类型如下:
而当Data Type为0x08到0x0F时,则为Generic Short Packet Code,即可发送用户自定义数据。
其中,DI的高两位表示虚拟通道号,低六位表示Data Type,如下图所示:
虚拟通道(VC,Virtual Channel)技术使得CSI-2可以在同一个Lane发送不同类型的数据,然后在接收端在进行恢复,如下图所示:
举例如下:
前面说到过,短包用来发同步控制信号,长包用来发数据,比如下面的例子,短包发帧同步信号,长包发数据: