工具/软件:
我想检测哪个节点是 CAN 网络上的仲裁胜利者。 通过 J1939 发送 PGn 后、我会检查中的 TxOk 位
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
我想检测哪个节点是 CAN 网络上的仲裁胜利者。 通过 J1939 发送 PGn 后、我会检查中的 TxOk 位
尊敬的 Tejaswinee:
仲裁由 CAN 协议本身完成、如果有多个节点尝试发送、具有最低地址的节点 ID 始终具有最高优先级。 只是想知道为什么你需要手动识别赢得仲裁的节点. 看起来您在查看 TxOk 状态时会监视发送节点的仲裁、对吧? 由于会有多个发送节点、如何同时检测发送节点? 最好在接收节点上监控此情况并按接收顺序记录节点 ID(属于 CAN 帧的一部分)。 您可以使用 CAN ISR 中的计时器(接收到消息时)对接收到的帧顺序进行计时。
此致、
Joseph
您好、Joseph:
感谢您对此进行研究。 我们的应用中有多个控制单元将在 J1939 CAN 网络上进行通信、一个在仲裁中胜出的控制单元将是主控制器。 此后、只有主设备发送数据请求。 一旦确定一个主设备、其他主设备将进入侦听模式。 我的控制单元代码的工作方式如下:
1.考虑首次传输专有 PGN 时,网络上还没有主设备。 发送专有 PGN 并检查传输是否成功、如果是、则当前节点将在仲裁中胜出、并且是主节点。 当前节点将声明总线并通过网络宣布我是专有 PGN 上的主节点。
2.考虑某人已经是网络上的主设备,进入监听模式,不发送 PGN
谢谢您、
Tejaswinee
尊敬的 Tejaswini:
我假设您使用的是 F28388S 器件中的 CAN-FD 模块、因为您要处理 J1939。 我们没有此应用的软件示例、但可以就如何执行此操作提供一些建议。 根据您的描述、并假设每个节点还设置为接收和发送消息、我得出结论:任何尚未完成帧传输并收到 CAN 帧的节点都不是仲裁胜利者。 仲裁胜出者将是已成功传输帧且根本未接收到任何 CAN 帧的节点。 根据这些假设、您可以执行以下步骤:
此致、
Joseph