如标题所说,我使用命令
candump can0 can1
来观察CAN总线上的帧,但无法区分哪些帧是接收的,哪些是发送的。
有时我需要接收帧的时间戳来分析问题。
我不知道candump是否支持这些。
正如评论中所说,CAN 协议不跟踪发送者/接收者。标识消息的唯一数据是消息 ID。在公共CAN网络中,每个设备都被分配特定的ID用于传输和接收。您需要了解 CAN 网络定义(或 CAN 矩阵)才能正确理解 CAN 总线的内容。
定义通常存储在 .dbc 文件中,这是许多工具支持的专有文件格式。这些文件描述了如何解释 CAN 消息,还列出了网络中的节点以及每个节点的消息 ID。汽车制造商通常不会共享这些定义文件。一些大制造商甚至不会与开发车内ECU的合作伙伴分享它们......(我在这里谈论经验)
请注意,CAN 层之上的一些协议在消息 ID 中编码源/目标地址(通常仅通过具有 29 位 ID 的扩展 CAN 帧)。 J1939 和 ISO-15765-3(与 UDS 一起使用)等协议可以做到这一点。
这个话题已经很久没有更新了。但也许它对某人有帮助。
您可以使用此网站上所示的选项显示时间戳:
-ta : absolute
-td : delta
-tz : zero
-tA : Absolute with date
因此,对于您的问题,您可以使用:
candump -ta can0 can1
-x 参数打印额外的消息信息,rx/tx brs esi
例如candump -ta -x -c -c can0 can1
欲了解更多详情: 可以转储-h
要获取包含 tx/rx 信息的 candump,请尝试以下命令 -> candump -x 任意 上面将打印 tx 和 rx 详细信息