官方淘宝店 易迪拓培训 旧站入口
首页 > 无线通信 > 通信技术学习讨论 > 请教一个crc的问题

请教一个crc的问题

01-04
串行crc,要求初值为0xFF:如果初值为0xFF,是不是需要在发送前将crc计算所得的余数取反再发送?接收端收到以上数据后做crc校验时,是不是最后余数是0xFF(不是0x0)才代表传输无误?
   对crc算法没有太深的理解,针对初值为0xFF的情况试了一下似乎是的,请教大牛帮忙确认,谢谢!

是你自己的系统还是什么标准的系统?
一般把算好了CRC传过去,接收端同样按照0xFF的初值进行计算,看看一样不一样或者把CRC也算进去看看是不是0x0

不是什么标准系统,拿着另一家公司的要求做,一个master chip一个slave。
     是的,如果是前一种校验没有问题,如果是后一种,我试了一下,不取反添上crc一起算后不是0x0,取反算也只能得到0xFF。

你说的前一种和后一种是指?

前一种是说接收端用相同的算法算出crc,跟接收到的crc作比较,后一种是把crc值拿进来运算。

后一种也把0xFF作为初值吗?
如果是的话,应该和前一种没有区别吧
毕竟算到CRC之前,应该是和CRC的值一致的

是的,后一种也是0xff作为初值,算到crc之前跟没有取反的crc值相同,再加上crc后就不是0了。

那至少能用了吧?
加上CRC算出来是零需要什么条件我也不清楚,有的确实可以把CRC放进去一起算看是不是0(也需要求初值是0),不过一般的方法都是比较CRC是不是相同吧?

把crc部分bit顺序反过来试试呢?

CRC有标准的校验算法,走标准就行了

我的生成多项式也是客户定的,所以校验算法也不好用标准的,不过可以借鉴一下标准的校验算法,请问哪里可以查到?

百度

Top