游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

GD32开发实战指南第18章CRC

  开发环境:
  MDK:Keil5。30
  开发板:GD32F207IEVAL
  MCU:GD32F207IK18。1CRC的校验原理
  循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32位全字的CRC计算结果。在其他的应用中,CRC技术主要应用于核实数据传输或者数据存储的正确性和完整性。标准ENIEC603351即提供了一种核实闪存存储器完整性的方法。CRC计算单元可以在程序运行时计算出软件的标识,之后与在连接时生成的参考标识比较,然后存放在指定的存储器空间。那么首先来看看CRC校验原理。18。1。1基本原理
  CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为npr位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。几个基本概念
  1、帧检验序列FCS(FrameCheckSequence):为了进行差错检验而添加的冗余码。
  2、多项式模2运行:实际上是按位异或(ExclusiveOR)运算,即相同为0,相异为1,也就是不考虑进位、借位的二进制加减运算。如:100110111100101001010001。
  3、生成多项式(generatorpolynomial):当进行CRC检验时,发送方与接收方需要事先约定一个除数,即生成多项式,一般记作G(x)。生成多项式的最高位与最低位必须是1。常用的CRC码的生成多项式有:
  每一个生成多项式都可以与一个代码相对应,如CRC8对应代码:100110001。18。1。2CRC检验码的计算
  设信息字段为K位,校验字段为R位,则码字长度为N(NKR)。设双方事先约定了一个R次多项式g(x),则CRC码:
  V(x)A(x)g(x)xRm(x)r(x)
  其中:m(x)为K次信息多项式,r(x)为R1次校验多项式。
  这里r(x)对应的代码即为冗余码,加在原信息字段后即形成CRC码。
  r(x)的计算方法为:在K位信息字段的后面添加R个0,再除以g(x)对应的代码序列,得到的余数即为r(x)对应的代码(应为R1位;若不足,而在高位补0)。
  计算示例:
  设需要发送的信息为M1010001101,产生多项式对应的代码为P110101,R5。在M后加5个0,然后对P做模2除法运算,得余数r(x)对应的代码:01110。故实际需要发送的数据是101000110101110。
  18。1。3错误检测
  当接收方收到数据后,用收到的数据对P(事先约定的)进行模2除法,若余数为0,则认为数据传输无差错;若余数不为0,则认为数据传输出现了错误,由于不知道错误发生在什么地方,因而不能进行自动纠正,一般的做法是丢弃接收的数据。
  【注】几点说明:
  1、CRC是一种常用的检错码,并不能用于自动纠错。
  2、只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小。
  3、仅用循环冗余检验CRC差错检测技术只能做到无差错接受(只是非常近似的认为是无差错的),并不能保证可靠传输。18。2GD32中的CRC
  所有的GD32芯片都内置了一个硬件的CRC计算模块,可以很方便地应用到需要进行通信的程序中,这个CRC计算模块使用常见的、在以太网中使用的计算多项式:
  写成16进制就是:0x04C11DB7
  使用这个内置CRC模块的方法非常简单,既首先复位CRC模块(设置CRCCR0x01),这个操作把CRC计算的余数初始化为0xFFFFFFFF;然后把要计算的数据按每32位分割为一组数据字,并逐个地把这组数据字写入CRCDR寄存器(既下图中的绿色框),写完所有的数据字后,就可以从CRCDR寄存器(既下图中的兰色框)读出计算的结果。
  下面是用C语言描述的这个计算模块的算法,大家可以把它放在通信的另一端,对通信的正确性进行验证:DWORDdwPolynomial0x04c11db7;DWORDcalcrc(DWORDptr,intlen){DWORDxbit;DWORDdata;DWORDCRC0xFFFFFFFF;initwhile(len){xbit131;dataptr;for(intbits0;bits32;bits){if(CRC0x80000000){CRC1;CRCdwPolynomial;}elseCRC1;if(dataxbit)CRCdwPolynomial;xbit1;}}returnCRC;}
  有几点需要说明:
  1)上述算法中变量CRC,在每次循环结束包含了计算的余数,它始终是向左移位(既从最低位向最高位移动),溢出的数据位被丢弃。
  2)输入的数据始终是以32位为单位,如果原始数据少于32位,需要在低位补0,当然也可以高位补0。
  3)假定输入的DWORD数组中每个分量是按小端存储。
  4)输入数据是按照最高位最先计算,最低位最后计算的顺序进行。
  例如:
  如果输入0x44434241,内存中按字节存放的顺序是:0x41,0x42,0x43,0x44。计算的结果是:0xCF534AE1
  如果输入0x41424344,内存中按字节存放的顺序是:0x44,0x43,0x42,0x41。计算的结果是:0xABCF9A6318。3CRC寄存器描述数据寄存器(CRCDRTA)
  CRCDATA用于接收待计算的新数据,直接将其写入即可。刚写入的数据不能被读出来,因为读取该寄存器得到的是上次CRC计算的结果。独立数据寄存器(CRCFDATA)
  注:此寄存器不参与CRC计算,可以存放任何数据。控制寄存器(CRCCTL)
  CRCCTL用来复位CRCDATA寄存器,设置其值为0xFFFFFFFF,然后该位被硬件自动清零。该位对CRCFDATA寄存器没有影响。18。4CRC具体代码实现
  代码很简单。briefmainfunctionparam〔in〕noneparam〔out〕noneretvalnoneintmain(void){systickinitsysTickinit();usartinit1152008N1cominit(COM1,115200,0,1);printf(CRCTest);EnableCRCclockrcuperiphclockenable(RCUCRC);ComputetheCRCofDataBufferCRCValuecrcblockdatacalculate((uint32t)DataBuffer,BUFFERSIZE);printf(r32bitCRCcheckcode:0xX,CRCValue);while(1){delayms(1000);}}
  就使用了crcblockdatacalculate()函数,传入一个要计算的数据和大小,就得到了计算的CRC值。18。5实验现象
  将编译好的程序下载到板子中,通过串口助手可以看到如下现象。
  然后使用CRC计算工具来计算。
  可以看到和软件计算的一致。
  值得注意的是,STM32的硬件CRC的结果异或值是0x00000000。
  【注】关于CRC的更多内容可以自行查阅相关资料,笔者这里推荐一篇文章APAINLESSGUIDETOCRCERRORDETECTIONALGORITHMS,感兴趣的朋友自己去看看吧。

1955年评衔时,伟人对贺龙的评价令人沉思贺龙他可是个好配角建国后不久我国就开始商议有关授衔仪式的事宜了,但是后来1951年抗美援朝战争爆发,有关授衔仪式的事情就被耽搁了下来,后来抗美援朝战役结束后,这件事才又被重新提了起来,很快,组织……毛泽东和十大元帅的合影,毛主席和谁最先认识?怎么评价元帅们?十大元帅军装图。1955年9月27日,中国人民解放军举行首次授衔仪式。按照《军官服役条例》规定,对创建和领导人民武装力量或领导战役军团作战、立有卓越功勋的朱德、彭德……熊向晖意外暴露后,胡宗南为何装傻不动他?沈醉回忆录道出原委被毛主席称为一个人可以顶几个师的熊向晖,是被周恩来亲自安排到胡宗南身边的,身为胡宗南的秘书,熊向晖多次向党送出重要情报,成为共产党转危为安的重要保障。熊向晖深受胡宗南的信任,后……这些不良生活习惯,悄悄埋下了疾病的种子医生,我这个病是怎么得的啊?平时我身体挺好的啊,从来没住过院。很多人去医院看病时,总会不自觉地问医生这样一句话。其实,哪会有突然出现的病,很多疾病背后都藏着一个或者……中医育儿雨水节气中医养生,祛湿邪,养阳气中医育儿:雨水节气中医养生,祛湿邪,养阳气(果雪儿24节气中医养生系列)中医育儿群的家长朋友:您好。七九八九雨水节,今天(2月19日),进入了今年的第二……大马丁谈不雅动作美洲杯做过,梅西他们说我不敢再做,我又做一遍2月11日消息,在卡塔尔世界杯夺冠之后,阿根廷门将达米安马丁内斯的系列过激庆祝引发了巨大争议,国际足联也展开调查。日前,大马丁在接《法国足球》专访,谈到了当时的情况。在阿……辽篮敲定韩德君接班人!意中人不是周琦,2米25高塔进入辽篮视CBA休赛期各种转会传闻满天飞。但比较靠谱并且有分量级的交易并不多。更多的都停留在口头意向方面。作为CBA冠军辽宁队来说,当务之急是需要寻找到主帅韩德君的接班人。从上赛季整个联……江渭清回忆抗战初期向湖南省省长张治中借2000大洋军饷尤其令我终生难忘的是,大会开幕前,毛主席、周总理和党中央其他领导同志来到代表团下榻的六国饭店,看望全体到会代表,向大家亲切问候。毛主席还曾兴致勃勃地让我陪着他散步聊天。当时,张……金卡戴珊穿着闪光卫衣和运动短裤外出,她看起来时髦又性感金卡戴珊穿着一件前卫的皮衣,搭配巴黎世家x阿迪达斯的卫衣和长筒靴,她开着定制的兰博基尼去洛杉矶办公室,看上去很炫酷。周二晚上,金卡戴珊开着她奢华的跑车去洛杉矶的办公室,完……志愿军阵亡人数与日俱增,毛主席派一人前往朝鲜战场,扭转了局势抗美援朝战争中,中国志愿军在党中央的指挥下雄赳赳气昂昂地跨过鸭绿江,决心以壮士断腕的决心与敌人展开殊死搏斗。虽然这一战对于中方来说是正义之战,也是为了国家主权不得不打的一……他是陈毅的儿子,妻子是粟裕的女儿,46岁时下海经商,非常成功我国十大元帅之一的陈毅一生都非常传奇,既是人民解放军的创建人和领导人,又是在战场上令敌人闻风丧胆的伟大军事家,一生为国奉献无数。所以当陈毅之子的陈小鲁出生之际,所有人都对……如果没有秦始皇,你们知道今天的中国会变成什么吗?如果没有秦始皇,你们知道今天的中国会变成什么吗?看看现在的欧洲,去了欧洲以后,你会发现,欧洲十几个国家,什么英国,什么德国,什么瑞士,什么荷兰,这些所有的国家,没中国一个省大,……
官场没有背景,就自己打造一个背景熊向晖那年18岁,清华还没毕业,全面抗战爆发,党组织指示他报考胡宗南组建的湖南战地服务团,寻找机会进入胡宗南的第一军。组织上当时就是布个闲棋冷子,不可能想到、也没有指望他……清朝灭亡时,仍欠列强7。3亿两白银,这一笔烂账,最终怎么解决最后的几十年,清王朝大抵只干了两件事。一,割地赔款。二,准备下一次割地赔款。自1840年鸦片战争始,70年间就有30多个不平等条约,桩桩件件,无一不是丧权辱国……蜜雪冰城上市再进一步,新茶饮竞争进入下半场在广发证券披露上市辅导情况不久,9月22日,蜜雪冰城股份有限公司(简称蜜雪冰城)披露招股书。这意味着在接受辅导一年后,蜜雪冰城正式进入申报阶段。新茶饮企业上市早有先例,奈……捂好你的钱包!元气骑士5周年庆皮肤速报,梗点多多特效美爆大家好!我是元气老骑士:元气宅。如果您是一位资深的《元气骑士》玩家,那么一定对近期凉屋游戏这一反常态的举动,有所留意吧?要知道作为一款以赛季更新为卖点的经典手游,凉屋游戏……应该淘汰纯燃油车!华为余承东,又在拉踩公开拉踩燃油车,成了造车圈子的基操?7月7日,华为常务董事、智能汽车解决方案BUCEO余承东在第十四届中国汽车蓝皮书论坛上直言,中国汽车产业应该尽快淘汰纯燃油车。至……美国原子弹炸死日本数万人,为何英方却说原子弹救了日本人?第二次世界大战给各个国家都带来了深重的灾难,丧生于这场战争的士兵和无辜百姓加起来有将近两亿人,比日本的人口总数还要多,战争尘埃落定之后,很多人开始就这段沉痛过去进行回忆和反思,……他曾担任北京市市长,功勋卓越,是老百姓心中的好官,活到1052012年,我党在北京召开了十八大,值得一提的是,十八大一共产生了2270名代表,那么,大家知道在十八大的所有代表当中,谁的年龄最大吗?此人就是焦若愚,曾经担任过北京市市长,作……Steam2022年度最佳VR游戏榜单TOP40公布(映维网Nweon2022年12月30日)Steam日前正式公布了2022年的年度最佳榜单,一共六个类别,包括最最畅销游戏,新品,最热玩游戏,抢先体验毕业作品,最佳VR游戏和S……二战日军为何喜欢留一小撮胡子?不仅卫生整洁,关键时刻还能救命要说近现代的第一个网红,当属德国的战争元凶希特勒了。20世纪初,128米的无线电塔刚搭建起来,无线电广播开始在人类史上熠熠生辉。这项技术从美国传到了大洋彼岸的德国,希特勒开始在……感恩有你,云麦科技运动健康好物时刻伴你身边每到年末,很多人都会向亲友送礼表达心意,一件精心挑选的礼物能传递出弥足珍贵的情感。在现如今全球疫情仍未结束的情况下,送礼送健康是对家人朋友们最好的关怀。例如以专业产品和创新技术……牡检党史小课堂丨创造红色特工传奇,逼得日军写下专打386旅这他是黄埔三杰之一是常胜将军是开国大将他身经百战,智勇双全具有卓越的军事领导才能和高超的军事指挥艺术中央红军长征中他率部参加强渡乌江、争……她是日本人却远嫁到中国,从不让孩子学日语,生下子女个个是人杰她的一生,不断地与命运抉择,这双眼见识过抗日战场后备救助站战斗后死伤得惨烈,心中怀揣弥足珍贵的大义;这只手温柔地抚育了五个孩子的成长,秉承着只用汉语原则,时间是她应对质疑最好的……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网