2024-06-06 02:19 AM - edited 2024-06-06 04:31 PM
Hi all,
I've been working on reducing the power consumption of a project I'm working on using the STM32G431.
Stop modes are not an option on this chip since I need to keep some peripherals active, but I've been
able to reduce the needed system clock to below 1Mhz, and use the LP-Run/Sleep modes exclusively.
I've gone as far as I can in terms of reducing overall frequency. According to the CubeMx power estimator pane, I can reduce the power consumption further by about 75% by avoiding the use of a crystal and supplying an external clock
signal instead. This so-called "HSE Bypass" mode powers down the oscillator circuit as well as the PLL.
But I've run into a wall in implementing this. If I can't use a crystal, what do I put on the board to generate my (say, 1Mhz) clock? I don't have an FPGA or a big-brother CPU on the board to provide the clock. And to add one would negate the power savings several times over (to say nothing of the BOM cost).
I've searched for dedicated clock generators, but what I've found so far seems to aim at much higher frequencies and still requires 10x the power used by the G431 to run.
Are there any jellybean chips/solutions for this? basically, I need an IC that generates a (say) 1Mhz clock while consuming only 10-100uA.
[Edited for clarity]
Solved! Go to Solution.
2024-06-09 06:59 AM
So why not just try with HSE crystal, 4MHz , and check real world value then ?
Or with hse-bypass, maybe the lowest possible consumption (if no crystal precision needed) :
584-C6930IMS88.00TPF (mouser)
So you can expect about 150uA at 1MHz setting for this kind of micro-power-osc.
2024-06-06 02:31 AM
@BarryWhit wrote:I've gone as far as I can in terms of reducing frequency.
Very often, a more effective strategy is to have the chip run quickly, and sleep more.
Do those peripherals really need to be constantly active?
@BarryWhit wrote:Are there jellybean chips out there dedicated to generating a (say) 1Mhz clock while consuming only 10-100uA?
Have you looked at Silicon/MEMS oscillators?
eg, https://www.sitime.com/solutions/internet-of-things-iot
See also:
2024-06-06 02:38 AM
Some of the modern MEMS oscillators? These are no jellybeans, though.
Btw. are you aware of the minimum PLL frequency being 2.6MHz?
OTOH, do you need crystal precision? HSI16 (perhaps trimmed e.g. to LSE) wouldn't suffice?
JW
2024-06-06 09:44 AM - edited 2024-06-06 10:16 AM
Hi @Andrew Neil,
> Very often, a more effective strategy is to have the chip run quickly, and sleep more.
Actually, when you scale HCLK way down, the power consumption gap between LPRUN and LPSLEEP
is only about 20uA (out of say 160us).
> Do those peripherals really need to be constantly active?
I need the DMA to feed the DAC every 20us. that's on the order of the wakeup times for STOP modes, so that doesn't seem worth persuing. With a newer sexier chip like the u5 (and LPDMA), I possibly could employ deeper LP modes, but for now I'm focused on getting as far as I can with the G431.
> See also an2867-guidelines-for-oscillator-design
HSE Bypass specifically means using an external clock signal (i.e. a toggling pin) instead of an oscillator/ceramic resonator.
> Have you looked at Silicon/MEMS oscillators?
This is interesting. They do claim to use drastically less power. but I'm not sure if what the power estimator reports is due to the STM32's own circuitry, or due to the crystal oscillator itself. Is it possible that crystal oscillator consume significant power, apart from the MCU? i thought they just... "vibrated and stuff".
2024-06-06 09:52 AM
If you do not need high accuracy and low jitter for your clock, consider to run from 2^15 quarz or oscillator .
"When a 32.768 kHz clock source is available in the system (LSE), the MSI frequency can be automatically trimmed byhardware to reach better than ±0.25% accuracy."
2024-06-06 10:03 AM - edited 2024-06-06 10:19 AM
> Btw. are you aware of the minimum PLL frequency being 2.6MHz?
Doesn't HSE Bypass..... bypass the PLL altogether? I didn't plan to use it. I think the power reduction is partly
by powering down the PLL (as well as the oscillator amplifier circuit).
I figured I'd either get a programmable/fixed source at the rate I want, or something in the 1-2-4Mhz range,
and just use the AHB clock divisors. No PLL necessary.
> OTOH, do you need crystal precision? HSI16 (perhaps trimmed e.g. to LSE) wouldn't suffice?
According to the power estimator, HSI16 does not provide anywhere near the same power reduction as HSE bypass.
Funnily enough, after chasing down all kinds of 90s relics the only viable solution I've come up with is to use a modern variant of the 555. The LMC555 from TI is programmable up to 3Mhz and draws somewhere between 130-250uA. That should work. Of course, it relies on an RC circuit for timing so with "civilian" component tolerances that would mean about a 2% variation in frequency at least. I could probably live with that, but it's not ideal.
Even more strange is the fact that there *used* to be such an IC. The Harris HA7210 (1996) (Harris->Intersil->Renesas). According to the datasheet, it used a crystal oscillator as an input but only consumed 100uA at 1Mhz. It's an EOL part and I've found no replacements with Active Status so far.
2024-06-06 10:45 PM
HSE_BYPASS does not bypass the PLL, only the internal oscillator circuit.
2024-06-07 12:44 AM
Yes, but the MCU can clock directly from HSE it doesn't need the PLL. Other peripheral might need the PLL, like SDIO on F4
2024-06-07 02:18 AM
PIC micro controller has internal clock. You can add external crystal aswell. There are some ultra low-power devices 8 pin devices. For example pic16lf15325, it is stated to consume 30ua/Mhz. Operate at the lowest possible Vcc...
2024-06-07 02:32 AM
> According to the power estimator, HSI16 does not provide anywhere near the same power reduction as HSE bypass.
HSE with 8MHz crystal consumes around 500uA typ, according to the DS, while HSI16 around 155uA typ 190uA max. You want to divide the AHB accordingly to run the rest of the mcu at the same frequency (say 2MHz), in order to get them into the same consumption level.
HSE bypass does not consume anything, but the external oscillator does, and it will be in the 150uA ballpark.
You can try all these options first-hand using a cheap Nucleo board.
> Funnily enough, after chasing down all kinds of 90s relics the only viable solution I've come up with is to use a modern variant of the 555. The LMC555 from TI is programmable up to 3Mhz and draws somewhere between 130-250uA.
That's static consumption. I am curious how much would operating it at 1-2MHz add to this, and how much would be the current spent in the external RC circuitry.
> Even more strange is the fact that there *used* to be such an IC. The Harris HA7210 (1996) (Harris->Intersil->Renesas). According to the datasheet, it used a crystal oscillator as an input but only consumed 100uA at 1Mhz. It's an EOL part and I've found no replacements with Active Status so far.
Interesting, but, as you've said, gone.
With enough design effort, you may be able to design a low-power crystal oscillator from discretes.
There's also interesting but generally unusable (expensive, non-crystal-precision) LTC6906.
JW