【问题标题】:CANopenNode: Master node sends continually a messageCANopenNode:主节点不断发送消息
【发布时间】:2022-08-20 12:48:58
【问题描述】:
我正在尝试通过使用 libohiboard 作为 HAL 库将 CANopenNode 用于 STM32L476 设备。在网络中,我有:(i)作为主机运行的板和(ii)商业节点。启动时,节点发送 HB 消息和 SYNC 消息。当我的板子使用
CO_NMT_sendCommand(CO->NMT,CO_NMT_ENTER_OPERATIONAL, 0x0A);
主人开始不停地发送相同的消息!
使用逻辑分析仪,我看到了这个:
其中通道 0 是微控制器的 TX 引脚,通道 1 是 RX 引脚。
我不明白为什么消息会立即返回到 RX 引脚!我检查了微控制器配置,环回模式关闭。
谢谢
标签:
stm32
can-bus
canopen
【解决方案1】:
看起来像正常的 CAN 操作 - 所有消息在发送时都会立即回显,否则总线仲裁将不起作用。唯一的区别是您可以看到的 ACK 位设置在 rx 线上,但没有设置在 tx 上。该位由总线上的另一个 CAN 节点填充。
您的节点不断发送相同消息的原因似乎与此无关。
【解决方案2】:
我不知道它在您的控制器上是如何工作的,但通常您必须注意仅当您的从节点不返回任何心跳或心跳值与预期模式不同时才发送 NMT_start_command(预操作或操作为例子)
如果奴隶没有返回任何东西,可能有多种原因:
- 未激活任何内容,因此您必须首先使用正确的 SDO 设置时间
- 从站使用节点保护而不是心跳,因此您必须首先使用消息 ID 查询从站:0x700 + 节点 ID,DLC:0
如果不清楚或没有帮助,请告诉我