2022-09-18 04:40 AM
If I reduce the clock speed on a STM32F4 from 168Mhz to 96Mhz, with bus speeds reduced accordingly.
Should the current consumption of the processor be reduced.
I've been trying to take some current measurements, and there does not seem to be any reduction in current consumption of my board when I reduce the clock speed.
By comparison, I have another board which uses a NXP / Freescale MK22 MCU, and to save power we reduce the clock speed to 16Mhz when the board is idle
I can't use low power modes, becuase I need to maintain PWM on pins for things like backlight intensity, so reducing the clock speed was our only option
But with the STM32F4 I'm not seeing any reduction in current, even if I reduce clock speed to 16MHz, and use the maximum dividers on all the busses.
2022-09-18 04:46 AM
Sorry. I didn't realise that I needed to type more details into another box
Here is the reduced clock speed screengrab, i.e at 96hz
but even at 16Mhz I don't see any reduction in current :-(
2022-09-18 04:59 AM
so you reduce clock at an cmos-cpu from 168 to 16 MHz - and see no effect ?
without joking: just test what cube tells you about current of soc , simulation only, but gives you an idea, what will happen in real world;
here test on my H743 audio player: from 400 to 300 MHz down:
2022-09-18 04:39 PM
OK.
I have the whole board being powered via bench PSU with a digital multimeter in series to measure the current.
I am seeing some reduction in current when I reduce the clock speed but not as much as I've seen with other manufacturers MCUs
Running from HSI the board is consuming 52mA, and in normal operation (168Mhz), the current is 73mA.
I added a while(true); statement into the start of the main application code, after the HAL init is complete.
So these values hopefully are not affected by any of the application code.
I should probably try putting a while(true); at the top of main() before HAL_Init() so I can measure the current at that point in the code
I wonder if this has something to do with the application code being run by a bootloader, which already sets up its own clock configuation.
Perhaps I need to add some code before the HAL clock init runs, to reset the clock registers back to a default state. ??
2022-09-18 05:06 PM
Doing some more tests on the board, which includes its own voltage regultor to be powered via a 7.4V Lipo battery
If I add
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
__HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF);
HAL_PWR_EnterSTANDBYMode();
while (true);
To the start of main()
The board consumes 14mA.
This will be the various other bits of hardware on this board, including several regulators, which are consuming the current, as the STM32F4 should be consuming only a few microamps.
Hence the difference in current at 168Mhz, of about 60mA, will be the MCU including all the perhiperals
Looking at the current calculator tool, I should see a reduction of around 15mA by reducing the clock from 168Mhz to 96Mhz, but I'm not seeing that at the moment.
Hence why I think potentially there is a problem by using the bootloader
2022-09-19 06:00 PM
Also read and take into account this:
One of the issues described there also consumes additional few mA of current.
2022-09-19 06:07 PM
Thanks
Stop modes would only be useful to me when the user didn't need the backlight PWM to be running.
I may use them, but they are not top of my list of power saving measures at the moment.