CRC32 of Ether FCS with STM32】的更多相关文章

Everyone knows that STM32F1xx, STM32F2xx, STM32F4xx have a hardware unit with a polynomial CRC32 0x04C11DB7. And he, in general, work. But only a checksum for some reason does not coincide with that calculated softvarno. The Google usually 2 types of…
uint32_t reverse_32( uint32_t data ) { asm("rbit r0,r0"); return data; } ; uint32_t crc32_ether( char *buf, int len, int clear ) { uint32_t *p = (uint32_t*) buf; uint32_t crc, crc_reg; if ( clear ) CRC_ResetDR( ); ) { crc_reg = CRC_CalcCRC( reve…
// STM32 CRC32 Test App - sourcer32@gmail.com #include <windows.h> #include <stdio.h> DWORD Crc32( DWORD Crc, DWORD Data ) { int i; Crc = Crc ^ Data; ; i < ; i++ ) if ( Crc & 0x80000000 ) Crc = ( Crc << ) ^ 0x04C11DB7; // Polynomi…
http://supp.iar.com/Support/?note=64424&from=note+11927 BackgroundThe STM32 devices from ST Micro have a built-in hardware CRC32 calculator. (So using CRC32 in an application does not use up code space for the algorithm.) ProblemThe CRC32 algorithm u…
对于STM32的32位CRC,如果假定它的一个主要目的是为了校验往内部FLASH存储数据的可靠性,那么(余数)初值是全1当然是比较合理的.由于STM32的32位CRC是纯32位,即每次必须输入32位的数,所以如果数据不到32位,应该往低位用1来填充比较合理: 另外,如果输入数据是 "1234"-0x31 0x32 0x33 0x34, 那么输入的CRC数据是 0011-0100 0011-0011 0011-0010 0011-0001 :: 0x34333231 由于STM32的32…
源:STM32 CRC32与对应的软件CRC32 简单实现STM32 CRC32使用 使用前记得使能STM32 CRC时钟 //STM32硬件CRC32 byte数据计算,将数据移到最高位,低位补上FF u32 stm32_crc32_byte(u8 *pBuff, u32 len) { u32 i; u8 buff[]; u32 *p32 = (u32 *)buff; CRC->CR = ; //复位CRC寄存器 buff[] = buff[] = buff[] = buff[] = 0XFF…
1.CRC.FCS是什么 CRC,全称Cyclic Redundancy Check,中文名称为循环冗余校验,是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误.它是利用除法及余数的原理来作错误侦测的. FCS,全称Frame Check Sequence,中文名称为帧校验序列,俗称帧尾,即计算机网络数据链路层的协议数据单元(帧)的尾部字段,是一段4个字节的循环冗余校验码. 注:CRC循环冗余校验和FCS帧校验序列是…
AN4187 - Using the CRC peripheral in the STM32 family At start up, the algorithm sets CRC to the Initial_Crc XOR with the Input_Data. Once CRC MSB is equal to one, the algorithm shifts CRC one bit to the left and XORs it with the POLY. Otherwise, it…
本文设计思想采用明德扬至简设计法.由于本人项目需要进行光纤数据传输,为了保证通信质量要对数据进行校验.在校验算法中,最简单最成熟的非CRC校验莫属了. 得出一个数的CRC校验码还是比较简单的: 选定一个CRC生成多项式G(x): 将发送数据左移K位,右侧补零(其中K为生成多项式最高次幂): 用移位补零后的数据对G(x)进行模2除法(其实就是异或运算): 用得到的余数即为该数据的CRC校验码: 发送端将移位补零后数据的低K位0替换成CRC校验码组成新的数据发送出去,接收端对带有校验码的数据对同样的…
CRC32:CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值.由于CRC32产生校验值时源数据块的每一个bit(位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的CRC32值. CRC是一种数据错误检查技术,它可以确保最初写入镜像文件的数据与从镜像文件中使用的数据保持一致.CRC32表示使用32位来保存错误检查信息,在创建镜像文件的时候,CRC32的详细信息将嵌入到该文件中,以确保在将该文件还原到磁盘时能够检测到它是否已经损坏.…
这几天在研究CRC32的计算过程,看了CRC算法的原理,也看了不少通过移位法实现的代码,但是算出的结果跟校验工具算的不一致. 折腾了好长时间,终于找到一个手工计算CRC32的文章,再对照IEEE 802.3标准的CRC计算过程,才算把CRC32的计算搞定. 这里把计算过程的要点记录一下: 1) CRC32是CRC算法一种,先参考Wiki上CRC算法的原理和实例搞明白基本的计算方法. 2) 最常见的CRC32算法就是IEEE 802.3里生成FCS字段用的那个: a) CRC32使用的Polyno…
CRC-知识解析 cyclic redundancy check 写在前面的话: 之前在做学校项目的时候用到了CRC 原理,但在网上查找的过程中,发现讲解CRC知识的资源很多,但是对新手比较友好的.讲的十分清楚的又很少,很多博主也不求甚解,弄得读起来心中常常不由自主地奔腾过上千个“为什么”“为什么”, 本文是我在阅读了许多资料的基础上整理.解析出来的文章,尽可能的对新手友好.解答CRC里面的一些知识点,而不是简单的应用. 依据学习目的不同,如果大家只想简单应用,不求原理,那么直接复制--粘贴最后…
一.CRC校验的使用    STM32内置CRC计算单元,节约了软件计算的时间.在软件开发中,可以为firm追加4字节的CRC校验码到生成的BIN文件最后位置,这个CRC码就是全部代码区域数据的CRC校验值. 在代码执行之前,可以校验CRC是否通过,不通过则说明代码完整性出现错误.尤其在代码IAP升级应用中非常有用,用CRC校验来决定是否更新代码. 但是有一个问题是,常见的CRC校验的主要2个输入参数分别是数据指针和数据长度,这就要求一次把数据传给计算单元.但是代码BIN文件动辄几十KB到几百K…
使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只有几千行代码的操作系统,也没所有的代码都看,只是看了其中部分内容.自己还自不量力的尝试着去写过简单的操作系统,最后写着写着就被带到了ucos的设计思路上了,后来干脆就“copy”代码了,虽说对操作系统内核的理解有很大的帮助,但是很是惭愧啊,智力不够,对操作系统内核的设计者更加仰慕,O(∩_∩)O哈哈…
[原创]:http://m.oschina.net/blog/129357 我在原创的基础又从另一位博主处引用了一些内容. 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32.     下面是从网上找的一个STM32时钟框图,比<STM32中文参考手册>里面的是中途看起来清晰一些:         重要的时钟:   PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1.HSI:高速内部时钟信号 stm3…
转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm32发现竟然要老是配置时钟,不知道为毛要这样,请看这篇博文. 所有寄存器都需要时钟才能配置吧,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值. 任何MCU的任何外设都需要有时钟,8051也是如此:STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关…
例程:  /* Configure one bit for preemption priority */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    /* Enable the WAKEUP_BUTTON_EXTI_IRQn Interrupt */  NVIC_InitStructure.NVIC_IRQChannel = WAKEUP_BUTTON_EXTI_IRQn;  NVIC_InitStructure.NVIC_IRQCha…
MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL   是因为目标板的芯片处于休眠的状态,在尝试连接目标板时候也会出现报错Internal command error Flash download failed target dll has been can的现象,解决办法是使目标板退出休眠,即按住reset键再下载程序,看到USB通讯灯闪后一小会儿(自己把握)后放开reset就…
CRC32生成多项式:X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1 对应的16进制表示为:0x4C11DB7 下面贴CRC32查表法生成代码: WORD32 table[] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e,…
函数 hash_file(): 使用给定文件的内容生成哈希值 说明 string hash_file ( string $algo , string $filename [, bool $raw_output = false ] ) 参数 algo 要使用的哈希算法的名称,例如:"md5","sha256","haval160,4" 等. // 网友提供的一些可用 algo 以及中他机器中测试的性能 ALGO: md2, time: 2.0341…
MDK5 STM32编译问题汇总 WIN8.KEIL-MDK-5 编译时,出现弹窗"The ARM C/C++ Compiler 已停止工作",关闭弹窗后,编译输出的窗口中出现如下错误: ..\OBJ\LED.axf: error: L6002U: Could not open file ..\obj\core_cm3.o: No such file or directory 解决方法: 移除工程中的"core_cm3.c"文件,工程即可编译成功,并且可以正常运行,…
这几年一直使用STM32的MCU,对ARM内核的SysTick计时器也经常使用,但几乎没有仔细了解过.最近正好要在移植一个新的操作系统时接触到了这块,据比较深入的了解了一下. 1.SysTick究竟是什么? 关于SysTick在STM32的资料中并没有详细的介绍,这可能由于SysTick是ARM内核的东西.在<STM32F10xxx参考手册>.<STM32F4xx参考手册>以及<STM32F7xx参考手册>中,介绍时钟的时候仅仅是在使用树上简单的画出了HCLK时钟经过8…
借用小甲鱼的经典:各位互联网的广大网友们.大家早上中午晚上好..(打下小广告,因为小甲鱼的视频真的很不错).每次看小甲鱼的视频自学都是比较轻松愉快的..我在想,如果小甲鱼出STM32的视频,我会一集不漏的听的.哈.好了..学习到了STM32的DMA模块..琢磨了一下中文参考手册,官方是这样描述的: 直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输.无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作. 是的,无需CPU干预,可以想…
如花说得好:呃呃呃.是俗话说得好:有了ADC,怎可少了DAC..我觉得奇怪.今天我开头就直奔主题了.我想了想,总结了一句话:孙悟空纵然有七十二变.无论是变成猫也好,变成狗也罢.始终还是会变回他本身.所以我怎么的拐弯抹角,还是会回到DAC..这不.前面几句废话,还是回到了讲DAC上来了..好吧.今天就直接一点吧,换个风格的开头. 先来张比如花漂亮的照片.大家请尽情欣赏:因为其够美丽了.所以我就不展现我美丽而销魂的涂鸦了. 鉴赏过之后.我们来看看STM32之DAC的Resume(简历简介): ● 2…
神通广大的各位互联网的网友们.大家早上中午晚上好好好.今早起来很准时的收到了两条10086的扣月租的信息.心痛不已.怀着这心情.又开始了STM32的研究.早上做了计算机控制的PID实验,又让我想起了飞思卡尔的电磁小车..曾经的电感电压采集让我心碎的多少次.又让我开心了多少次.但已经成为过去.(软件和硬件都会影响),呵呵.估计有人已经猜到我接下来要介绍什么了.在你们面前.我已无秘密.额.其实标题也直接“表白”了.看到标题,别吓到哈.并不是要用英文写.至于原因是什么.请往下看: 好吧.言归正传:ST…
前段时间我稍微涉及节能减排大赛..倡导节能的社会..没错了.你真是太聪明了..知道了我今天要讲关于STM32节能方面的模块..没错..这标题已经告诉你了是吧..哦,对,标题有写..所以..言归正传.至于STM32如何达到节能的..语文老师说要留下悬念..跟着作者走下去..也就是跟我啦.. 大家翻开STM32的中文参考手册(你们看就行了,我翻,然后截图),里面关于STM32的低功耗模式有详细的标注,突然不想截图.. 1.睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外…
五一之际,先祝大家五一快乐.其实快乐很简单,工作的人有假放,学习的人也有假放,像我,有假放才有更多的时间学自己想学的东西.51假期学51,可惜没有32假期呀.好了..言归正传,大家听过吸星大法吧..在这里.智商和情商比我高的人估计又知道我要说什么了..没错了..今天我们来了解“葵花宝典”第STM32篇之输入捕获,也就是上文所讲的“吸星大法”, 那输入捕获可以用来干嘛呢??这个问题问的好,输入捕获可以用来测量脉冲宽度或者测量频率,假如要捕获一个脉冲的高电平脉宽,我们要怎么做呢??别急哈..接下来我…
PWM..英语好的人估计又知道这三个大写字母代表哪三个英语单词了.小弟不才,就说中文意思好了:脉冲宽度调制,玩过飞思卡尔的人估计对PWM非常的不陌生吧.电机驱动需要PWM,控制舵机的转向需要PWM,总之.可以说,PWM,you are so good. 好了..言归正传,广大的互联网的网友们,咱们又见面了,大家早上晚上中午好好好.额..好像也没见过面,STM32的PWM,可谓是小强中的小强,STM32的PWM,就是由定时器产生的,但是奇怪的是除了定时器TIM6和TIM7不能产生PWM外,其他的定…
广大的互联网的大家早上中午晚上..又好..没错了..我又来了..写博客不是定时的..为什么我要提写博客不是定时的呢??聪明的人又猜到我要说什么了吧.有前途.其实我还是第一次听到定时器有通用和高级之分的..原来定时器也有分等级的呀..STM32果真不简单呀.. 好了..为啥名为通用呢?.恕小弟不才.目前只理解为:因为可以通用,所以名为通用定时器.那可以通用在哪些方面呢?那通用的原理又是什么呢?咦,不急不急..待我慢慢翻开“葵花宝典”第STM32篇之通用定时器:葵花兄,近来可好?咱们又见面了.能告诉…
广大的互联网网友们,大家早上中午晚上好,我是某某某..对于狗..看过<忠犬八公>的我.无不深深的被狗的义气与灵气所震撼..我也觉得在所有mcu中用看门狗来形容让系统复位的功能是很恰当的.也很形象.但是偷偷说一句:我本人很怕狗..但是看门狗却很可爱..在STM32中存在着两条忠犬:独立看门狗和窗口看门狗,其英文简称为:IWDG和WWDG. IWDG篇:::接下来先看IWDG,对此缩写,我就不解释了..本人六级也在积极准备中,独立看门口这个“独立”,恕小弟不才,目前只知道其独立的含义是指在整个系统…