历史上的今天
返回首页

历史上的今天

今天是:2025年02月19日(星期三)

正在发生

2019年02月19日 | STM32的CRC计算

2019-02-19 来源:eefocus

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传输期间保持为低。 

推荐阅读

史海拾趣

FDK AMERICA公司的发展小趣事

随着全球电子市场的不断发展,FDK AMERICA公司意识到单靠国内市场已无法满足其发展需求。于是,公司积极寻求国际合作机会,与全球知名电子企业建立战略合作伙伴关系。通过合作,公司成功将产品打入国际市场,进一步扩大了市场份额。

C&K Components公司的发展小趣事

1957年,Charles A. Coolidge, Jr.和Marshall Kincaid共同创立了C&K Components公司,起初主要专注于磁芯记忆单元的制造。那个时代的电子行业刚刚起步,市场竞争激烈,技术更新换代迅速。C&K在初创时期就面临了诸多挑战,但两位创始人凭借对技术的热爱和对市场的敏锐洞察,坚持探索新的技术方向,为公司的发展奠定了坚实的基础。

FLEX LTD公司的发展小趣事

到了90年代,随着电子产品的普及和技术的进步,开关市场的竞争愈发激烈。然而,C&K凭借多年的技术积累和市场经验,已经成为世界领先的开关制造商之一。公司不断推出创新产品,满足市场的多样化需求,同时加强与国际知名企业的合作,进一步巩固了其在行业内的领先地位。

FASTRAX公司的发展小趣事

随着公司业务的不断发展,FASTRAX开始积极拓展海外市场,并与多家国际知名企业建立了战略合作关系。通过与这些企业的合作,FASTRAX不仅获得了更多的市场份额,也学习到了先进的管理经验和技术知识。这些合作经验为FASTRAX的持续发展奠定了坚实的基础。

AC Photonics Inc公司的发展小趣事

随着电子行业的快速发展和市场竞争的加剧,AC Photonics Inc也面临着诸多挑战。然而,公司始终保持着敏锐的市场洞察力和应变能力。在面对行业变革和技术升级时,公司能够及时调整战略方向,加大研发投入,推出更具竞争力的新产品。同时,公司还积极探索新的商业模式和市场机会,为未来的发展奠定了坚实的基础。


以上五个故事均是基于一般性的电子行业发展模式虚构的,旨在展示AC Photonics Inc公司可能的发展路径和经历。实际情况可能有所不同,具体细节需要参考公司的官方资料和历史记录。

Concurrent Logic公司的发展小趣事

在取得初步成功后,Concurrent Logic开始扩展其产品线。他们不仅开发了多款针对不同应用场景的并行处理芯片,还进军了与并行计算紧密相关的其他硬件领域,如高性能的服务器和存储设备。这些新产品的研发和上市,进一步增强了公司在市场上的竞争力。

问答坊 | AI 解惑

寻QFP-40封装的单片机

请问一下,哪家有40PINQFP封装的单片机,型号是什么? 谢谢!…

查看全部问答>

WINCE 5.0 待机恢复的问题,最后回不到C中

先说说环境,是WINCE 5.0, S3C2440A的cpu,64M 内存,NAND FLASH,用的不是STEPLOADER,是自己用ADS写的BOOTLOADR。 之前已经看过很多关于休眠的帖子,别人遇到的问题的解决方式也试过了。 CONFIG.BIB中有这个了         S ...…

查看全部问答>

Wince电池驱动

大家看下我的电池驱动问题出在了哪儿,现在是系统运行不起来了, DWORD  ReadAdc(unsigned char ch) {        int i;     volatile S3C2440A_ADC_REG * v_pADCreg;         ch = ...…

查看全部问答>

急:U盘读写与SD卡读写有区别吗?

大家好,我现在正在做一个练习项目:在wii开发用机器上,对U盘和SD卡内的文件进行长时间读写 代码已经完成,程序运行是有三个线程,主线程,SD读写线程,USB读写线程,后两个读写线程所用的栈空间大小是一样的。对SD和U盘的读写函数都是一样的。 ...…

查看全部问答>

成员变量的类型如何设置为CTime

我想将控件对应的成员变量设置为CTime,可是在使用MFC ClassWizard 添加成员变量时,Add Member Variable对话框中Variable type选项中没有CTime选择,请教各位该如何解决?…

查看全部问答>

FTF印象_1

Zigbee也是这次Freescale FTF重点宣传的一块,展出了不少用Zigbee做的东西。 下面这是其中一个报告的资料,介绍了Freescale Zigbee的组成和应用还有几款芯片的简单说明。对刚开始用Freescale的芯片做Zigbee具有一定的指导作用。…

查看全部问答>

UCOS任务

void mainTask( void *pData ) {    pData  =  pData;    OSTaskCreate(Task1LED,(void *)0,&stkTask1LED[StkSize-1],3);       while(1)    {     OSTim ...…

查看全部问答>

12

加速踏板位置传感器可以写成加速踏板的位置传感器吗…

查看全部问答>

Vishay发布业内首款在单片器件内集成了信号探测和处理功能的学习型遥控码IC

宾夕法尼亚、MALVERN — 2012 年 7 月30 日 — 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,其光电子产品部 推出业内首款将信号探测和处理功能集成进单个器件的学习型遥控码IC--- VSOP98260。该器件适用于通用遥控器,通过对 ...…

查看全部问答>

MSP430外设C语言精讲

MSP430外设C语言精讲…

查看全部问答>