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 node cannot send or receive data with other nodes

Other Parts Discussed in Thread: TMS570LS3137

Hi,

I encounterd a problem about the CAN bus network with the TMS570LS3137, the situation is
below:

I have 3 can nodes, the first is the TMS570 board(we named it A)(designed by myself, the can receiver is HVDA541), second is the PCI can board(B)(designed by another company,it's a mature product,the function here is just to observe the data send or receive on the can bus using the company's software),the last node is a SJA1000+82C250 board(C) which is designed by our engineer years ago and used in the filed for years.

The problem is that, when power up the A and C, the A and C can communicate with each other at first, but the C cannot send data(the SJA1000 status register reflects that the transmission is incompleted) after a whlie(it's not sure,about several minutes), receive is successful. At this moment, the A and B can send or receive data to or from the CAN bus, it seems that the C can never send data again unless reset the C board.

While when the can node number is only two(A and B or C and B), the send or receive can be stable for a long time. While if only A and B, the problem still occurs.

The baud rate of the CAN bus is 1000 kbps(1M), because the C board is used in the industrial field so the baud rate should be unchanged.

What confused me is that why when both A and C work on the bus together, the C board cannot work properly? What makes that happen and how to avoid it?

By the way,if the number of the can node will be more, how to make every node can receive and send data successfully?

Regards,
yong

  • Hi Yong,

    it is not enough information to debug this issue as the issue can be in transceiver, board connection, software, etc.

    I assume that you designed the TMS570 board and not using the HDK board.

    can you try one experiment by using hte TMS570 HDK board to communicate with board B & C?

    That would help narrowing down to where the potential problem could be.  

    If the TMS570LS3137 HDK can communicate with node B and C, then, you can narrow down to scope your board A by transmitting a message and observe at TX/TXEN digital side of CAN transceiver and scope the CAN-H/L to ensure that correct information is observed on both side.  Same for RX.  I would suggest try simple single board to board communication at a time.

    The CAN on TMS570LS3137 had different CAN instances, but each should be able to handle up to 32 mailbox at least.  So, assume each mailbox can filter to a particular ID, that means you can communicate to at least 32 ID.

  • Thanks for replying, the TMS570 board is just what I designed, I've tried communicate the boards with only two of them,  the board A & B, B & C can communicate with each other properly, only A & C cannot communicate stable, does this situation can clarify that the A board I designed is ok? 

    What I thought is may be something software settings is not that proper may led that. I've tried to lower the baud rate to 500k, then the communicate is ok between A & C, while I just don't know why is that, and do not know how to make it work when the baud rate is still 1000k.

    There is another problem is that a board D(also sja1000 and 82c250, for antoher application), when the baud rate is 1000k, it can communicate with the A, but when the baud rate change to another lower(100k or 500k), the A board can communicate with D only when one message box 2 to transmit and message box to receive can frame.In details, if you send a data frame to D only with the message box2 for once in the program, the D can receive it, but if you send a data frame to D using message box2 first and then send another can frame(not to the D board) to the can bus using another message box(may be 3 or some other), the D cannot receive the data frame which could be received when using only message box2. I don't know what makes that happen. But both the can frames sended  by messagebox2 and the other can be received by the B board.

    I don't know why is that happen, later I will try to send all messages by one message box(of course I will reintialize the can messagebox control register,  is that enough just to change the IF1ARB regeister again to the proper ID?), to find whether it can work properly communicate with the D board when the baud rate is below 1000k.

    Hope to find the reasons.

    Regards,

    yong

  • Hi Yong,

    it is still very challenging to imagine anything that can goes wrong.

    It sounds like some kinds of timing issues.  

    Do you have a CAN analyzer where you can hook up your board A to it and start to send / receives CAN frames to different mailboxes?  That is probably the best debug tool you can use now.

    You can then, sweep to different baudrate on both your board A and CAN analyzer and see if it starts to fail at some points.  At the failing point, start to plot the RX/TX/TXEN and CAN_H/L of the transceiver to inspect for any abnormality.  

    Like I have suggested earlier, first thing is to try to use our HDK board CAN transceiver and communicate with all your board B/C/D to ensure that your software is solid at all different baud rate.  The HDK CAN and transceiver H/W design should be solid and use this to check your software communication.

    Other than trying these, i have no other idea how to start to debug your problem.

  • Thanks very much for your suggestion, actually it was a problem of timing issues. Now I've solved the problem, your suggestion helps a lot!

    Thanks again for replying.

    Regards,

    yong