-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
imix sensors power bugs tracking issue #14
Comments
Finding: the I2C lines are screwed up while the nRF is power-gated because they are not isolated Initial testingFollowing the steps above on your branch (commit: efd845) with:
Running miniterm.py with I cannot directly replicate your results with this setup. I find the RTS line to have no impact on the sensors app. Testing nRF enableIn these tests, Imix is powered through USB (from a high-current USB port) and Running the low power app on the nRF51822:
Running the tock-nrf51822-serialization-sdk11-s130-uart-conn app on the nRF51822:
Actually disabling the nRFNoting that 2.6-2.8 volts is probably enough for the nRF to be running. I tried directly tying the Adding a "Starting" message to the start of the app shows that the app is not restarting. Rather, the SAM4L is hanging and then continuing the application. Inspection shows that the I2C bus connecting the SAM4L, nRF51822, and Sensors falls to 0.3 volts when the The problem is that the I2C bus is pulled up to Things that are wrong
FixesWe had to deal with both of these problems on the Signpost platform. Taking a look at the backplane hardware rev B (
The SIP32401A has a really tiny package that's a little hard to get right by hand. If you expect to hand-solder boards you might want to find another part. Also, both of these parts were selected to fit the low current draw requirements of the Signpost platform. There might be easier to use / less expensive versions that have a higher current draw. |
Quick follow-up on those parts, the I2C isolator is actually the more challenging package. I had maybe a 75% success rate on hand-soldering those on first try, 90% on the power switch. That said, they're easy (ish) to validate install with a quick electrical test and usually one reflow was good enough to get them working so not the worst by any means. |
Following up with @brghena's post, I believe the NRF is getting back-powered through the IO lines from the SAM4L. @kwantam's explanation for this behavior:
|
I think this is essentially what you're also getting at with the I2C lines not being isolated, correct? This issue affects some of the other subsystems that we're trying to power gate, so I'm going to open a new issue ticket for it. |
The current proposed fix for this issue is to use analog switches acting as pass transistors. I need to isolate the RF233 SPI (4 pins) and two I2C domains (4 pins), so two of the 74LVC4066 should work (thanks @kwantam). If I use the SIP32401 to solve #12, then I can use the same enable signals to activate the switches. Using an analog switch might actually also provide a fix to #13 if we can selectively connect/disconnect the FTDI DTR line. |
This solution assumes that we are OK with manually pulling all relevant GPIO lines to ground when a module is not in use (eg the RF233 RESET/IRQ/SLP pins, etc). |
/cc @brghena
There are some un-diagnosed, rather serious interactions between RTS3 and the sensor power rail.
To replicate the problem, first install the Tock kernel from
master
or thebugs/imix-power
branch of Tock:The, install the imix sensors app:
Finally, print the output from the app by running miniterm with
DTR
inactive (HIGH, attached to SAM4L reset) andRTS
active (LOW, default):$> miniterm2.py --dtr 0 --rts 1 /dev/ttyUSB0
You should get output resembling the following every second or so:
However, if RTS is forced inactive (HIGH), there is no output:
$> miniterm2.py --dtr 0 --rts 0 /dev/ttyUSB0
Note that the console turns off hardware flow control entirely.
Finally, attaching a patch-wire between NRF_EN and GND (to force the NRF51 on) results in output all of a sudden.
More symptoms
Under mainline kernel, with PB[06] assigned to RTS3, the voltage on NRF_EN and SENSOR_EN are never quite 0V or 3.3V. Instead they are closer to 0.06V and 2.2V, respectively. Removing the assignment of PB[06] to RTS3 (by either leaving it disabled or enabling it as an input, e.g.) results in either 0.04V or 3.2V (which seems reasonable?). The overall problem is not fixed, though, and in fact, it makes
--rts 1
stop working and the only way to get any output is to explicitly enable the NRF as well.The text was updated successfully, but these errors were encountered: