阅读:1894回复:3
关于usb的crc校验问题
我对usb的crc校验一直搞不懂:
例如:addr=3,endpoint=2,计算出来的crc是0xf,到底是怎么算的呢? 一个连续的比特流是这样的:01 e1 03 79 表示同步码,pid,地址,端点,crc5 这个crc到底是怎么算的呢? 生成多项式是X^5+X^2+1 |
|
沙发#
发布于:2003-05-29 11:37
把同步去掉,这是一个OUT令牌包:e1 03 79
二进制:1110 0001 0000 0011 0111 1001 按USB规范,LSb在前,即 (1000 0111) (1100 000 0) (1001 1110) 再按Token包定义:(1000 0111) (1100 000) (0100) (11110) PID=0001 ~PID=1110即OUT TOKEN ADDR=000 0011即3 EP=0010即2 CRC5=01111即0xF |
|
板凳#
发布于:2003-05-29 14:39
谢谢iamchine
我今天算了一下,addr=3,endpoint=2时crc应该时0x1e 即:1 1110 按照usb的crc规范,好像是高位在前,这和别的正好相反,因此得到 (1100 000) (0100) (11110) addr endp crc5 |
|
地板#
发布于:2003-05-29 15:01
不会吧?!USB规范里那章说了CRC是MSb在前?好像它的比特流都是LSb在前啊。是不是计算还有问题?按你前一次计算结果倒是对的
|
|