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 I2C接口主要特点
下一篇:STM8 SPI状态标志
推荐阅读最新更新时间:2024-11-06 12:14
设计资源 培训 开发板 精华推荐
- LTC1727IS8-2.5 三路电源监视器的典型应用
- 采用 VIPer22A PWM 控制器的恒流 (350mA) LED 驱动器
- ADR525A 2.5 Vout 负精密基准配置的典型应用
- STEVAL-ISV012V1,使用 L6924D 高达 5 W 太阳能电池充电器的演示板,用于单节锂离子和锂聚合物电池
- ADP7118 20V、200mA 低噪声 CMOS LDO 5V 输出调整至 6V 的典型应用
- 具有 10V 栅极驱动器的 LTC3892HUH-2 高效率、双路 5V/12V 输出同步降压转换器的典型应用电路
- ADAU1592 D类音频功率放大器的典型单声道应用电路
- MC34072ADR2G 有源带通滤波器运算放大器的典型应用
- ADP5023 的典型应用电路,使用带有 PSM/PWM 控制和电源良好的处理器系统电源管理
- LT1940 的典型应用 - 双路单片式 1.4A、1.1MHz 降压型开关稳压器
- 【报名赢小米手环、膳魔师保温杯等好礼】罗德与施瓦茨HDMI 1.4b/2.1 接口测试
- phyBOARD-i.MX 8M Plus 开发板来袭 免费申请进行时!
- 报名有好礼!50元京东卡等您拿!
- 是德科技有奖问答活动之三,极限温度测试示波器探头方案,答题闯关赢好礼!
- 将想法变成现实,Maxim MAX32630FTHR创意设计大赛,重磅开启!
- 【有奖征文】TI DSP 30 周年——聊聊DSP的那些事儿
- 秀宝宝照片,赢EEWORLD神秘“六一”礼品
- 【EEWORLD大学堂】玩转LaunchPad及TI MSP430G2XX系列超值单片机!!!
- 有奖问答:在线寻找英特尔® 视觉加速设计“全知”达人