• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32的crc功能怎么用?

冷月清风 2018-08-07 浏览量:2264
STM32的crc功能怎么用?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • CRC功能是使用在某个外设上的 ,单独使用没有意义,主要是检查数据的正确性的。
    所有的STM32芯片都内置了一个硬件的CRC计算模块,可以很方便地应用到需要进行通信的程序中,这个CRC计算模块使用常见的、在以太网中使用的计算多项式:
      X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1
    写成16进制就是:0x04C11DB7

    看看这里
    http://www.360doc.com/content/14/1209/11/6828497_431500916.shtml
    • 发布于 2018-09-03
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:15
  • 好像就是设置好初始值后直接将数据写入寄存器.
    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个功能计时使用单片机内部的CRC计算模块,通常是用于通讯数据校验的。发送端在发送数据报文的时候,在发送完数据段后,可是使用CRC模块自动计算出你本次要发送数据报文的CRC码,然后接收端接收到数据后,也使用CRC模块计算出本次接收到的数据的CRC码,对比是否正确。正确就是本次通讯没有丢包。如果接收端计算出的CRC码和发送端的CRC码不一致,表明本次通讯出错。丢弃数据。但是在这里要注意的是,接收端和发送端的CRC计算方式要一致,不然没办法使用。如果两个STM32的单片机通讯的话,就可以使用内部CRC模块。其他的没试过。
    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。
    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 看看硬件模块有没有支持,一般情况自己去实现一个就行,
    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般crc都是通过软件计算得出,这个硬件crc可以自己计算,不耗mcu,只要输入crc参数就行了
    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • crc一般用于通信、存储等的校验,以保障处理过程中数据完整,不被篡改。

    stm32的crc功能是指专门对此有优化,比如有专门的指令进行相应处理,以减少cpu消耗。

    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种是硬件的CRC单元,直接调用库里面的相关接口函数就行,参考https://blog.csdn.net/liyuanbhu/article/details/8746044
    • 发布于2018-08-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以用stm32的库调用内部的硬件CRC,具体的代码可以参考一下原子的例程
    • 发布于2018-08-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个模块是为是校验通讯的数据的准确度的,当数据不对时,发出状态,丢掉数据
    • 发布于2018-08-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个就是硬件CRC校验,设置好参数,比如多项式系数,CRC位数等,把需要计算CRC的数据传入即可获得CRC校验值。

    假设我们的生成多项式为:100110001(简记为0x31),也就是CRC-8
    则计算步骤如下:
    (1)      将CRC寄存器(8-bits,比生成多项式少1bit)赋初值0
    (2)      在待传输信息流后面加入8个0
    (3)      While (数据未处理完)
    (4)      Begin
    (5)          If (CRC寄存器首位是1)
    (6)              reg= reg XOR 0x31
    (7)          CRC寄存器左移一位,读入一个新的数据于CRC寄存器的0 bit的位置。
    (8)      End
    (9)      CRC寄存器就是我们所要求的余数。

    • 发布于2018-08-26
    • 举报
    • 评论 0
    • 0
    • 0

  • stm32内部自动一个硬件CRC,你可以使用内部的CRC模块
    • 发布于2018-08-28
    • 举报
    • 评论 0
    • 0
    • 0

  • crc功能是对于一组数的校验的,可以检测这组数有没有传输错误,但只能检测错误而不能修复错误,stm32使用crc直接通过寄存器使能就行了。
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 0
    • 0

  • CRC只是一个校验码的东西  主要配合数据传输一起使用   你配置好寄存器开启CRC校验  就行了  硬件会自己搞定
    • 发布于2018-09-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32的crc功能怎么用?