Author: Dr Kaarthick Balakrishnan
BUS OFF is an error state of the #CAN Controller. Every CAN controller along a bus will try to detect errors within a message. If an error is found, the discovering node will transmit an Error Flag, thus destroying the bus traffic. The other nodes will detect the error caused by the Error Flag (if they haven’t already detected the original error) and take appropriate action, i.e. discard the current message.
In essence, a controller detecting a fault increments its Error Counter (every time error detected counter increased by 8) and when the error counter reaches 255 bus off will occur which means that a particular CAN node will get switched off from the CAN network. This will prevent the particular node from overloading the bus with error messages.
Then the CAN controller resets and joins the bus by again setting a counter and checking if the error is resolved. This time the counter may be incremented very slowly (incremented by one on every successful transmit). Once the counter reaches 255 it will join the bus.