提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
概述
番茄最近
使用TI公司的TMS320F28377D在搞事情,这是一款双核的CPU,需要用到这颗料的CAN外设,研究了一段时间的数据手册和示例程序,在这里记录一下对于这个外设的理解。水平有限,欢迎技术交流,共同进步。
一、CAN是什么?
CAN总线自不必多说,在工业控制领域占据一席之地,采用差分总线的形式,允许挂载多个节点。完善的总线仲裁机制,避免了多节点间同时发送报文时冲突。最高速度能够达到1Mbps,工业应用时多用500Kbps。
二、CAN数据帧结构
CAN-bus通信帧分为数据帧、远程帧、错误帧、过载帧和帧间隔,在这里我们主要说明数据帧,其他的帧结构,感兴趣的同学可以看看这篇文章(感谢Leo-Lian大神的分享):(14条消息) CAN数据帧结构与传输_Leo-Lian的博客-CSDN博客_can帧格式
数据帧的结构如图:
数据帧由帧开始、仲裁段、控制段、数据段、校验、确认、帧结束组成。后面CRC、ACK属于CAN的纠错机制,帧开始和结束是标志,核心在仲裁段、控制段和数据段。
数据段8×8位组成,最大能够放置8个字节;
仲裁段存放CAN_ID,分为标准ID和扩展ID,标准ID长度为11位,扩展ID长度为29位;IDE使用是否为扩展帧。
控制段DLC代表数据段的有效长度,最大为8.
CAN外设收到新的消息(Message)时,会使用仲裁段和控制段里的ID+IDE+RTR+DLC进行过滤。
三、CAN外设
本章说明28377的CAN设备的工作原理。
1.原理图
28377的数据手册给出CAN模块的原理图:
怎么理解上图呢?
2. 模块说明
CAN外设的工作模式mode分为多种,本文只说明正常Normal模式的工作。
首先,CAN Core与总线连接,理解为移位寄存器,总线上的CAN数据来到后,CAN Core将总线数据收到自己的寄存器里(发送类似),这是CAN的最底层,遵循11898-1协议,我们的控制指令到不了这里。
Message Handler是我们常说的过滤的地方,这里会将Message RAM中存储的不同Object的规则和CAN Core中受到的新消息进行比对,以确定收取的新报文是否丢弃。
Message RAM是存储CAN消息的地方,新来的message如果经过Handler过滤规则后,就会被存储到Message RAM中,Message RAM有32个Messgae Object,每个Object可以独立的设置规则。
Message RAM Interface这个在正常模式里面没有用,只在测试模式下起作用。
IFx寄存器,这个是上层CPU和CAN模块进行对接的地方,CAN的所有设置和操作必须通过IF寄存器来实现。28377中的IF寄存器有三种,IF1和IF2可以用来读和写,IF3只能用来读。
总结
本文对CAN的帧结构和28377的CAN原理,各个模块的基本功能进行介绍,想了解更多关于28377的CAN设计相关的问题,可以去我的资源里面看看,后面有新的成果,我会第一时间上传。
PS:本文小菜鸡一枚,所有的文章都是基于自己研究所得,无法100%保证正确性。我只能说,一家之言,欢迎大佬指正。