工具与软件:
大家好!
我使用的是 SK-AM64B 板、并尝试使 CAN 接口正常运行。 我的目标是在 Tx 引脚上输出一个信号、以实现与 CAN 收发器的通信。 但是、即使对器件树源(DTS)进行多次调整、也无法在 Tx 引脚上观察到任何信号。 以下是我目前的情况和迄今为止所采取的步骤:
问题:
- 发送 CAN 消息(
cansend)时、控制器的 Tx 引脚(SOC_MAIN_UART5_TXD)上不会生成信号。 - 控制器表现出不同的行为、具体取决于 Tx 和 Rx 引脚是否连接到外部器件(例如示波器)。
硬件和软件设置:
- 电路板: SK-AM64B
- 软件: 运行 TI 默认 Linux 映像
tisdk-default-image-am64xx-evm-10.01.10.04.rootfs.wic.xz。 - 连接:
- TX 和/或 Rx 直接连接到示波器(未使用收发器)
- GND 已正确连接
- 目标: 直接测量 Tx 信号、无需使用收发器。
采取的步骤和观察:
-
DTS 调整:
- 我已经调整了器件树中的 CAN 节点。
- 在中
k3-am64-main.dtsi: - 在中
k3-am642-sk.dts:
Pinmux 设置如下所添加:
-
CAN 接口配置:
执行以下命令来配置和测试 CAN 接口:ip link set dev main_mcan1 type can bitrate 500000 loopback off ip link set up dev main_mcan1 cansend main_mcan1 123#AABBCCDD
-
环回测试:
- 内部环回: 工作正常(已发送的 CAN 消息按预期接收)。
- 外部硬件环回: 当 Tx 直接连接到 Rx 时、在总线上观察方波信号、指示发送和接收成功。
-
示波器观察结果:
- 案例1:TX 已连接至示波器、Rx 未连接:
Tx 引脚保持在~0.18V、并且在消息传输期间不观察到任何信号(cansend)。 如果从示波器上断开 Tx 连接、控制器进入总线关闭状态。 - 案例2:Rx 连接到示波器、Tx 未连接:
Rx 引脚始终如预期的那样为高电平。 断开 Rx 与示波器的连接不会触发总线关闭状态。 - 案例3:Tx 和 Rx 均连接至示波器:
在信息传输期间、总线上会出现方波信号。 不过、在初始检查时、波形与预期的 CAN 消息不匹配。 - 情形4:Tx 和 Rx 均未连接:
发送 CAN 消息会立即导致控制器进入总线关闭状态。
- 案例1:TX 已连接至示波器、Rx 未连接:
-
错误和调试尝试:
- 已验证引脚多路复用是否设置正确、并且不存在冲突。
- 观察到内核日志
dmesg()、该日志在初始化期间没有显示错误、但控制器在引脚断开连接时报告总线关闭状态。 - 已检查电气问题或干扰、但未发现异常。
- 参考了 此论坛主题 并实施了类似的更改。
问题:
为什么发送 CAN 消息时、尽管存在配置并且在某些情况下缺少总线关闭状态、Tx 引脚为什么保持非活动状态?
为什么方波仅在连接 Tx 和 Rx 时出现、以及它为什么与预期的 CAN 消息不匹配?
如何在不使用收发器的情况下验证 Tx 引脚的输出、是否需要额外的配置或调试才能实现这一点?
提前感谢您的支持!
此致、
Albert Hösl è re