CAN Bus tderror fills up

I am using a STM32F446. I have verified this issue exists on both the nucleo dev board and my custom PCB.

When writing to either can1 or can2, if there is a moderate bus load (500+ frames per second) then I am constantly getting tderror’s.

Initially the bus would just turn off after getting 255 tderrors (happens in a few second), however by enabling ABOM as per: CANBUS gets flooded with tderror and rderror - #2 by hudakz

The canbus automatically recovers. However this is a bodge solution, and will not work for my application as the time it takes the can bus to recover causes another ECU to timeout.

Is there a way to ignore transmit errors without a can reset?


Update: I have fixed by both enabling external 8mhz clock, and enabling automatic bus re-transmission!