This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28335 CAN is full duplex or half duplex

HI

I have sucessful CAN communication established between two F28335.Both can communicate with each other .But is this full duplex or halfduplex?

1.I can transmit data from DSp1 to DSP2 or vice-versa.

2.Now I want data to be transmitted from DSP1 to DSP2 and simultaneously from DSp2 to DSP1.For this,I am using CAN module A,MBOX1 = Tx,MBOX2 = Rx in both the DSP's.But no communication happens.Is it because at a time it will work in only one direction.

ANy help woule be appreciated.

Thanks & Regards

Sneha

  • CAN, by definition, is half-duplex.  Think about the acknowledge bit: the transmitter will "send" a recessive bit but the receiver will pull it to a dominant bit if the checksum is correct.

    A good introductory book on CAN is:

    http://www.amazon.com/Comprehensible-Guide-Controller-Area-Network/dp/0976511606/ref=sr_1_2?ie=UTF8&qid=1423494452&sr=8-2&keywords=can+bus

    But since the CAN module should be able to handle collisions and perform retransmission, you should still get both messages through; just not at the same time.

  • HI Quark

    I tried implementing to transmit and recieve message simultaneously but faied.Message was not recieved even after sometime too.

    So,I am trying to use interrupt and put transmission once from 1 to 2 and then from 2 to 1,Is this possible?I am working on it,but still lots of errors to be debugged.

    Please suggest something.

    Regards

    Sneha

  • I would suggest putting scope probes on the CAN-TX pins of both controllers. That may provide a clue. Did both controllers try to transmit? Was there any collisions and retries?

    Also, for a baseline, take a snapshot at the scope outputs when you did your test that you described in (1) where each transmitted correctly. This may be useful later on for comparisons.
  • Hi quark
    Thanks for the reply.
    i am observing the TX pins but no attempt.
    And yes I have the sanpshots of succesfull transmission.I will Try to make some changes.

    Regards
    Sneha
  • I take it that you mean BOTH controllers did not attempt any transmission. Check the bus (you can probe the CAN-RX pins). CAN modules will begin transmission ONLY if it receives a RECESSIVE bit level. If you probe RX while running your working code, you will see which is the recessive level (I forgot if it's low or high, I think high).
  • HI quark

    Thanks for the support.

    The problem is resolved.

    Yes,you were correct,both the controllers were trying to transmit but after a while it would stop and there would be no re-transmission again.

    I didnt use the interrupts,Only by putting certain loops to get it work in one direction at one point of time made it run.

    Thanks & regards

    Sneha