Post History
My first knee-jerk reaction was to use opto-isolators. There are some that have been around for decades and are unlikely to go obsolete any time soon. I wasn't previously aware of these "digital ...
Answer
#1: Initial revision
My first knee-jerk reaction was to use opto-isolators. There are some that have been around for decades and are unlikely to go obsolete any time soon. I wasn't previously aware of these "digital isolators". They seem like they go thru a lot of trouble to ultimately do what opto-isolators do. I'd be more worried about sourcing problems for these than optos. They do seem to have advantages in niche cases, like lower current requirement and direct digital signal in and out. However, the description of your problem doesn't indicate these would be particular advantages. Your main concern is radiated emissions. The main way to address that is to make sure signals are filtered to not include high frequencies. At 50 kbit/s, you have 20 µs per level. A 2-pole low pass filter that takes 5 µs to settle within 90%, for example, sounds good enough. The result would control the current thru the LED of an opto-isolator. On the other end, don't make your circuit "snap" (hysteresis). I'd again use a 2-pole RC filter so that the output signal has a finite rise and fall time. Even with 5 µs time from 10% to 90%, a regular digital input should have no problem solidly interpreting the signal without bouncing. It would be OK to use a Schmidt trigger input as long as the resulting signal stays internal to a chip. None of the above sounds hard to do, nor would require unusual opto-isolators so that you might have future availability problems. <h2>CAN</h2> The real problem is the way the CAN bus works. CAN is always bi-directional, and there are multiple things going on within a single bit time. Whenever the sending node is "writing" (actually just letting the bus go) the recessive state, it checks to make sure that nobody else is writing the dominant state. This is how collisions are detected. The node writing the recessive state aborts the message. The node writing the dominant state never knows there was anyone else out there trying to write, and just keeps on sending its message. When the current message is over, all nodes that have something to send will try again. The ones that have recessive states where others have dominant states drop out, and one message is ultimately sent. When that message is over, the remaining nodes retry, etc. Neither opto-isolators or your digital isolators allow for this. You will have to guarantee at a higher level that no node on the output side of the isolators tries to send while one on the input side of the isolators is sending. Another problem is the ACK bit. Every node that sees a valid message on the bus asserts the bus during the ACK bit time. If the sending node doesn't see ACK asserted, it assumes a transmission error and tries again. If this continues to happen, it goes into various error modes with causes the node to get off the CAN bus, at least for some time period. You therefore have to make sure there is another node on the same segment that can provide the ACK bit. These are all solvable problems, but you have to think about them. I won't go into more here because this has nothing to do with radiated emissions, and both your proposed isolation methods have the same issue.