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.

SN65HVD251: SN65HVD251

Part Number: SN65HVD251

SN65HVD251 isolated CANBUS

I have 3 nodes A, B and C communicating via canbus. Node A (Main controller) interfaces physically to both B and C via 2 dedicated connectors.

Node B is powered from Node A and is referenced to the same ground as Node A (cannot be changed).

Node C must however be galvanic isolated from the Node A (and B) ground reference.

I have used 2 pcs SN65HVD251 transceivers for this purpose. One is interfacing to the Node B connector CANH/CANL lines (SN65HVD251 is referenced to Node A ground).

The other transceiver, interfacing to the Node C connector CANH/CANL lines, is powered from an isolated 5V supply and in addition D(CAN Transmit) and R(CAN Receive) lines are isolated from the power supply via a dual channel digital isolator (Si8621).

Both the D(CAN Transmit) signals are tied together and connected to my micro-controller CANTX port, the two R(CAN Receive) signals are gated to the micro-controller CANRX port via a 2-port AND-gate.

The main controller is continuously broadcasting can telegrams which are received correctly at the both Node B and Node C, as expected.

However, when I try to send a telegram from Node B I get a lot of “STUFF Error” messages and when trying to send a telegram from Node C I get a lot of “BIT Error” messages. Can anybody help out and maybe propose a better solution?

  • Christian,

    Thank you for bringing this issue to our attention. I just want to make sure I understand the setup completely, if you have any schematics, waveform screenshots, or a block diagram to share that would be great!

    • "...in addition D(CAN Transmit) and R(CAN Receive) lines are isolated from the power supply via a dual channel digital isolator..."
      • Do you mean the signals coming from the micro controller are isolated from the transceiver? Or the pull-ups on TXD and RXD are isolated?
    • "Both the D(CAN Transmit) signals are tied together and connected to my micro-controller CANTX port, the two R(CAN Receive) signals are gated to the micro-controller CANRX port via a 2-port AND-gate."
      • Do you mean both the D and R signals from nodes B and C are tied together to one Microcontroller that controls both nodes? And that is separate from the controller of node A.

    Thanks for bearing with all the questions, I want to make sure I fully understand the system before I approach the problem you are seeing.

    Regards,

  • Hey Eric

    Thank you for your swift response.

    I have attached a simpel block diagram of the set-up.

    Best regardsIsolated CANBUS.pdf

    Christian

  • Hey Eric

    I have been in a meeting the whole day and have therefore not had a chance to provide additional data to you.

    Do you need more info from me in order to evaluate my design?

    Best regards

    Christian

  • Christian,

    I wasn't able to get to this today, but I will look tomorrow and have a response.

    Regards,

  • Christian,

    From the problem description you've given, it sounds like the correct thresholds aren't being met on the bus. A BIT error is given when the level of the bit that was received doesn't match what was transmitted, and the STUFF error indicates that six bits of the same state were received (think bit stuffing on the controller side). In both cases, it is apparent that the correct voltage levels aren't being interpreted correctly by the transceiver from the bus, or the transceiver driver is having trouble driving the correct levels to the controller. The former seems more likely.

    There could be two possible causes of this: since isolation is being used, the GND references could be off between the three transceivers, though it doesn't look like you've connected anything incorrectly. The other cause could be too much capacitance on the bus, but in your application this doesn't look to be the case.

    • Can the customer, just for testing purposes, keep the GNDs consistent (don't isolate node C from A and B) and see if the errors go away? If they persist, try connecting the 5V all together and see if they go away.
    • Is there any way to get oscilloscope screenshots of the bus while the errors are occurring? And probe before and after the AND gate?
    • Can you explain the function of the AND gate? Both nodes B and C are receiving the same information from the main controller, and then the laptop and control panel are supposed to respond with a dominant bit otherwise the response is recessive. What exactly is this application?

    Regards,

  • Hey Eric

    Thank you for your inputs, appreciate it.

    I will try se if we can do the tests you propose and will let you know.

    The AND-gate was put there because we didn't want to tie the two R outputs together in order not to damage the tranceivers.

    Best regards

    Christian

  • Hi Christian,

    Just curious - were you able to do any further testing to try to figure out the root cause of this issue?

    Regards,
    Max
  • Hey Max

    I think the problem is that the devices can't see each others' messages(collision), and I also believe it can be solved by adding additional 2 AND-gates to model the CAN bus' dominant state such that the TX signals are AND-gated with the other devices transmitted data. I will test it mid next week and will let you know and will describe the modification more detailed.

    Best regards

    Christian

  • Hi Christian,

    Thanks for the update.

    That makes sense that there would be issues related to receiving data from one bus without the other bus being aware. You have to be careful in how you implement the logic that would bring the TXD/RXD signals between transceivers, though. You could end up in a situation where a dominant state on one bus prompts the other bus to go dominant, which would then in turn drive a dominant back on the first bus, resulting in an infinite loop which locks up both buses (until a time-out occurs and the process starts over). Since the logic is a little tricky you may want to take a look at the implementation in this TI reference design:

    www.ti.com/.../TIDA-01487

    This is designed to bridge a non-isolated CAN bus to an isolated one and vice-versa without requiring additional CAN controller ports (e.g., on an MCU), so it seems to be fairly similar to what you are trying to accomplish.

    Regards,
    Max
  • Hey Max

    Thank you very much for your link to the TI reference, it seems to be what I'm looking for, I will take a closer look at it today.

    For your info I have attached a schematic of what I had in mind before you sent me the link to the TI reference design, I guess this design could end up in an infinite loop as you explaned earlier.

    Bnew isocan.pdfest regards

    Christian

  • Hey Max
    The design in the TI reference was just what I was looking for, I believe it will resolve my issue. Thank you very much for helping me out on this one.
    Best regards
    Christian
  • Hey Max
    Thanks a lot for your help.
    Best regards
    Christian