CAN错误计数器和中断

时间:2017-07-20 14:32:06

标签: embedded microcontroller stm32 can-bus isr

我在

的环境中使用STMF3 uC的bxCAN外设

1。)一旦REC / TEC达到警告级别(等待总线关闭条件不可选),节点必须从网络中分离出来。

2.)主机网络的波特率未知

3.)当用户连接节点时,连接可能是零星的

由于1.)STM32 HAL CAN驱动程序用于IT模式,并且每当设置了EWG标志的被调用时,错误回调将关闭收发器并取消初始化bxCAN。如果REC超出限制,则可以通过在无声模式下配置bxCAN来轻松恢复,假设CAN上有流量。但是,如果TEC超出限制,则bxCAN将无法发送其他帧,因为一旦启用错误中断将立即触发 - >我们陷入僵局。

我尝试通过以静默环回模式发送帧来减少TEC,但成功的传输在这种模式下不会影响TEC。

我认为这个问题不是特定于这个外设,而是适用于其他CAN实现。

欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

我已经实施了一个似乎工作正常的解决方案,具有以下要求:

1。)每当触发CAN错误ISR时,它会断开节点与总线的连接(收发器断电)

2。)并非所有中断源都被使能,只有那些严重程度高于上一个错误状态的中断源(例如,在PASSIVE状态下,WARNING和PASSIVE中断被禁用并且BUSOFF中断被启用)

3。)最后一次错误状态,因此每当a。)触发错误ISR或b。以高频率轮询CAN外设时,中断源都会更新显示错误状态的变化

4。)每当尝试连接到总线时,REC必须首先以只听模式进行治疗。为此,总线上需要流量。

实施这些要求后,节点可以无声地失败,但恢复正常运行。