首页 » 智能 » TMS320F2812/28335 CAN总线若何实现接收标准帧和扩展帧混淆接收?_标识符_尺度

TMS320F2812/28335 CAN总线若何实现接收标准帧和扩展帧混淆接收?_标识符_尺度

乖囧猫 2025-01-17 15:50:40 0

扫一扫用手机浏览

文章目录 [+]

本日由于一个项目要用到canopen编码器,由于canopen是标准帧格式的,而我以前的项目都是用扩展帧写的,那么就碰着了扩展帧和标准帧稠浊吸收的问题。
刚开始以为很大略,改个ID格式不就办理了嘛,现实却是改完往后,标准帧不论如何也触发不了CAN中断,网上搜了一下,也没有干系内容。
几年不看,根本内容都忘得差不多了,那么只能回顾以前的资料了!

二,根本知识回顾

TMS320F2812/28335 CAN总线若何实现接收标准帧和扩展帧混淆接收?_标识符_尺度 TMS320F2812/28335 CAN总线若何实现接收标准帧和扩展帧混淆接收?_标识符_尺度 智能

我们知道,CAN总线具有两种不同的帧格式,不同之处在于标识符的长度不同:具有11为标识符的为标准帧,具有29位标识符的为扩展帧,详细帧格式,如下所示:

TMS320F2812/28335 CAN总线若何实现接收标准帧和扩展帧混淆接收?_标识符_尺度 TMS320F2812/28335 CAN总线若何实现接收标准帧和扩展帧混淆接收?_标识符_尺度 智能
(图片来自网络侵删)

CAN总线帧格式

从图中可以知道,标准帧标识符长度为11位,相称于扩展帧的基本ID,标准帧与扩展帧通过IDE位来区分,IDE的全称为“标识符扩展位”,IDE位位于标准帧的掌握场,位于扩展帧的仲裁场。
IDE位在标准帧里面为“显性”,也便是“0”,在扩展帧里面为“隐性”,也便是“1”。

那么在2812/28335里面,CAN ID寄存器是怎么表示的呢?查看干系书本,截图如下:

可以看到,0~28为标识符ID,标准帧格式的标识符有效位为18~28位,扩展帧格式全部有效。
29位(AAM)为自动应答模式位,与吸收无关,不管它。
30位(AME)为吸收屏蔽使能位,这里可以根据自己须要进行设置。
31位(IDE)便是我们的标识符扩展位,大略来说IDE置1,设置的标识符就为扩展帧,设置为0就为标准帧。

三问题办理过程

有了上面的根本知识,这个问题该当就能迎刃而解了吧?我们修正一下试一试,末了修正的内容如下:

首先,ID号的最高位(IDE位)必须要修正为0,其次,我们的有效标识符要把稳修正。
对付标准帧,有效标识符为18~28位,因此我们须要左移18位。
这也是我出错的地方,只修正了最高位,而没有对有效标识符进行移位操作。
比如把ID号设置为0X00000181,那么此ID便是无效ID,不管对标准帧还是扩展帧都是缺点的。
但是我们知识见告我们,标准帧的ID便是这种的,比如在剖析仪里面输入时便是这样:

因此,犯了一个履历性缺点。
这样由于ID是无效的,以是也就触发不了中断。
这里也解释老外设计的东西比较奇葩,都不按常理出牌。

在进行移位操作时,还要把稳进行逼迫类型转换,不然会报一下警告:

shift count is too large

如果不逼迫转换,将会导致我们的末了移位结果是缺点的,因此须要在这里加一个逼迫类型转换。

四总结

问题很小,但是对一些老项目的掩护和改造,从事理上来讲都很大略,由于这些东西都是你以前做过的。
但是真正落地的时候每一个小细节的实现都还是须要花不少韶光的。
对付一个项目,最怕的便是翻烧饼,而且是永劫光的烧饼,由于韶光一长,很多以前看过的东西都忘得差不多了,要再捡起来,用一首歌来回答,那只能是《从头再来》~

相关文章

FM03BTS--1A充电器驱动IC_电源_两种

特点CC 和 CV 两种模式原边掌握省去外部光耦和 TL431内置 600V 功率开关管过温保护过压保护封装形式:SOP-8产品运...

智能 2025-01-17 阅读0 评论0