CAN Bus Activity Detection - Without a Tranceiver - Page 1
Forum section: electronics / projects

author: kjn
author_rank: Newbie
timestamp: March 26, 2021, 10:26:08 pm
content: So I am working on a project which has some tight power requirements.The problem I am having at the moment is about the low power/sleep state:The MCU will be sleeping and I want to wake it up when it detects activity on the CAN bus, when it is asleep the CAN peripheral is disabled, only the low power coprocessor/rtc is active.The obvious way to do this is to configure the coprocessor for edge detection interrupt on the pin for CAN Rx from the transceiver to trigger a wake.Once the main cpu is awake, reconfigure the CAN peripheral and then attempt to receive the next can transmission (missing the first frame that triggered the int would be ok).However, I am using an industrial CAN transceiver, which includes isolation for the logic as well as an internal transformer to provide an isolated power supply to the bus side of the transceiver.Subsequently its a pretty hungry unit (30mA standby rated, 16mA - 20mA actual) and its blowing my power budget by about 15mA.So to solve this power use, I plan to have a switchable rail that is controlled by the MCU that shuts down power to the transceiver when in sleep, this is relatively straightforward, but leads to the following problem:How can I (in a safe/reliable/isolated way) now detect activity on the CAN bus, where I don't have an ACTIVE transceiver?I figure I just try and do some edge detection between a dominant and recessive level on the bus, delta 2v, according to ISO specifications. But what is an isolated, low power way of doing this without loosing bus integrity?My initial assumption was to put an isolator between the Can Low and Can High, but this has the following problems:-in most cases I would need a resistor to lower the drive voltage for the optical element, this could effect the bus characteristic impedance (e.g. the two bus terminating resistors)-common optoisolators draw a not insignificant amount of power, for a single device case I suspect this is possible, however at 1mA and 100 devices you are looking at 100mA load, there is no way a bus could support this.-The bus is designed to be susceptible to extremely high voltages and transients. this is reflected in the transceiver choice, which is rated to 2500VDC isolation and can operate with a ground differential of up to 50VDC.While not an expected occurrence, I need to design against these. One of these transients would likely kill an optoisolator and then the board would no longer be able to "wake from CAN", which would be a service replacement of the optoisolator at the very least.I'm trying to be sensitive to part count and BoM cost. What other options exist that might achieve my goal of triggering an interrupt off bus activity, without a transceiver, providing galvanic and transient isolation to the MCU?

author: ogden
author_rank: Super Contributor
timestamp: March 26, 2021, 10:49:35 pm
content: One of possible solution - low cost CAN receive-only MCU which wakes-up main MCU through optocoupler.

author: David Hess
author_rank: Super Contributor
timestamp: March 27, 2021, 01:55:22 am
content: Quote from: kjn on March 26, 2021, 10:26:08 pmWhile outlandish in this day and age, I would at least investigate using a varactor diode bridge. Isolation is provided by a pair of signal transformers with one driving the bridge and the other reading it. When the voltage on the CAN bus changes, the capacitance of the varactor diodes changes which can be detected. I think Ethernet transformers would work well and they are cheap.https://www.electronicdesign.com/technologies/analog/article/21801819/whats-all-this-varactorinput-amplifier-stuff-anywayI think the entire assembly with bridge and transformer could be replaced with a double balanced mixer. When the input voltage reverses, the phase of the output also reverses.

author: JoeyG
author_rank: Regular Contributor
timestamp: March 27, 2021, 02:43:34 am
content: Is the CAN bus speed fixed?Could you high impedance AC couple the CAN bus though transformer and a peak detector on the output?

author: kjn
author_rank: Newbie
timestamp: March 28, 2021, 09:58:53 pm
content: Quote from: JoeyG on March 27, 2021, 02:43:34 amYes, fixed bit-time of 2000ns which is 500kbps.Recessive State of the bus (e.g. no activity) both CANH and CANL are pulled to 2.5V (above reference ground) (e.g. no difference between the lines)Then the bus goes into a dominant state CANH is pulled to 3.5V and CANL is pulled to 1.5V. (signalling a bit on the line - frame data)I think both the ideas above are pretty reasonable, I like the idea of using cheap/ubiquitous ethernet transformers, but they only come in a complete set.I just need a single pair in a small/cheap package - and component ideas?

author: dmendesf
author_rank: Frequent Contributor
timestamp: March 28, 2021, 10:53:37 pm
content: Look for transformers used for SPDIF isolation like PE-65612.

author: viperidae
author_rank: Frequent Contributor
timestamp: March 29, 2021, 01:20:11 am
content: Don't forget with can you can have pulses of up to 5x the bit time, so for 500k it could be from 2us to 10us.You wouldn't want your transformer to saturate and load down the bus

author: mjs
author_rank: Regular Contributor
timestamp: March 29, 2021, 07:08:10 pm
content: Look for low current optoisolators such as HCPL-4701.How fast do you have to be, i.e. do you have to catch the same message that wakes up the system or can you wait until next message(s) ? Low current is not always fast..