匿名
未登录
登录
丢石头百科
搜索
查看“STM8 CRC计算”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
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:<li>设置CPOL、CPHA、LSBFirst、BR、SSM、SSI和MSTR的值; </li><li>在SPI_CRCPR寄存器输入多项式; </li><li>通过设置SPI_CR1寄存器CRCEN位使能CRC计算,该操作也会清除寄存器SPI_RXCRCR和SPI_TXCRCR; </li><li>设置SPI_CR1寄存器的SPE位启动SPI功能; </li>* 启动通信并且维持通信,直到只剩最后一个字节未被发送或者接收;* 当把最后一个字节写进发送缓冲器, 设置SPI_CR2的CRCNext位,指示硬件在最后一个数据节发字送完成后,发送CRC。在发送CRC期间,CRC计算停止;<li>当最后一个字节被发送后,SPI发送CRC,CRCNext位被复位。同样,接收到的CRC和SPI_RXCRCR值进行比较,如果比较不相配,SPI_SR上的CRCERR标志被置位,当设置了SPI_ICR寄存器的ERRIE时,则产生中断。 </li> 注意:时当SPI钟频率较高时,用户在采用CRC校验传输时必须小心。在采用CRC数据校验的全部传输期间内,使用CPU的时间应尽可能少。为了避免在接收最后的数据和CRC时出错,在发送带有CRC校验值的数据传输过程中应禁止函数调用。
返回至
STM8 CRC计算
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志