OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5899|回复: 4

STM32F103的CRC-8校验问题

[复制链接]

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-4-9
在线时间
14 小时
发表于 2016-4-24 19:25:57 | 显示全部楼层 |阅读模式
20金钱

这是别人贴给我的一段CRC-8检验代码,生产多项式为X8+X2+X1+1.但是我看了一下午了整个代码也查了CRC的资料。。。就是没弄明白,有没有大侠能帮忙讲一下。跪谢!!!




unsigned char PEC_calculation(unsigned char pec[])
{
    unsigned char         crc[6];
    unsigned char        BitPosition=47;
    unsigned char        shift;
    unsigned char        i;
    unsigned char        j;
    unsigned char        temp;

    do{
        crc[5]=0;          /* Load CRC value 0x000000000107 */
        crc[4]=0;
        crc[3]=0;
        crc[2]=0;
        crc[1]=0x01;
        crc[0]=0x07;
        BitPosition=47;          /* Set maximum bit position at 47 */
        shift=0;               
        //Find first 1 in the transmited message
        i=5;                /* Set highest index */
        j=0;
        while((pec[i]&(0x80>>j))==0 && i>0)
         {
          BitPosition--;
          if(j<7){ j++; }
          else{ j=0x00; i--;}
         }
        shift=BitPosition-8;        /*Get shift value for crc value*/
               
        while(shift)
         {
          for(i=5; i<0xFF; i--)
           {
            if((crc[i-1]&0x80) && (i>0)){ temp=1;}
            else{ temp=0;}
            crc[i]<<=1;
            crc[i]+=temp;
           }
          shift--;
         }

        //Exclusive OR between pec and crc               
        for(i=0; i<=5; i++){ pec[i] ^=crc[i];}/*End of for*/
        }while(BitPosition>8);
        return pec[0];

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-4-25 23:29:12 | 显示全部楼层
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-4-9
在线时间
14 小时
 楼主| 发表于 2016-4-30 21:13:49 | 显示全部楼层

没人呀,原子哥能帮讲嘛
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-5-1 10:57:58 | 显示全部楼层
571420670 发表于 2016-4-30 21:13
没人呀,原子哥能帮讲嘛

帮不到,我也不懂
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-4-9
在线时间
123 小时
发表于 2016-5-1 11:08:07 | 显示全部楼层
一般都用crc16的 那个东西直接用现成的函数就行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 20:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表