记28377系列芯片中Can总线标准帧和扩展帧该怎么设置?
笔者最近在调试28377系列DSP芯片的can通讯时,遇到一个小问题,百思不得姐~
起因是这样的,在设计一个多单元并联的系统,所有单元使用can总线进行通讯,当通讯端口,can外设,以及相关通讯协议都设计好后,开始使用上位机进行通讯调试时,发现上位机可以正常接收到dsp通过can发送的数据,但检测dsp中的接收缓存,始终看不到上位机下发的数据。
于是,笔者反复排查can模块的配置,can邮箱的配置,以及相关变量的设计等,但并没有找到问题所在。
经过了半天时间,突然想到是否是上位机下发数据格式问题,再次检查上位机下发数据,发现在下发数据设置中勾选了Extended Frame(扩展帧格式)选项。
按照我在dsp中对can的调用,本意是使用扩展帧的,但实际在配置Can信息ID时,因为单元数量并不多,ID虽然是按照29位格式配置,但数值实际只是1到10这样子,比如其中一个是“0x00000006”。
这里简单介绍一下Can总线中,标准帧和扩展帧的区别,标准帧是使用11bit位作为ID识别,扩展帧使用29bit位作为ID识别,具体就不再赘述了,相关对can总线稍有了解的同学就知道这个ID识别的作用。
那么回到我们的问题中来,实际上28377系列芯片对于Can总线使用标准帧还是扩展帧是怎么配置的呢?注意,和28335或者2812等以前的Can结构是不一样的,所以28377系列配置方法有区别哦,对于can的信息帧是扩展帧还是标准帧,28377系列使用其对应库里相关的CANMessageSet(uint32_t ui32Base, uint32_t ui32ObjID, tCANMsgObject *pMsgObject, tMsgObjType eMsgType)函数进行配置,具体相关的配置语句是这样的:
// See if we need to use an extended identifier or not.
if((pMsgObject->ui32MsgID > CAN_MAX_11BIT_MSG_ID) ||
(pMsgObject->ui32Flags & MSG_OBJ_EXTENDED_ID))
{
bUseExtendedID = 1;
}
else
{
bUseExtendedID = 0;
}
其中,CAN_MAX_11BIT_MSG_ID = 0x7ff,MSG_OBJ_EXTENDED_ID = 0x00000004
简要解释一下上面的意义,就是说,在配置can的MsgObject变量时,判断其ui32MsgID(Can信息ID)值的大小,如果大于0x7ff则自动配置为扩展帧,0x7ff正是11bit位ID的最大值;或者,判断ui32Flags标志,如果其bit2位是1,则也配置为扩展帧。
检查了笔者对于can相关MsgObject配置,发现其ui32MsgID小于0x7ff,而ui32Flags又默认配成了0,所以,实际上dsp是以标准帧格式在接收数据的。
原因找到了,解决起来也很简单,上位机取消勾选扩展帧格式,按照标准帧发送,则dsp正常接收。或者,上位机发送设置不变,dsp通过将can的接收MsgObject的ui32MsgID配置为大于0x7ff的值,或者将ui32Flags配置为0x00000004,则dsp可以扩展帧格式正常接收上位机信息。
记28377系列芯片中Can总线标准帧和扩展帧该怎么设置?的更多相关文章
- nxp的layerscape系列芯片中的rcw指定了一些什么信息
答:指定了一些可以配置的硬件信息(如可以配置uart相关的引脚功能).引导镜像(uboot)的读取地址以及从何种介质(flash,sd)启动系统的信息
- CAN帧格式(标准帧、拓展帧)
CAN2.0B标准帧 CAN 标准帧信息为11个字节,包括两部分:信息和数据部分.前3个字节为信息部分. 位置 7 6 5 4 3 2 1 0 字节01 FF RTR × × DLC(数据长度) 字节 ...
- CAN总线学习系列之二——CAN总线与RS485的比较
CAN总线学习系列之二——CAN总线与RS485的比较 上 一节介绍了一下CAN总线的基本知识,那么有人会问,现在的总线格式很多,CAN相对于其他的总线有什么特点啊?这个问题问的好,所以我想与其它总线 ...
- 【ARM】S5PV210芯片中的BL0的作用
S5PV210芯片中的BL0的作用:(1)关闭看门狗:(2)清除指令寄存器:(3)初始化栈区域:(4)初始化堆区域:(5)初始化块设备复制功能:(6)初始化PLL和设置系统时钟:(7)拷贝BL1到片内 ...
- CAN总线标准帧
CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充.数据块编码.循环冗余检验.优先级判别等项工作. CAN总线结构 CAN总 ...
- 浅入 ABP 系列(4):事件总线
浅入 ABP 系列(4):事件总线 版权护体作者:痴者工良,微信公众号转载文章需要 <NCC开源社区>同意. 目录 浅入 ABP 系列(4):事件总线 事件总线 关于事件总线 为什么需要这 ...
- STM32——CAN协议帧的标准格式和扩展格式与优先级的关系
一.CAN数据帧的标准格式和扩展格式 我们知道CAN总线上的数据帧都可以配置一个ID号,其可以为11位(标准ID格式)或者29位(扩展ID格式),这也是数据帧的标准格式和扩展格式的区别所在. 这个ID ...
- Echarts-地图扩展-标准geoJson格式扩展地图-例子
本人菜鸟一枚,最近搞echarts地图.看到官方给的“标准geoJson格式扩展地图-全国主要城市”的例子,瞬间就蒙逼了.不怪人官网的例子不好,实在是我看不懂它是怎么弄得.最后折腾了一晚上,最后终于弄 ...
- PipelineDB 1.0.0 发布——使用标准的pg 扩展开发模型
PipelineDB 1.0.0 发布已经发布了,现在的已经成为一个标准的pg 扩展了,语法也有变动 create continous view 修改为了view,create streaem 修改为 ...
随机推荐
- S1_搭建分布式OpenStack集群_05 glance安装配置
一.基本简介 镜像服务(glance)使用户能够发现,注册和检索虚拟机镜像. 它提供了一个REST API,使您可以查询虚拟机镜像元数据并检索实际镜像. 您可以将通过镜像服务提供的虚拟 ...
- 2019.12.11 java数组练习
class AmHW { public static void main(String[] args) { /* 统计一个公司三个销售小组中每个小组的总 销售额以及整个公司的销售额.如下所示 第一小组 ...
- tomcat 配置更改 web 目录
tomcat 虚拟目录:( 编辑 tomcat/conf/server.xml ) <Host name="localhost" appBase="webapps ...
- 获取页面scroll高度
记录一下获取 scroll 高度的方法 经实际测试: document.body.scrollTop 在 chrome 下会返回0. 所以 document.documentElement.scrol ...
- CF830E Perpetual Motion Machine
题面 题解 神仙构造题. 分五种情况考虑: 如果存在一个环,那么令环上的点权值为\(1\),其余点权值为\(0\). 如果存在一个度数大于\(3\)的点,令这个点的权值为\(2\),和它相邻的点权值为 ...
- 如果要对img里面的值做特殊处理,可以直接写方法
html <img :src="getMore('up')" alt=""> data里面定义的 one: 'http://p1.fishqc.ne ...
- Linux crontab命令:循环执行定时任务(详解版)
前面学习了 at 命令,此命令在指定的时间仅能执行一次任务,但在实际工作中,系统的定时任务一般是需要重复执行的.而 at 命令显然无法满足需求,这是就需要使用 crontab 命令来执行循环定时任务. ...
- ICEM-R-b
原视频下载地址:https://pan.baidu.com/s/1i4JGk8d ;密码: 4xr2
- 微信小程序之页面传参
效果图: 点击编辑值传过去了,那么编辑支出类型这个界面又是如何获取到值呢? 传值代码: type.js editType: function (e) { var typeId = e.currentT ...
- 记一次edusoho问题
问题描述:Edusoho如何迁移到本地windows或另外一台Linux服务器上 解决问题步骤: 1.参考官方文档官方文档地址如下:http://www.qiqiuyu.com/my/course/3 ...