CAN bus acknowledge curiosity

Discussion in 'Embedded Systems and Microcontrollers' started by Xkyve, Sep 3, 2014.

  1. Xkyve

    Thread Starter Member

    Nov 30, 2012
    32
    2
    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?
     
  2. Sal Ammoniac

    New Member

    Jun 30, 2010
    16
    1
    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.
     
    Xkyve likes this.
  3. JohnInTX

    Moderator

    Jun 26, 2012
    2,345
    1,028
    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.
     
    Xkyve likes this.
  4. Xkyve

    Thread Starter Member

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