在搞HDLC同步通信时遇到CRC问题

[复制链接]
 楼主| mackay 发表于 2009-4-15 17:14 | 显示全部楼层 |阅读模式
在做HDLC通信的时候,遇到CRC问题,请问有哪位对CRC熟悉的?<br />我所用到的CRC是CRC&nbsp;CCITT-1,请问这个“-1”是什么意思,是初始化时全为0还是全为1?<br />假如我发一下一个数组:<br />80,01,13,20,00,00,00,00,0D出去,这个校验是先放地位的字节进去还是高位字节进去?<br />小弟先多谢各位了。<br /><br />
 楼主| mackay 发表于 2009-4-16 18:12 | 显示全部楼层

我自己回答了,当作抛砖引玉

HDLC,是1bit,1bit发过去的,每一BYTE是8位(我现在使用的是8位),低位先发。CRC我使用的是CRC&nbsp;CCITT—1,这个“-1”的意思是CRC的初值为0Xffff。<br />我是使用z85c30作为HDLC的收发,CRC的计算从地址帧到信息帧计算。由于每一BYTE是低位先发,所以计算的时候,要把每一个BYTE的低位高位反过来,也就是说原来的D7变为D0,D0变为D7,D6变为D1,依次类推。0x80变为0X01等。计算出来的CRC,要每位取反。下面我是我发的一个数组。<br />80,01,13,30,00,<br />00,00,00,00,00,<br />00,00,00,00,00,<br />00,00,00,03,10,<br />31,00,00,00,00,<br />00,00,00<br />按照每位翻转后计算出来的CRC是0X7E62.<br />但这样发出去是不行的,还要将这个结果取反后<br />是0x894D<br />如果用示波器看的话,就是这个结果但要把这个CRC发出去,肯定死翘翘的,还要把这个拆分为MSB何LSB。然后将他们各高低位翻转过来,得出要发出去的CRC<br />这个CRC是0x91b2.<br />为什么我不用这个芯片上的硬件计算出来的CRC,因为我初始化不好,他发出来的结果不适合,所以关了。<br />我写到这里写完了,请问一下各位有谁有现成的将一个BYTE的各位翻转的程序啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

5

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部