The MCAN module implements debug
suspend feature. The module operation suspends when the CPU
is halted for debug with MCANSS_CTRL.DBGSUSP_FREE = 0.
When CPU halt signal is asserted
to MCAN and if MCANSS_CTRL.DBGSUSP_FREE bit is set to 0, the
clock stop request is asserted to MCANSS.
MCAN completes pending operations
and sets CCCR.INIT = 1 once the CAN bus becomes idle and
subsequently asserts clock stop ack signal.
This clock stop ack status is
captured in the CCCR.CSA bit, but is not captured in the
MCANSS_CLKSTS.CLKSTOP_ACKSTS bit within the MCANSS.
The clock stop ack status in the
MCANSS status register is masked based on the clock stop
request bit in the MCANSS_CLKCTL register.
Both HCLK and CCLK continue to
run and are not gated under this condition. This allows
debugger accesses to message RAM and CAN registers when the
module is stopped.
When the CPU comes out of debug
halt, the clock stop request is deasserted to MCAN core. CAN
core deasserts clock stop ack signal once the clock stop
request is deasserted.
At this stage, if
MCANSS_STRL.AUTOWAKEUP = 1. then the read-modify-write
mechanism in the MCANSS automatically makes CCCR.INIT = 0
and reenables MCAN operation.
If MCANSS_STRL.AUTOWAKEUP = 0
when cock stop ack signal is deasserted due to CPU coming
out of debug halt, then MCAN operation must be reenabled by
software by clearing the CCCR.INIT bit.
If there is any activity on RXD
pin while MCAN is stopped due to CPU debug halt and if the
MCANSS_CTRL.WAKEUPREQEN = 1 then clock stop wake signal is
asserted by MCAN core.
This does not take any effect on
clock stop request as that is controlled based on debug
halt. Clock stop request is deasserted only when CPU comes
out of debug halt.
Clock stop wake interrupt is not
generated even if CANSS_CLKCTL.WAKE_INT_EN = 1 in this
scenario as clock stop wake output from Bosch CAN controller
is masked based on the clock stop request bit in the
MCANSS_CLKCTL register.
When CPU halt signal is asserted
to MCAN and if MCANSS_CTRL.DBGSUSP_FREE bit is set to 1, the
clock stop request is not asserted and MCAN continues to
remain in operational state. The reset value of
MCANSS_CTRL.DBGSUSP_FREE bit is 1 which keeps MCAN
operational when CPU halt is asserted.
During suspend mode the
auto-clear feature is disabled. The following register
fields have an auto-clear feature: