STM8 CRC计算

发布者:温暖阳光最新更新时间:2020-07-02 来源: eefocus关键字:STM8  CRC计算  寄存器 手机看文章 扫描二维码
随时随地手机看文章

STM8 CRC计算

CRC校验仅用于保证通信的可靠性。数据发送和数据接收分别使用单独的CRC计算器。通过对每一个接收位进行可编程的多项式运算来计算CRC。CRC的计算是在由SPI_CR1寄存器中CPHA和CPOL位定义的采样时钟边沿进行的。

CRC计算是通过设置SPI_CR1寄存器中的CRCEN位启用的。设置CRCEN位时同时复位CRC寄存器(SPI_RXCRCR和SPI_TXCRCR)。当设置了SPI_CR2的CRCNEXT位,SPI_TXCRCR的内容将在当前字节发送之后发出。

如果Tx缓冲区中已经有一个字节,该字节发送完成后再发送CRC值。在发送CRC值的过程中,CRC计算器被关闭,CRC寄存器的值保持不变。


如果在发送SPI_TXCRCR值的过程中,接收到移位寄存器中的值和SPI_RXCRCR的值不匹配,SPI_SR寄存器中的CRCERR标志被置位。


SPI通信可以通过以下步骤使用STM8的CRC:

  • 设置CPOL、CPHA、LSBFirst、BR、SSM、SSI和MSTR的值;

  • 在SPI_CRCPR寄存器输入多项式;

  • 通过设置SPI_CR1寄存器CRCEN位使能CRC计算,该操作也会清除寄存器SPI_RXCRCR和SPI_TXCRCR;

  • 设置SPI_CR1寄存器的SPE位启动SPI功能;

  • 启动通信并且维持通信,直到只剩最后一个字节未被发送或者接收;

  • 当把最后一个字节写进发送缓冲器, 设置SPI_CR2的CRCNext位,指示硬件在最后一个数据节发字送完成后,发送CRC。在发送CRC期间,CRC计算停止;

  • 当最后一个字节被发送后,SPI发送CRC,CRCNext位被复位。同样,接收到的CRC和SPI_RXCRCR值进行比较,如果比较不相配,SPI_SR上的CRCERR标志被置位,当设置了SPI_ICR寄存器的ERRIE时,则产生中断。

注意:时当SPI钟频率较高时,用户在采用CRC校验传输时必须小心。在采用CRC数据校验的全部传输期间内,使用CPU的时间应尽可能少。为了避免在接收最后的数据和CRC时出错,在发送带有CRC校验值的数据传输过程中应禁止函数调用。

关键字:STM8  CRC计算  寄存器 引用地址:STM8 CRC计算

上一篇:STM8 I2C接口主要特点
下一篇:STM8 SPI状态标志

推荐阅读最新更新时间:2024-11-06 12:14

STM32学习笔记——GPIO之从库函数到寄存器
例子为单片机的“Hello World”级的流水灯实验——虽然只有一个,其中并不是将完整的代码给出,只是给出关键部分来说明“如何调用ST公司的的库来完成对硬件的控制,以及对库文件代码进行跟踪和分析至寄存器级”。所以从第一段代码往下看就可以了,要用到的函数和变量大部分会说明,至于寄存器级的,那就只能翻手册了。 GPIO(General Purpose Input/Output) - 通用输入/输出 main.c :此函数为主函数,控制LED,亮1s,灭1s int main(void) { //LED初始化 LED_Configuration(); while(1) { GPIO_SetBits(GP
[单片机]
STM32学习笔记——GPIO之从库函数到<font color='red'>寄存器</font>
DDS器件AD9858及其在雷达信号源中的应用
   1 引言   近年来,随着雷达技术的迅速发展,人们对雷达信号的要求也越来越高。高精度、高扫描率、高抗干扰性、低截获率成为人们追求的目标。满足这种需求除了靠产生复杂的雷达波形外,还需要在雷达系统中应用高性能的器件。而高性能DDS技术、DSP技术及大规模可编程逻辑器件技术、电子计算机的应用为此类问题的解决提供了一种新的途径。AD9858就是一款高性能的DDS器件,可方便快速地产生线性调频、单频脉冲及编码调制信号。 ?   2 器件简介   ADI公司推出的AD9858器件是具有1GSPS千兆次取样/秒速率的直接数字合成器DDS、10位D/A转换器、快速频率跳跃和精细调谐分辨率功能的单片解决方案。AD9
[模拟电子]
STM8学习笔记——定时器定时功能和中断相关
定时器都差不多,无非就是计数,溢出了标志置位,如果中断允许的话产生一个中断。说到中断,STM8S105的中断向量表如下 时基单元: 在选用内部时钟的情况下,CK_PSC是由fmaster提供的,经过定时器预分频器分频产生CK_CNT时钟,然后作为一次计数的时基,举个例子,16M的内部RC,经过16分频,则CK_CNT为1M,那么定时1ms只需计数1000次。 计数模式: 共有三种:向上,向下,中央对齐 以向上计数为例:计数器从0计数到用户定义的比较值(TIMx_ARR寄存器的值),然后重新从0开始计数并产生一个计数器溢出事件,同时,如果TIM1_CR1寄存器的UDIS位是0,将会产生一个更新事件(U
[单片机]
PIC单片机学习笔记
1.状态寄存器STATUS 2.实现间接寻址的寄存器INDF和FSR 3.与程序计数器PC相关的寄存器PCL和PCLATH 4.电源控制寄存器PCON PIC单片机的指令系统 PIC16F87X共有35条指令,均是长度为14位的单字节指令。所有指令按操作对象的不同又分为3类:面向字节操作类(17条);面向位操作类(4条);常数操作和控制操作类(14条)。 PIC配置字的设置 PIC的配置字设置方法到目前我学到两种: 1. 两个“_”紧跟CONFIG,后跟配置字设置后的数值; 2. 两个“_”紧跟CONFIG,后跟各配置字的位和状态,其格式如下: ;==============================
[单片机]
PIC单片机学习笔记
arm寄存器解析
寒假闲来无事准备将自己的走过的arm之路总结一下,今天就先从arm的寄存器说起吧,欢迎各位拍砖。 要介绍arm寄存器之前我们要先了解一下arm处理器的工作模式: Arm处理器有七种工作模式,为的是形成不同的使用级别,以防造成对系统的破坏。不同模式可以访问的寄存器不同,可以运行的指令不同。 (1)usr(10000):普通应用程序运行的模式(应用程序) (2)FIQ(10001):快速中断模式,以处理快速情况,高速数据传输 (3)IRQ(10010):外部中断模式,普通中断处理 (4)svc(10011):保护模式(管理模式),操作系统使用的特权模式(内核) (5)abt(10111):数据访问中止模式,用于虚拟存储和存储
[单片机]
arm<font color='red'>寄存器</font>解析
PPCBoot在MPC8250上的移植方法
1 引言   Boodoader(引导加载程序)是CPU复位后和进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,为操作系统提供基本的运行环境,如初始化CPU、堆栈、存储器系统等。Bootloader代码与CPU的内核结构、具体型号等因素有关,其功能类似于通用PC的BOIS程序。除了依赖CPU的体系结构外,Bootloader实际上还依赖于具体的嵌入式板级设备的配置。也就是说,对于二块不同的嵌入式板,即使它们使用相同的CPU构建,要想让运行在其中一块板上的Bootloader程序也能运行在另一块板上,通常也都需要修改Boofloader的源程序。因此,在嵌入式系统的开发中不可能有通用的Bootloader
[嵌入式]
STM8S105 GPIO寄存器方法
GPIO寄存器配置位及模式
[单片机]
STM8S105 GPIO<font color='red'>寄存器</font>方法
arm寄存器 svc模式
ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六个... 寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的。不象 80x86 处理器那样要求特定寄存器被用做栈访问,或者象 6502 那样把数学计算的结果放置到一个累加器中,ARM 处理器在寄存器使用上是高度灵活的。 寄存器 8 到 12 是通用寄存器,但是在切换到 FIQ 模式的时候,使用它们的影子(shadow)寄存器。 寄存器 13 典型的用做 OS 栈指针,但可被用做一个通用寄存器。这是一个操作系统问题,不是一个处理器问题,所以如果你不使用栈,只要你以后恢复它,你可以在你的代码中自由的占用(corrupt)它。每个处理器模式都有
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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