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.

CAN communication fails at 20m cable @1M

Other Parts Discussed in Thread: ISO7221B, ISO7221M, SN65HVD1040, SN65HVD255

4846.can waveform.docxHi,

I am testing my CANopen boards with 20m long cable communication@1M,  I used below setup and the two cards could communicate for about 7~8 seconds, then stop. when I use 5m cable@1M. the communciation was ok.

From the bus waveform we captured, It seems  that  the RX card can’t send the ACK signal to TX card, I attached the waveform.

The interesting thing I found is that the communication was ok when there was 120 Ohm resistor at one end of the bus( either end), but failed with both the resistors. When using short cable, the communication was ok with both the resistors.

Could you please suggest what may cause such kind of problem?

Thanks in advance!

Linda

  • I attached my schematic for reference.

    Thanks!

    Linda

  • Hi Linda,

    Could you send a higher resolution schematic picture? I am not able to read the text.

    Thanks!

    John

  • Hi John,

    Here is the updated schematic picture. Thanks! 

     Linda

  • Hi Linda,

    In your last picture you do not show the TX signal of the receiver board.

    My first reaction is that you could be running into a loop delay issue. If you look into the datasheet for the ISO7221B device it has a maximum propagation delay of 70ns. Therefore, the two way loop delay of your entire system will be 70ns (µC TXD signal to transceiver through isolator) + 230ns (total loop delay through the driver and back through the receiver) + 100ns (loop delay down 20 meters of cable) + 100ns (loop delay back down the 20 meters of cable) + 70ns (RXD signal from transceiver through isolator). This totals up to a maximum of 570ns of delay and it does not take into account the delay for the microcontrollers or the board trace delays and common mode choke delay.

    If you can grab some screen shots of the RXD and TXD waveforms coming from the microcontroller before the isolator, and after the isolator before the transceiver. I do not suspect a TXD signal is even being sent to the isolator or the transceiver. One option I would recommend moving to the ISO7221M device, since it is the device in the family that has the lowest propagation delay. It has a maximum one way delay of 16ns which is 56 ns faster than the B version which you are currently using.

    Thanks,

    John

  • Thanks John. here is the TX signal of the receiver board. And I captured the signal waveform attched.  The two cards could communicate for about 7~8 seconds, then stop, there is no ACK signal on RX port of sender board. And I can’t capture any waveform from TX port. Is this possible  any firmware related issue?

    4431.can waveform.docx

  • Hi Linda,

    If we are not able to verify that there is a TXD ACK signal leaving the microcontroller we won't be able to verify if the issue is related to the isolator or the CAN transceiver. If we could verify that there is no ACK signal originating at the micro then I think we can safely say it is something related to the CAN controller whether it is be firmware or not.

    If you cannot probe the TXD signals between the micro and isolator, and then between the isolator and the transceiver, can you try the faster isolator? The ISO7221M.

    Thanks,

    John

     

  • Hi John,

    Thanks for your reply.

    After I changing the isolator to be ISO7221M, the 20m cable @1M communication is ok now. but the original isolator ISO7221B should meet our requirement per the datasheet, it was proved that the communication was ok using ISO7221B at Pune where our fimware was developed, may be it happened occasionally, I am not sure if we could solve the delay issue from firmware side, could you please suggest what we could do to decrease the delay time from hardware or firmware side?

    Thanks,

    Linda

  • Hi Linda,

    You will always be limited by the total propagation delay in a system. I good rule of thumb is to keep the delay of isolator, transceiver and cabling in both directions to less than 1/2 the bit time. What do you mean by "the original ISO7221B should meet our requirement per the datasheet"?

    For ISO7221B, SN65HVD1040, and the cabling, you have a worst-case 70ns (one-way through the isolator), 230ns (two-way through the transceiver), 200ns (two-way cable delay over 25 meters), and 70ns (back through the isolator). As I was saying before this is a total delay of 570ns. This does not leave margin. This could be the reason you are seeing intermittent response from the system, where it sometimes works and sometimes doesn't. 

    Another option is to look at a faster transceiver like our newer SN65HVD255, which has a maximum total loop delay of 150ns (80 ns faster than the SN65HVD1040). Those are my two recommendations, use a faster isolator, or faster transceiver.

    Thanks,

    John