番茄的随笔3 - CAN外设原理研究(基于TMS320F283xx)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


概述

  番茄最近使用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%保证正确性。我只能说,一家之言,欢迎大佬指正。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的番茄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值