I’ve just received my first Particle mesh devices and checked the circuitry.
Is it correct that there is no external crystal?
At the moment, I see over 1mA during sleep and the missing crystal could have an impact on current consumption (according to Nordic several hundred uA)
Edit: Oooops, I’ve found the schematic and it seems there actually IS an external crystal. Sorry!
Sleep modes are not yet implemented as of 0.8.0-rc.25. Even though you can call System.sleep(), it doesn’t actually do anything, so it’s not representative of the actual current consumption in sleep mode.
@rickkas7 is it supported or at least tolerated to run the Mesh devices with other firmwares (like Zephyr)?
I’m trying to port the Boron 2G/3G and run into issues regarding the modem.
@derchris, 3rd party Zephyr firmware would ONLY be supported by that 3rd party. Particle would not guarantee their hardware to run anything but their own firmware.
@derchris, Zephyr is pay-for-play for commercial use. It wouldn’t make much sense for Particle to support 3rd party firmware since they have their own ecosystem. Particle’s firmware is also open-source.
FYI, we‘re currently working with our custom hardware which actually is pretty close to the Mesh devices (nRF52840 + BQ24295) which costs us 25$ in 100s units.
So if we could buy Xenons or Borons instead for 15$ (in case of Xenon) and were able to skip all the certification stuff it was great.
And I‘m not asking Particle to do my work. I‘ll happily port the HAL myself, but it would be great to get some support. At the moment, I can already completely use the Xenon, but I can’t get the modem UART up and running with Boron although VINT is high and logic translator is enabled - and it‘s hard to debug without testpoints obviously
HAHAHAHA! I thought you were talking about Zephyr, the Micropython platform!!!
I am not sure about certification with different firmware but @rickkas7 or @bko might help. As for the modem, you may want to look at the open-source firmware. Not sure if it’s released yet.
By the way, there are a few trace jumpers you can cut on the Xenon to disconnect the XC9258 voltage regulator. Then you can apply power to 3V3, such as from a Lithium coin cell battery. There are a bunch of caveats, but it should be possible to do that for really low-power use cases.
I also see about 35.5 uA in Zephyr sleep with no peripherals enabled when powered from LiPo. When powered from 3V3 directly connected to an external 3.06 V source with the XC9258 disconnected it drops to 33.0 uA. (With EN floating I see 224.4 uA, so the disconnect is definitely necessary.)
I suspect the bulk of what’s left is the 25 uA standby current of the MX25L flash. According to the data sheet its draw could drop to 5 uA if programmed into deep power-down mode.
I’m coming from BLE400s which are around 118 uA with an nRF51 and no flash so I’m happy.
@derchris The chip comes up in normal standby mode, which is 25 uA; deasserting CS# has the same effect of putting it into standby. You have to explicitly send a command to put it into deep power down mode which is nominally 5 uA. See command description section 12 (command byte 0xB9) and figure 22 in the datasheet.
My analysis above that 35.5 uA could be reduced significantly was based on the mistaken belief the CFI chip was the MX25L1606E, which has standby current (ISB1) of 25 uA with a deep-power-down current (ISB2) of 5 uA.
In fact the Xenon was updated to the GD25Q32C which claims a standby current (I_CC1) typically 1 uA, max 5 uA, which are the same values as the documented deep power-down current (I_CC2).
In practice, when I put the Xenon flash into deep-power-down mode the idle power current drops from 32.7 uA to 23.1 uA (9.6 uA decrease) when powered directly from 3V3 (XC9258 disconnected), and about the same (35.2 to 26.9 = 8.3 uA decrease) when powered by LiPo (XC9258 connected).
So I suspect the GD25Q32C data sheet lies when claiming I_CC1 and I_CC2 are the same at 1 uA typical, but going to deep power down mode is likely to only reduce current by about 8-9 uA. More reduction might be possible by tuning the GPIO configuration.
Update 2019-02-13: Checking the device JEDEC ID and the contents of the SFDP register, the replacement SPI NOR device is not the GD25Q32C but rather the Macronix MX25L3233F, which documents ISB1 (standby) as typically 10 uA and ISB2 (deep power-down) as typically 3 uA. Much closer to the observed 8-9 uA difference.
I’ve also been curious about reducing the sleep power as low as possible.
When running from the battery, I think the R21 pull-up resistor is wasting about 5uA of power:
4.2V / (806KOhm * 1000) * 10^6 ~= 5uA
Then if you try to disable the voltage regulator by pulling the enable pin low, I think R18 wastes 21uA.
4.2V / (200kOhm * 1000) * 10^6 = 21uA
It looks like the solder bridges could be changed to connect the microcontroller to the VBAT instead of the 3.3V output from the regulator. However, the XC9258 voltage regulator would still be on and wasting 15 to 25uA.
Possibly you could disconnect solder bridges S1 and S5 to disconnect the microcontroller from the voltage regulator, then connect the battery directly to half of S4 (by passing the lipo connector), and connecting S3 to turn on the microcontroller’s built in regulator. However, I can’t see getting a very reliable solder joint between a wire and half of a solder bridge.
The R21, R18, and XC9258 are all under the RF shield. So there’s no easy way to desolder them.
Possibly with a high enough voltage between the EN pin and the LI+ pin (positive here), one could burn out R18 or the XC9258. I don’t have a spare particle xenon to try that now.