部分是PH,包头:分别由Data ID、16bit的WC和ECC构成,对应功能如上图所示;
第二部分是包的有效数据;
第三部分是PF,即CHECKSUM;
其中,ECC采用的是HammingCode的方式,可以纠正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,还是PACKETDATA,或者CHECKSUM,都是先发低字节(LSB),再发高字节(MSB)!!!!对于一个具体的字节来说,也是先发低位,再发高位,如下图:
短包的结构比较简单,具体如下图所示:
短包只是将长包中的WC的位置作为包的数据域,也就是说,短包每次多只能发两个字节的数据。和长包一致,同样需要先发LSB,再发MSB。应当注意的是,短包一般是用来发送同步控制信号的,一般不建议使用短包来发送用户数据(当然你可以这样做)。
同步信号的类型如下:
而当Data Type为0x08到0x0F时,则为Generic Short Packet Code,即可发送用户自定义数据。
其中,DI的高两位表示虚拟通道号,低六位表示Data Type,如下图所示: