记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 修改为 ...
随机推荐
- [USACO09DEC] Dizzy Cows 拓扑序
[USACO09DEC] Dizzy Cows 拓扑序 先对有向边跑拓扑排序,记录下每个点拓扑序,为了使最后的图不存在环,加入的\(p2\)条无向边\(u,v\)必须满足\(u\)拓扑序小于\(v\) ...
- 【luoguP5091】【模板】欧拉定理
题目链接 欧拉定理: 当\(a\),\(m\)互质时,\(a^{\phi(m)}\equiv 1 (mod ~ m)\) 扩展欧拉定理: 当\(B>\phi(m)\)时,\(a^B\equiv ...
- USACO 2009 Feb 股票市场 Stock Market
USACO 2009 Feb 股票市场 Stock Market Description 尽管奶牛们天生谨慎,她们仍然在住房抵押信贷市场中大受打击,现在她们准备在股市 上碰碰运气.贝西开挂了,她知道S ...
- Connection to newtaotao failed. [08001] Could not create connection to database
jdbc.url=jdbc:mysql://localhost:3306/newtaotao?serverTimezone=UTC&characterEncoding=utf-8 数据库是5. ...
- mysql 左联结与右联结
mysql> select * from test; +----+------------+-------+-----------+ | id | name | score | subject ...
- Beta冲刺(4/5)
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 讨论校园百科究竟如何实现,并分配了任务 提交记录(全组共用) 接下来的计划 加快校园百科的进度 准备Beta版本的汇报 还 ...
- [BUAA软工]Alpha阶段事后分析
设想和目标 虽然我们是从零开始的一个自定义项目,但语音Coding助手从一开始的设计与目标就很明确:加入语音接口使其能在shell端实现命令语音实现以及编辑运行脚本,设计前端编辑器并将后端shell与 ...
- Calcite分析 - RelTrait
RelTrait 表示RelNode的物理属性 由RelTraitDef代表RelTrait的类型 /** * RelTrait represents the manifestation of a r ...
- oracle 19c jdbc之Reactive Streams Ingestion (RSI) Library
19c jdbc新特性 https://blogs.oracle.com/dev2dev/whats-new-in-193-and-183-jdbc-and-ucp jdbc实现直接路径加载 http ...
- web编辑器的使用比较
一开始测试的时候发现都还可以,只是出于后续考虑,选择了ckeditor,但是有时候会莫名出现Cannot read property 'XXX' of undefined,如下: Uncaught T ...