Hello,
我正在尝试在我们的定制板上使用 M_CAN 接口。我尝试使用该论坛提供的其中一个示例中的源代码片段:
我只是使用 M_CAN1 而不是 M_CAN0 来发送消息,接收器只是一个 Kvaser 接口。我已将引脚 195 和 196 配置为备用功能 (0x3),以将它们用作 M_CAN1 接口。外部振荡器用作接口时钟。
我面临的问题是,当我尝试从专用缓冲区发送任何消息时,我可以看到缓冲区 0 的位在 TXBRP 中设置,但消息从未发送,并且 TX 引脚的状态也从未改变,它一直保持高位。我可以看到消息 RAM 已使用帧数据进行更新,并且我还测试了当使用 TEST 寄存器时我可以设置和重置 TX 引脚状态。我确实看不到寄存器中的任何错误(见附图)。
知道为什么界面从不发送消息吗?如果需要更多信息,请随时询问。
此致
Hello,
是的,看起来软件中有一个错误,导致 IMUX 寄存器被错误的值覆盖,从而为 M_CAN1 RX 引脚选择了错误的输入。
谢谢你的帮助。
此致
Hi,
寄存器值的另一个提示是:离开初始化模式后,PSR[ACT] 仍然为 0,这表明模块未与总线同步,因此无法启动传输。这可能是由于引脚配置错误或 RX 引脚显示为低电平。您可以尝试断开收发器并将 TX/RX 引脚连接在一起。
您是否也设置了相应的 IMUX 寄存器来选择您正在使用的引脚?
对于 3N45H 示例,您可以参考https://community.nxp.com/docs/DOC-342013
BR, Petr
Hello,
是 3N45H。
此致
Hi,
我从寄存器视图看到检测到了 ACK 错误,但在这种情况下我希望设置错误计数器并且 TX 信号应该是可见的。
使用的MCU掩膜组是什么?实际上,2N45H和3N45H之间差别不大。
BR, Petr