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.

ISO1050 - Isolated CAN recommendation

Other Parts Discussed in Thread: ISO1050

Hi Iso team,

I have a customer who wants to isolate his CAN bus, but they don't like the fact that the ISO1050 takes the CAN_L and CAN_H signals and converts them to TX and RX digital lines (so iso + transceiver in one). They would prefer the part take CAN_L and CAN_H signals in, and have CAN_L and CAN_H signals out. 

Can we use a different digital isolator (without the integrated transciever) to achieve this? the problem i see there is the CAN_L and CAN_H lines essentially reference different high and low levels, so it almost sounds like we would need two digital isolators, one with an input VCC of 3.5V and GND of 2.5V, and another with an input VCC of 2.5V and GND of 1.5V....

There's the 1MBPS datarate to factor in as well.

Any ideas on the best way to achieve this and/or part recommendations?

  • Hi Brian,

    It is a general practice to isolate CAN interface at a particular node having an MCU/MPU on CAN bus. Most MCU/MPUs generally do not include CAN transceiver and hence have only TX/RX digital lines. ISO1050 connects to such MCU/MPUs to isolate and convert logic levels to CAN compatible voltage levels.

    Does your customer has CANH/CANL lines directly available on MCU/MPU or does he want to isolate CAN bus at a non-nodal point?
    One way to achieve this is to use ISO1050 and a non-isolated CAN transceiver to convert TX/RX lines to CANH/CANL. The only flip-side of this approach is that it would increase the overall loop delay.

    I can't think of any other better approach to achieve this and we currently do not have a device that isolates CAN bus lines has CANH/CANL lines on both sides.

    Regards,
    Koteshwar Rao
  • I reached out to the CAN transceiver guys internally and this was their response to this idea:

    "Even without taking loop delays into account, it is problematic to directly interface the logic (TXD/RXD) interfaces of different CAN transceivers. Since CAN is always a half-duplex architecture, the bus-side transmitter and receiver always share the same connections. This means that any signal that is transmitted (passed from TXD to CANH/L) is also simultaneously received (passed from CANH/CANL to RXD). If you then cross-connect TXD from one transceiver to the RXD of another, you would end up creating an infinite loop. A dominant state received on bus “A” would go through RXD A to TXD “B,” resulting in bus B to go dominant. This would then hold the RXD B dominant, which would in turn drive TXD A dominant. The whole system would be stuck in that state until a time-out occurred.

    If the TX/RX lines are unusable because there is already a CAN transceiver in the MCU, it would be better if they could get around this entirely by avoiding it and sticking with the transceiver inside the ISO1050. "

    If that isn't an option, there is not really a good way to do this at all.

    Brian
  • Hi Brian,

    Yes, the creation of infinite loop by connecting two transceivers back to back seems be a problem, hence this may not work.
    As requested earlier, could you please let me know if customer has CANH/CANL lines directly available on MCU/MPU or does he want to isolate CAN bus at a non-nodal point? System block diagram indicating where customer wants to isolate would help us understand the requirement better.

    If the requirement is to create an isolation in the middle of a CAN bus creating Bus A and Bus B that are galvanically isolated but still forming the same then the following approach can be followed. I understood that connecting two transceivers back to back isn't going to work as these transceivers are meant to be used at a nodal point where the point of communication terminates.

    There is a proposal from my side that I believe is going work in this case. Instead of connecting two transceivers back to back, having an MCU in between to manage these two transceivers and control the direction of data flow may address the issue. The MCU is to be coded such that it allows bus arbitration, relays data in the direction requested, releases bus after data transmission is complete and waits for next bus access request. If this is managed I guess this approach should work.

    If isolation is required at a nodal point where MCU directly has CANH/CANL lines then the easiest way to do this is to use UART/GPIO lines of MCU isolated and communicate through ISO1050.

    I hope that answers your question, let me know if you have any questions. Thank you.