CAN bus acknowledge curiosity

Thread Starter

Xkyve

Joined Nov 30, 2012
32
I'm using the following CAN Transceiver:
http://www.nxp.com/documents/data_sheet/TJA1043.pdf
with a microcontroller with integrated CAN controller.

The CAN communication works fine between my two nodes. I have one node that only transmits and the other only receives. If I place the oscilloscope on the TX line of the transceiver of the transmitter I can see activity, but when I place the probe on the RX line, I see no activity.

Until now, I thought that what's transmitted on the TX line ca be seen on the RX by the transmitting node, so that when the ACK bit is sent (logic 1), the transmitting node can confirm that the receptor has successfully received the frame (the receptor pulls the ACK bit to logic 0).

My question is, how is the acknowledge done if the transmitter can't see what's being transmitted?
 

Sal Ammoniac

Joined Jun 30, 2010
16
I just tried it on my system (CAN controller in an LPC4357 and a TI SN65HVD230 CAN transceiver). I see receive activity on the node that transmits whenever it transmits a frame. The receive activity is the ACK coming from the other node on the bus.
 

JohnInTX

Joined Jun 26, 2012
4,787
Until now, I thought that what's transmitted on the TX line ca be seen on the RX by the transmitting node, so that when the ACK bit is sent (logic 1), the transmitting node can confirm that the receptor has successfully received the frame (the receptor pulls the ACK bit to logic 0).
Your assumption is correct. Each bit sent on TX should appear on RX so that the controller can monitor for collisions and get off the bus if a higher priority message is being sent. The ACK bit confirms that at least one receiver received the message correctly (even if it discards it). You should indeed observe the transmitted data on RX, bit for bit, shifted in time a little perhaps.

If its really not getting any RX data, the controller status flags should indicate no acknowledge, bit errors etc. Speculating but maybe the controller continues to send the message since if the RX state is recessive, it thinks 'no collision' and keeps on transmitting... Its been awhile since I've done a low level CAN interface so don't recall all of the particulars, sorry.

Good Luck.
 

Thread Starter

Xkyve

Joined Nov 30, 2012
32
Thank you for your answers. You are indeed right. I can see activity on the RX line after re-soldering the test point.
 
Top