CRC计算 
CRC校验仅用于保证全双工通信的可靠性。数据发送和数据接收分别使用单独的CRC计算器。
通过对每一个接收位进行可编程的多项式运算来计算CRC。CRC的计算是在由SPI_CR1寄存器
中CPHA和CPOL位定义的采样时钟边沿进行的。 
注意:   该SPI接口提供了两种CRC计算方法,取决于所选的发送和/或接收的数据帧格式:8位数据帧采
用CR8;16位数据帧采样CRC16-CCITT。 
CRC计算是通过设置SPI_CR1寄存器中的CRCEN位启用的。设置CRCEN位时同时复位CRC寄
存器(SPI_RXCRCR和SPI_TXCRCR)。当设置了SPI_CR1的CRCNEXT位,SPI_TXCRCR的内
容将在当前字节发送之后发出。 
注意:   在传输SPI_TXCRCR的内容时,如果在移位寄存器中收到的数值与SPI_RXCRCR的内容不匹
配,则SPI_SR寄存器的CRCERR标志位被置1。如果在TX缓冲器中还有数据,CRC的数值仅在
数据字节传输结束后传送。在传输CRC期间,CRC计算器关闭,寄存器的数值保持不变。 
注意:   请参考产品说明书,以确认有此功能(不是所有型号都有此功能)。 
SPI通信可以通过以下步骤使用CRC: 
●  设置CPOL、CPHA、LSBFirst、BR、SSM、SSI和MSTR的值; 
●  在SPI_CRCPR寄存器输入多项式; 
●  通过设置SPI_CR1寄存器CRCEN位使能CRC计算,该操作也会清除寄存器SPI_RXCRCR 
和SPI_TXCRC; 
●  设置SPI_CR1寄存器的SPE位启动SPI功能; 
●  启动通信并且维持通信,直到只剩最后一个字节或者半字; 
●  当把最后一个字节或半字写进发送缓冲器,设置SPI_CR1的CRCNext位,指示硬件在最后
一个数据字节发送完成后,发送CRC。在发送CRC期间,CRC计算停止; 
●  当最后一个字节或半字被发送后,SPI发送CRC,CRCNext位被清除。同样,接收到的
CRC和SPI_RXCRCR值进行比较,如果比较不相配,SPI_SR上的CRCERR标志被置位,
当设置了SPI_CR2寄存器的ERRIE时,则产生中断。 
注意:   当SPI时钟频率较高时,用户在发送CRC时必须小心。因为在CRC传输期间,使用CPU的时间
应尽可能少。为了避免在接收最后的数据和CRC时出错,在发送CRC过程中应禁止函数调用。 
  当SPI时钟频率较高时,建议采用DMA模式以避免SPI速度性能的降低。 
  当STM32F10xxx配置为从模式并且使用了NSS硬件模式,NSS管脚应该在数据传输和CRC传输
期间保持为低。

STM32的CRC计算相关推荐

  1. STM32CubeIDE开发(十), stm32的CRC计算CubeMX配置及HAL库底层实现分析

    一.stm32的CRC 1.1 CRC的简介及MCU关联说明 STM32的CRC(Cyclic Redundancy Check,循环冗余校验)计算单元使用一个固定的多项式发生器,从一个32位的数据字 ...

  2. crc 校验错误_资深工程师:图说CRC原理应用及STM32硬件CRC外设

    在嵌入式产品应用中,常常需要应对系统数据在存储或者传输过程中的完整性问题.所谓完整性是指数据在其生命周期中的准确性和一致性.这些数据可能存储在EEPROM/FLASH里,或者基于通信协议进行传输,它们 ...

  3. 使用Python写的CRC计算工具

    公司需要加入域,强迫安装了McAfee杀毒软件,把我常用的一个CRC计算工具给删了,还无法添加白名单,心中千万只草拟吗.所以只好自己写一个同时支持字符串和文件的CRC16/32计算工具. 已打包好的执 ...

  4. STM32 CAN波特率计算

    STM32 CAN波特率计算 简介 CAN总线收发,中断方式接收配置 代码部分 reference 简介 CAN通信帧共分为数据帧.远程帧.错误帧.过载帧和帧间隔,本文这里以数据帧为例. 显性电平对应 ...

  5. 不同开发语言 CRC 计算 CRC-16/XMODEM

    做的软件需要个单片机打交道,通讯走的TCP里面校验数据CRC了. 因为用到了不同语言,所以整理下这块的使用. 1. go 语言 CRC 计算 CRC-16/XMODEM var crc16tab = ...

  6. CRC校验工具 校验码自动生成软件支持十几种CRC计算方式

    CRC校验工具 校验码自动生成软件支持十几种CRC计算方式,包括MODBUS协议的CRC-16校验,CRC4.CRC5.CRC6.CRC7.CRC8.CRC16等21种算法,见图示.id=620738 ...

  7. Linux 大文件crc计算,CRC计算方法与C实现

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验.它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制.实际上,除数据通 ...

  8. STM32 定时器定时计算

    STM32 定时器定时计算 STM32 定时器频率 例子 公式 reference STM32 定时器频率 定时时间 = 定时器频率 / 倍频 /装载周期 htim1.Init.Prescaler = ...

  9. STM32开发 -- CRC校验码

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/79518638 通信协议里有CRC校验码,计算从报文的起始字节到报文内容最后一 ...

最新文章

  1. html离开页面时,js实现用户离开页面前提示是否离开此页面的方法(包括浏
  2. 追根究底之追本溯源:光标
  3. Bmob图片上传遇到的坑
  4. Taxlive2020安装~新手向
  5. swfheader 0.10 Released(已更正下载地址)
  6. 解读腾讯极速高清AR-SR的画质改善机制
  7. Oracle11gR2_ADG管理之恢复主库的truncate表实战
  8. kotlin 复制对象属性_Kotlin 怎么学 ?遇到过哪些坑?
  9. 火星上首座虚拟房屋以超过50万美元价格售出
  10. 【网络信息安全】网络信息安全概述
  11. linux 设置防火墙ip网段,网络防御-防火墙设置IP网段规则
  12. SpringBoot日志
  13. PyCharm4注册码
  14. 微信小程序登录获取手机号获取不到偶发性问题
  15. jQuery ajax 请求 和 Submit 提交 form 表单
  16. Josephus问题(最后一个退出的人)
  17. 英读廊——尬跑一英里
  18. 03_建立 Windows 和虚拟机 Ubuntu 共享文件夹
  19. kubectl使用参数--kubeconfig指定不同 .kube/config 文件访问以不同集群
  20. XPS文件如何在线转成Word

热门文章

  1. 手机网站支付宝接入iframe无法唤醒支付宝app
  2. BS客户端安全使用解决方案
  3. 高端在线客服系统源码PHP外贸新版(基于Thinkphp的网站在线客服系统)
  4. 如何自己制作一个GIF图片
  5. Unity游戏Mod/插件制作教程01 - BepInEx的安装和使用
  6. linux qt按键精灵,按键精灵QT抢夺脚本源码
  7. VS2008 PRO 、WDK 和DDKWizard搭建Vista驱动开发环境
  8. 中国数字化手术室行业发展动态及前景战略深度研究报告2021年版
  9. 共享计算机资源教案,《共享网上邻居资源》课后教学反思
  10. unity打包tv 弹窗_Unity即将登陆Apple TV