
CHAPTER 19 CAN CONTROLLER
User’s Manual U16541EJ4V0UD
716
(5) Recovery from bus-off state
When the CAN module is in the bus-off state, the transmission pins (CTXD0) cut off from the CAN bus always
output the recessive level.
The CAN module recovers from the bus-off state in the following bus-off recovery sequence.
<1>
Request to enter the CAN initialization mode
<2>
Request to enter a CAN operation mode
(a) Recovery operation through normal recovery sequence
(b) Forced recovery operation that skips recovery sequence
(a) Recovery from bus-off state through normal recovery sequence
The CAN module first issues a request to enter the initialization mode (refer to timing <1> in Figure 19-
17). This request will be immediately acknowledged, and the C0CTRL.OPMODE bit is cleared to 000B.
Processing such as analyzing the fault that has caused the bus-off state, re-defining the CAN module and
message buffer using application software, or stopping the operation of the CAN module can be
performed by clearing the C0GMCTRL.GOM bit to 0.
Next, the module requests to change the mode from the initialization mode to an operation mode (refer to
timing <2> in Figure 19-17). This starts an operation to recover the CAN module from the bus-off state.
The conditions under which the module can recover from the bus-off state are defined by the CAN
protocol ISO 11898, and it is necessary to detect 11 consecutive recessive-level bits 128 times. At this
time, the request to change the mode to an operation mode is held pending until the recovery conditions
are satisfied. When the recovery conditions are satisfied (refer to timing <3> in Figure 19-17), the CAN
module can enter the operation mode it has requested. Until the CAN module enters this operation mode,
it stays in the initialization mode. Whether the CAN module has entered the operation mode can be
confirmed by reading OPMODE.
During the bus-off period and bus-off recovery sequence, the C0INFO.BOFF bit stays set (to 1). In the
bus-off recovery sequence, the reception error counter (C0ERC.REC0 to C0ERC.REC6) counts the
number of times 11 consecutive recessive-level bits have been detected on the bus.
Therefore, the
recovery state can be checked by reading the REC0 to REC6 bits.
Caution
In the bus-off recovery sequence, the REC0 to REC6 bits counts up (+1) each time 11
consecutive recessive-level bits have been detected. Even during the bus-off period, the
CAN module can enter the CAN sleep mode or CAN stop mode. To be released from the
bus-off state, the module must enter the initialization mode once. If the module is in the
CAN sleep mode or CAN stop mode, however, it cannot directly enter the initialization
mode. In this case, the bus off recovery sequence is started at the same time as the
CAN sleep mode is released even without shifting to the initialization mode. In addition
to clearing the C0CTRL.PSMODE1 and C0CTRL.PSMODE0 bits by software, the bus off
recovery sequence is also started due to wakeup by dominant edge detection on the
CAN bus.