42xtm4c129x开发128怎么算方?

五彩晶圆(中级), 积分 3983, 距离下一級还需 2017 积分

五彩晶圆(中级), 积分 3983, 距离下一级还需 2017 积分

好消息TI的带PHY网口的TM4Ctm4c129x开发出来了,DEMO板已经到手明天上图

TI官网已经有资料了,今天剛收到板还没时间研究现在还是样片,正式出货明年3月

图呢让咱也见识见识 

哇 楼主还在关注M4 呵呵 期待图 

}

以前在嵌入式开发中进行CRC校验一般通过软件算法实现TM4C1294自带CRC校验单元,但坑比较多发出来供使用时参考

CRC单元只有一个寄存器,7个字段需要配置

SIZE: 选择校验数据是8位还是32位;

TYPE:校验类型即选择生成多项式

看着简单,发现不了解CRC校验算法还是一脸懵逼

那简单了解下CRC算法首先CRC校验算法有很多种,根据生成校验數据位数的多少分为CRC-8、CRC-16、CRC-32等很多种在嵌入式里面最常用的是CRC-16这种,但CRC-16根据生成多项的不同又分为几种最常用的两种也是TM4C1924支持的两种是

洏这两种之中最最常用的就是CRC-16/MODBUS,下面以此为例讲下寄存器该如何配置

到现在知道了TYPE和SIZE该怎么配置,再加上单个字节数据校验不存在大小端的問题ENDIAN也知道怎么配置了,但还有几个关键寄存器不知道难道真的要把CRC算法了解一遍,也有简便的方法实用软件CRC Caculator,下载链接在此

在这個软件里面选择不同的的CRC校验算法右侧有该算法的相关信息,例如CRC-16/MODBUS的信息如下

跟上面配置寄存器是对应的

Init:0XFFFF 对应初始值是全1即初始值寄存器INIT应该设置为0x3;

 
CRC校验直接调用官方提供的驱动函数CRCDataProcess即可搞定。
其实还有一点问题校验完未按进行按位反转的结果是放在CRC SEED里面的,按位反转后的结果是放在 CRC Post Processing Result 里面的(CRC-16/MODBUS结果因未按位取反故结果两个寄存器结果一致)
之所以这样是方面进行连续校验,比如你要校验20个字节你可以先校验10个字节,然后用存在CRC SEED里面的校验结果再与后面十个字节进行校验
需要注意的是CRC单元默认是要进行连续校验的,因为虽然茬初始化的时候把INIT设置为了1但INIT是会自动清零的,也即往CRCDIN 里面出入第一个要校验的字节之后INIT就会自清零下次将使用CRC SEED的值作为初始值,这吔是CRC校验算法的基本流程对第一个字节做校验,将校验结果作为初始值在对第二个字节进行校验
所以正确的校验程序应该在每次开始校验前对INIT重新赋值或者对CRC SEED写为0xFFFF;
常用CRC-32的校验信息如下:

对应的CRC-32的配置寄存器应配置如下:

}

德州仪器 (TI) 的 Tiva? C 系列 MCU 提供业界最受歡迎的 ARM Cortex?-M4 内核该内核具有可扩展的内存和封装选项、无与伦比的连接外设以及先进的模拟集成。

}

我要回帖

更多关于 ADS129x 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信