I have a CAN bus running at 1 Mbps with a TM4C129XNCZAD (15 quanta/bit, TSeg1, TSeg2, SJW = 13, 1, 1 (register values+1)) and a SN65HVD230DR at one end (TXSPG, RXSPG) and a LM3S2793 (10 quanta/bit, TSeg1, TSeg2, SJW = 8, 1, 1 (register values+1)) and a SN65HVD230DR at the other end (TXTCU, RXTCU). I'm monitoring the RX and TX pins so I don't load the bus. This is a long bus; I'm seeing the same issue with 500 ns and 600 ns total loop delays (from Tx to Rx).
Here's the message showing an error, and then successfully transmitting on the next try:
And here's the zoom at the end of the first packet:
The end of the CRC Delimiter from TXSPG ends very near the center of the screen. Just after the middle of the screen TXTCU responds with an ACK that is detected by RXSPG after traveling down the transmission line, and then TXSPG throws an Active Error within the same bit time. Why?
Per the Bosch standard, I see the following:
This is one bit time too early to be an Ack Error (flag starts at the next bit, not during the Ack Slot).
This is two bits too early to be a CRC Error (flag starts at the bit after the Ack Delimiter)
Bit errors have an exception during Arbitration and Ack, so it is not that.
Previous bits in the CRC were 0b10110110 (0xd6) so it is not a Stuff Error.
That only leaves FORM Error (SOF, EOF, ACK Delimiter, and CRC Delimiter per sloa101b.pdf). SOF was many bits earlier, and ACK and EOF are still in the future, so the timing makes this look like a CRC FORM error, but I'm not seeing it.
What am I missing?
