I have been plagued by a sensor sub-system which, when connected to my base micro-controller platform, intermittently causes issues that I would categorically associate with power sequencing issues at start-up. Some examples of things I have sometimes observed to apparently happen with this sensor subsystem attached:
- processing board won't come out of reset / start its program
- processing board experiences program (flash) corruption
- processing board experiences data (eeprom) corruption
- processing board fails to accurately read values stored in eeprom
- processing board fails to initialize external SPI / I2C device
The sensor sub-system interface is a UART (RX and TX), and power is delivered to it through the processing board, which also has a FET-based high-side switching circuit gating the 5V to the unit, which gives the processor board the ability to shutdown / power-on the sensor sub-system. For your reference, here is a schematic excerpt of the high-side switching circuit.
That circuit has never really worked as I had intended. My firmware can, sure enough, shut the sensor sub-system down. But it can't power it back up without taking a reset itself. What a nightmare! But at least it can shut it down in the case of a communication failure mode, so I've lived with various firmware workarounds / behavioral patterns for a while. Settling for workarounds has been a curse though, and I really want to get to the bottom of it.
I've been over it in my head a lot, and I haven't been able to narrow down a root cause with certainty, so I think it's time to seriously reconsider my integration strategy in order to better decouple the power distribution between the processing board and the sensor sub-system somehow.
My system is powered by a 5V/2A AC/DC power supply that has plenty of headroom (at least 50%) for the whole system to operate. The processor sub-system is of my own design, the sensor sub-system is commercial off-the-shelf, I can't change it.
So here are some questions:
- What kinds of design changes would you consider in my situation?
- What coherent explanations are there for why my processor sub-system can't power down and then power up the sensor sub-system without taking a reset itself?
- What steps can I take to make my design more robust / reliable without breaking the bank (after all, it's not a safety critical system or anything like that)?
Cross-referencing tangentially related quesiton / consideration here.