Hi all,
I got a CAN bus issue on S12 MCU with TJA1042 CAN transceiver.
Node A received message and 'ACK back', but host(S12 + TJA1042) could not detect the ACK.
The result is host continued to re-sent message and then bus heavy.
I found the signal level of ACK(can low to can high) is larger(over 2V) than other CAN bus signal.
Does this cause ACK fail or other error so host re-send message again and again.
By the way, if I add a PCAN tool connect to laptop and open PCAN-view to check data, host would detect the ACK(from PCAN-view??) and would not re-send again.
The circuit and waveform are below:
Hi,
most probably the issue is caused by imprecise setting of CAN bit timing or insufficient bus termination. Check both.
The host is not detecting ACK pulse properly, thus get ACK error and resent the message automatically.
The voltage level will not cause issue, but must be placed at right time; differential voltage represent dominant signal.
BR, Petr
Hi Petr,
Thanks your reply.
I have checked the impedance of both sides.
Only host device is 120 ohm, while connect to slave it become 60 ohm. I think this value is right.
And in S19 setting, I set BTR0 = 0xC0 and BTR1 = 0x50.
With 8M osc. the bit rate should be [1*(1+6+1)]/8M = 1us.
Is there any other registers need to check again?
BTW I used to enable CANTARQ to abort request and let the message send only once,
but this would not meet my function: a stable 250ms cycle time message report.
(the waveform is below. message loss frequently)