CANopenNode:主节点不断发送消息

问题描述 投票:0回答:3

我正在尝试通过使用 libohiboard 作为 HAL 库将 CANopenNode 用于 STM32L476 设备。在网络中,我有:(i)我的板作为主节点和(ii)商业节点。启动时,节点发送HB消息和SYNC消息。当我的板子使用

CO_NMT_sendCommand(CO->NMT,CO_NMT_ENTER_OPERATIONAL, 0x0A);
主人开始不停地发送相同的信息!

使用逻辑分析仪,我看到了这个: 其中通道 0 是微控制器的 TX 引脚,通道 1 是 RX 引脚。

我不明白为什么消息立即返回到RX pin!我检查了微控制器配置,环回模式已关闭。

谢谢

stm32 can-bus canopen
3个回答
0
投票

看起来像正常的 CAN 操作——所有消息在发送时都会立即回显,否则总线仲裁将不起作用。唯一的区别是您可以看到的 ACK 位是在 rx 线上设置的,而不是在 tx 线上设置的。该位由总线上的其他 CAN 节点填充。

你的节点一直发送相同消息的原因似乎与此无关。


0
投票

我不知道它在你的控制器上是如何工作的,但通常你必须注意发送 NMT_start_command 只有当你的从节点没有返回任何心跳或者心跳值与预期的模式不同时(预操作或操作作为一个例子)

如果奴隶不返回任何东西,可能有多种原因:

  • 没有激活所以你必须先使用正确的 SDO 设置时间
  • slave 使用 nodeguarding 而不是 heartbeat 所以你必须先查询 slave 消息 ID: 0x700 + Node ID, DLC: 0

如果不清楚或没有帮助,请告诉我


0
投票

如何将 CANopenNode 移植到 stm32?你能给我一些信息吗?谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.