STM32的CRC计算

发布者:代码漫游者最新更新时间:2019-02-19 来源: eefocus关键字:STM32  CRC计算 手机看文章 扫描二维码
随时随地手机看文章

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计算 引用地址:STM32的CRC计算

上一篇:STM32F4学习笔记5——stm32串口发送数据最高位错误问题
下一篇:STM32 三路AD的使用方法

推荐阅读最新更新时间:2024-03-16 16:24

深入理解STM32之储存器和总线架构1(基于STM32F411)
本文转载自http://blog.csdn.net/charmingsun/article/details/52258419 官方文档: STM32F411 参考手册 STM32F411 数据手册 Cortex™-M4F 编程手册 STM32 微控制器系统存储器自举模式应用笔记 STM32™ 自举程序中使用的 USART 协议 ARM Cortex™-M Programming Guide to Memory Barrier Instructions 一、系统架构 主系统由 32 位多层 AHB 总线矩阵构成,可实现以下部分的互连: 有关AHB总线和APB总线的更多信息请参考博文: 浅析AMBA规范以及AMBA
[单片机]
stm32专题五:时钟树(四)自定义配置HSI时钟
内部时钟HSI的配置方式和HSE基本一致,唯一的一个区别在于,没有等待HSI就绪的函数,因此需要操作RCC_CR寄存器的HSIRDY位来判断时钟就绪,其他直接按流程即可。 bsp_rccclkconfig.c /* RCC时钟配置函数 */ #include bsp_rccclkconfig.h // 自定义时钟配置函数 void HSI_SetSysClk(uint32_t RCC_PLLMul_x) { // 因为操作的是寄存器,所以加上__IO,每次去地址读 __IO uint32_t HSIStatus; // 把RCC时钟复位成复位值 RCC_DeInit(); //
[单片机]
STM32单片机串口一键下载电路与操作方法详解
STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash。 2)SRAM = 芯片内置的RAM区,就是内存啦。 3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 要了解STM32的几种启动模式. BOOT0接GND,BOOT1接GND.那就是正常的启动模式,从flash加载代码. 而BOOT0接V3.3,BOOT1接GND.则是ISP模式,也就是串口更新代码. 其次,你要了解STM32 ISP下载代码的过程. 首先BOOT0接V3.3,然
[单片机]
<font color='red'>STM32</font>单片机串口一键下载电路与操作方法详解
STM32 HAL库学习系列第11篇---定时器TIM---看门狗基本配置及使用
基本配置 使用cube配置溢出时间 记住准时喂狗 独立看门狗: /* IWDG 1s 超时溢出 */ MX_IWDG_Init(IWDG_PRESCALER_64,625); /* 启动独立看门狗 */ HAL_IWDG_Start(&hiwdg); LED1_ON; /* while部分是我们在项目中具体需要写的代码,这部分的程序可以用独立看门狗来监控 * 如果我们知道这部 分代码的执行时间,比如是50ms,那么我们可以设置独立看门狗的 * 溢出时间是60ms,比50ms多一点, 如果要被监控的程序没有跑飞正常执行的话,那么 * 执行完毕之后就会执行喂狗的程序,如果程序跑飞
[单片机]
如何创建硬件在环工程
我们很多时候使用的STM32单片机型号无法与官方硬件支持包自带的型号一一对应上,而matlab 2021b版至最新版本可以支持 F4xx系列单片机+CubeMX自定义型号配置使用,本篇以“STM32F407VGT6”型号为例如何创建硬件在环工程 温馨提示 :2021b版本Matlab只支持F4xx以上型号使用CubeMx自定义配置功能,而F4xx以下(F1x、F0x等)则只能使用官方开发板支持包方式开发。 CubeMX版本 :6.2.0 Matlab版本 :2021b STM32CubeProgrammer版本 :2.6.0 3.0 软件版本验证 创建simulink模型前需要先检查下硬件支持包和相关软件是否安装正确,
[单片机]
如何创建硬件在环工程
STM32 ADC应用要注意的几点问题
所有的STM32芯片中都带有逐次逼近型ADC模块,关于它的应用非常广泛和频繁。不过,应用过程中时常也会遇到些问题,这尽力小结下,与大家分享出来算作一些提醒。 1、Vdda没有供电或没有正常供电;STM32系列众多,该参数不可一概而论,细节请参考各个芯片数据手册。 2、采样电阻取值不合适,跟采样时间不匹配,经常表现为输入电阻过大、配置的采样时间偏短。实际设计时可以参考下STM32官方各系列评估板的相关电路。另外可以参考ST官方的应用笔记AN2834。关于ADC 应用其它的应用笔记,可以去WWW.STMCU.COM.CN搜索ADC即可。 3、ADC上电开启到稳定需要一段时间,即Tstab,该参数在数据手册里有介绍。在
[单片机]
<font color='red'>STM32</font> ADC应用要注意的几点问题
stm32在rt-thread上的RTC(实时时钟)
rt-thread中已经部分实现了rtc的内容 --- rtc.c ,调用rt_hw_rtc_init()函数即可使用msh设置date和time等 rtc时钟来源有三个: HSE, LSE, LSI, 实现如下: 在原RTC_Configuration(void)进行替换即可 /* Enable LSE */ #ifdef USE_LSE RCC_LSEConfig(RCC_LSE_ON); /* Wait till LSE is ready */ while ( (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) && (--count)
[单片机]
基于STM32的数据采集与监控系统的远程监控终端设计方案
  引言   数据采集与监控系统是以计算机为基础的分布式控制系统与电力自动化监控系统,广泛应用于电力、冶金、石油、化工等诸多领域。数据采集与监控系统依靠其数量庞大的远程终端单元收集各终端站点信息和执行控制策略。远程终端单元的性能、成本、可靠性对整个系统而言举足轻重。数据采集与监控系统如图1所示。   对于终端站点现场环境恶劣或站点广泛分散的系统,要求站点长期无人值守,如电信公司的电话光纤网络交接设备、高速公路机电设备等。如何保证终端站点的信息高效、可靠地上传,并能对中心系统的命令及时响应,成为目前广泛研究的热点问题。参考文献提出了一种基于GPRS无线传输的无人值守低功耗远程终端的设计方案;参考文献设计了基于MODBUS
[单片机]
基于<font color='red'>STM32</font>的数据采集与监控系统的远程监控终端设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved