硬汉嵌入式论坛

 找回密码
 立即注册
查看: 479|回复: 3
收起左侧

[技术讨论] NXP的SDK自带canopen协议栈的BUG,关于设置RPDO时,长度错误

[复制链接]

11

主题

9

回帖

42

积分

新手上路

积分
42
发表于 2025-4-17 11:48:05 | 显示全部楼层 |阅读模式
背景:刚接触canopen一个月,我做一个NXP的MCU,使用SDK包里自带的canopen协议栈(EmSA CANopen (FD) Libraries for NXP SDKs)(大部分代码是封死在.a库文件)。硬件can模块的部分也一起封在了.a库文件里,看不到can模块部分代码,无法排查问题。
问题:电脑作为上位机使用can分析仪的上位机软件,发送RPDO给MCU,发现一个问题,RPDO的不知道为什么主机要多发一个字节这边才能进入回调,比如字典里RPDO的映射对象设置了4字节(例如0x20120020)其中的最后0x20数值就代表4字节,但是上位机的DLC(数据长度)要选择5个字节,MCU才能成功接收到并执行回调,并成功设置字典内容(设置字典里的值的这部分操作代码不在回调里,回调只是给用户使用的写额外应用代码的),否则不但无法执行回调,字典内容也不会改变。
1.比如设置了1字节,那么DLC就需要设置2字节,以此类推。
2.如果设置了8字节,无论DLC设置为多少,数据都会乱码,而且字典内容无法成功设置。
这是什么原因呢?是canopen协议本身就有的某种设置?是有某种宏可以开关这种设置?还是协议栈的BUG?



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-4-18 10:22:48 | 显示全部楼层
要不试试CANopenNode。楼主说的这个没用过。

两个帖子的楼主位末尾有相关资料和案例下载。

BSP视频教程第21期:轻松一键实现串口DMA不定长收发,支持裸机和RTOS,含MDK和IAR两种玩法,比STM32CubeMX还方便(2022-07-24)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114241

BSP视频教程第22期:基于串口的XYZmodem文件传输协议实现,含上位机和下位机全开源,制作了一个Ymodem方式固件更新(2022-08-08)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114625
回复

使用道具 举报

11

主题

9

回帖

42

积分

新手上路

积分
42
 楼主| 发表于 2025-4-22 15:03:49 | 显示全部楼层
eric2013 发表于 2025-4-18 10:22
要不试试CANopenNode。楼主说的这个没用过。

两个帖子的楼主位末尾有相关资料和案例下载。

这2个帖子似乎不是CanOpenNode的呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-4-23 13:10:08 | 显示全部楼层
ERI 发表于 2025-4-22 15:03
这2个帖子似乎不是CanOpenNode的呢?

27、BSP视频教程第27期:CANopen协议栈专题,实战方式系统了解NMT,PDO,SDO,时间戳,同步报文,紧急报文等(2023-10-17)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=121438

28、BSP视频教程第28期:CANopen协议栈专题,CANopen主从机组网实战,CAN词典工具使用方法以及吃透PDO玩法(2023-11-01)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=121619
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 05:11 , Processed in 0.234481 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表