主题中讨论的其他器件: AM62P、
工具与软件:
尊敬的专家:
我们 在其中一个硬件设计中使用具有 CAN 接口的 MSPM0G3507。 我们正在应用 CANopen、固件每2秒尝试发送检测信号消息。
当 CAN 总线处于未端接状态(例如未连接电缆时)时、我经常看到的结果是错误计数 MCAN_ECR.TEC值升高到128、导致 CAN 控制器进入"错误被动"状态(MCAN_PSR.EP=1)。 在大多数情况下、即使 固件 继续尝试发送 检测信号消息、错误计数器也会停止。
问题1:为什么 错误计数器 MCAN_ECR.TEC (通常)会停止以128的速率递增?
我遇到了一种情况 一次 (!) 错误计数器 MCAN_ECR.TEC 确实更高的值。 我看到的值是248、但是 CAN 控制器 已经进入"总线关闭"状态 (MCAN_PSR.BO=1)、表示 在我读取它之前错误计数器已经达到255的值。 不过、我不确定 CAN 控制器处于"总线关闭"状态时错误计数器如何递减。 当我重新连接 CAN 电缆并终止总线后、错误计数器没有减少。 我找到的唯一使 MCU 脱离此状态的方法是将其复位。
问题2: 在什么情况下 、 错误计数器会 MCAN_ECR.TEC 增加到128以上?
问题3: 如何 在不复位 MCU 的情况下从"总线关闭"状态恢复?
基本上、同样的问题也适用于 AM62P (运行 Linux)、我们在"另一端"使用它。 CAN 控制器看上去非常相似(如果不完全相同)。 MSPM0G3507和 AM62P 的 TRM 似乎都没有提供有关 此行为的任何详细信息。
希望获得任何帮助或提供更多文件。



