I want to communicate with a microcontroller over a CAN bus which needs (ideally) 120 ohm terminal resistors at the end of each bus. I want to integrate this resistor into the circuit and activate it only if it is needed (depending on which software is being flashed on the controller). Is it possible to switch a resistor using software?
Basically what I have in mind is something like this: What's the automatic equivalent of a variable resistor?. With only two states (120 ohm and 0 ohm open circuit) switched by a digital signal from the microcontroller.
Answer
There are a couple ways of doing the termination with CAN (from AD application note AN1123):
Here is one scheme that uses switched termination to a common mode level, using two smallish p-channel MOSFETs. Raising the gates to +5V turns off the termination.
As an alternative, there are some pretty low-resistance analog switches available (a couple ohms or less) which might simplify things but you'd have to analyze how well they'd do with ESD etc., and many won't handle even 5V. For example the TS5A3167.
No comments:
Post a Comment