As a hobby project, I created an IoT module that allows to control and monitor heating boiler remotely over CAN bus. The bus runs at 125k and is relatively short.
Usually, after a few hours of normal operation, when transmitting a frame from my module, I get a Bus Error on TX Data.
My module is connected as a stub (no termination - R9 not mounted). Looks like the bus is terminated inside boiler (getting 60Ohm between L and H). My MCU is ESP32 and I've choosen SN65HVD230DR (3.3V) as a transceiver. RS value is 47k and it should be theoretically optimal.
I've tried different drivers and BRP settings - still getting same error. Ended up with software workaround - reset and retransmit cached frame.
I suspect few things:
- Voltage diff (this is 3.3V transceiver and might not be able to drive sufficient voltage level, but they say in datasheet it is compatibile with 5V transceivers).
- Bit timings (clock drift or something, need to check it but I need some time to setup equipment in the basement).
- ESP32 errata issue.
- Slew rate.
What might be the cause of occasional bus errors? What should I try next?