Tool/software:
I am using the TCAN1145 transceiver. Suppose my ECU has only one CAN-specific frame (within a specific range) as its wake-up source, and the TCAN1145's INH pin controls the power supply of the MCU. Currently, I am conducting tests. When the wake-up message is sent normally, the ECU can be woken up, and when the wake-up message stops, the ECU can enter sleep mode as expected.
Here’s a scenario: my ECU is connected to CANoe, with two nodes on the same CAN bus. CANoe sends a wake-up frame to keep my ECU in a normal working state. At this point, if I disconnect one of the CANH or CANL lines, CANoe shows "NoACK." If I process the situation according to the normal sleep process, the board will enter sleep mode. However, after reconnecting the CANH or CANL line, the ECU cannot wake up, and even restarting CANoe does not help. The only way to resolve this is to reboot the TCAN1145 without a power cycle.
If I handle the issue by, for example, clearing the SWCFG
bit (essentially disabling selective wake-up and retaining only basic CAN wake-up functionality), the ECU repeatedly enters sleep and wakes up. Once the CAN line is restored, the ECU also returns to normal operation. However, as per the TCAN1145 datasheet, disconnection of CANH or CANL (resulting in "NoACK") will not cause an error overflow in the TCAN1145. Therefore, disconnecting one of the CAN lines should not lead to error frame overflow or prevent the transceiver from sleeping normally. Logically, once the CAN line is restored, the ECU should be able to wake up normally.
On page 85 of the TCAN1145 datasheet, under the description of the SW_CONFIG_4
Register, it states:
“NOTE: Writing to any of these wake configuration registers (8'h30–8'h44, 8'h46) clears the SWCFG bit.”
Previously, I wrote to the SW_CONFIG_3
register (address 46h), which cleared the SWCFG
bit, effectively disabling CAN selective wake-up. As a result, the TCAN1145 would power the MCU as long as there was any CAN activity on the bus. With only one CAN line connected, it is impossible to detect the correct wake-up frame, so the logic would power down. This causes the ECU to repeatedly power up and down.
I also attempted to force the SWCFG
bit to 1
before entering sleep mode. This allowed the ECU to enter sleep mode. However, after sleeping, the ECU could no longer wake up, unless I performed a power cycle to restart the TCAN1145 (essentially rebooting the entire ECU).
Where is the problem?