工具/软件:
我们运行一个 Linux 发行版、 将 AM62ax MCAN 外设用作通信的 CAN 控制器。
我们遇到总线嘈杂的问题、然后关闭总线。 在这种情况下、我们希望在遵守 CAN 规范的同时尽快回到总线上(等待129个空闲序列)。 为此、我们希望在 CAN 接口上设置"restart-ms = 1ms"、但不知道是否符合规格。
我找到了一篇关于 MCAN 的论坛帖子、在另一个器件上、当 INIT 标志复位以再次开始运行时、控制器会强制执行这129种空闲状态:
但是、查看 AM62Ax 用户手册(SPRUJ16A)中的 MCAN 文档、我没有看到任何确认这一点的说明。 寄存器文档的充实程度不像上面的 C2000文档中所示的那样。 我可以找到的唯一参考文献是 MCAN 的软件初始化、但说明它在单个空闲状态(11个隐性位)后恢复传输:
12.5.1.4.3工作模式
12.5.1.4.3.1软件初始化
将 MCAN_CCCR.[0] init 位设置为1会启动软件初始化。 这可以通过软件或来完成
通过硬件复位、当在消息 RAM 中检测到未纠正的位错误时或通过向 Bus_Off 执行
状态。 当 MCAN_CCCR.[0] INIT 位被置位时、消息传输停止并且输出的状态
TX 引脚为隐性(高电平)。 错误管理逻辑(EML)的计数器保持不变。 设置
MCAN_CCCR.0] INIT 位不会更改任何配置寄存器。 复位 MCAN_CCCR.[0] init 位
完成软件初始化。 等待 出现11个连续隐性位序列后
(Bus_Idle 状态指示)消息传输开始。
您能否确认复位 MCAN_CCCR.INIT 位是会等待(所需) 129个空闲序列(如 C2000 MCAN 中所述)还是 AM62Ax 用户手册暗示的单个空闲序列。