我在
的环境中使用STMF3 uC的bxCAN外设1。)一旦REC / TEC达到警告级别(等待总线关闭条件不可选),节点必须从网络中分离出来。
2.)主机网络的波特率未知
3.)当用户连接节点时,连接可能是零星的
由于1.)STM32 HAL CAN驱动程序用于IT模式,并且每当设置了EWG标志的被调用时,错误回调将关闭收发器并取消初始化bxCAN。如果REC超出限制,则可以通过在无声模式下配置bxCAN来轻松恢复,假设CAN上有流量。但是,如果TEC超出限制,则bxCAN将无法发送其他帧,因为一旦启用错误中断将立即触发 - >我们陷入僵局。
我尝试通过以静默环回模式发送帧来减少TEC,但成功的传输在这种模式下不会影响TEC。
我认为这个问题不是特定于这个外设,而是适用于其他CAN实现。
欢迎任何建议。
答案 0 :(得分:0)
我已经实施了一个似乎工作正常的解决方案,具有以下要求:
1。)每当触发CAN错误ISR时,它会断开节点与总线的连接(收发器断电)
2。)并非所有中断源都被使能,只有那些严重程度高于上一个错误状态的中断源(例如,在PASSIVE状态下,WARNING和PASSIVE中断被禁用并且BUSOFF中断被启用)
3。)最后一次错误状态,因此每当a。)触发错误ISR或b。以高频率轮询CAN外设时,中断源都会更新显示错误状态的变化
4。)每当尝试连接到总线时,REC必须首先以只听模式进行治疗。为此,总线上需要流量。
实施这些要求后,节点可以无声地失败,但恢复正常运行。