2022-04-07 12:44 AM
Hi,
I am using STM32F469I-DISCO with touchGFX on it, and I would like to reduce power consumption. I managed to set the brightness of LCD to lowest when no user activity for more than 30sec.
I am resetting brightness as soon as the user touch the screen.
I would like to know if it is possible to use sleep or stop mode for reducing power consumption as much as possible. My concern is about how to wake up the system, since I need to check if user has touched the screen?
Second, is using an ammeter on IDD (by removing the jumper) the right way to measure power consumption?
Thanks for any help,
Best regards.
Clément Devevey
2022-04-27 12:26 AM
Hi guys,
Low Power is a really interesting topic, and one that is become more and more relevant with TouchGFX applications. I've asked the powers that be to get some time soon to do some research into scenarios and create a more extensive guide/documentation on the subject. It's approved, so now we just have to find the time.
Thanks.
/Martin
2022-04-27 12:28 AM
It probably wouldn't be a bad idea if we could gather up some common scenarios, current issues people are having (to be addressed in the doc), etc. I'll start with the content of this thread.
/Martin
2022-04-27 11:16 AM
I know not all apps use a touchscreen, but waking up from touch is probably a very common scenario from those that do. And whether or not touch is used, getting the most power reduction by shutting down the display and backlight, and properly recovering is one of the more challenging aspects of power management that should be covered. SDRAM is also something that can be manipulated to reduce power in Stop mode.
STOP mode is hard enough, but SLEEP mode is probably even more challenging, since tickless idle mode would need to be implemented if using FreeRTOS.
For my 469i-DISCO application, I was able to just do a /4 on HCLK with no adverse effects on the display. Performance was still adequate (fade/move/slide/etc), and the power savings were probably more than I would have achieved by going to tickless idle and using MCU SLEEP mode. I would say that when trying to reduce power in general, that's some low hanging fruit.
2022-04-28 12:34 AM
Good input, thanks wired.
2022-04-28 08:20 AM
This may not be the best place to put this, because it has more to do with power optimization, not operation in low power modes, but since it's touchscreen-related, here it is anyway.
The FT6x06 touchscreen controller used on the 469i-DISCO board (and probably the 7 series as well?) has a couple of settings that can reduce power. By default, the chip operates in a MONITOR mode, where it periodically scans for a touch at an interval set by the PERIODMONITOR register. Then, upon detecting a touch, it immediately switches to ACTIVE mode, where it reports touch data at a higher rate. After a period of time has elapsed with no touch, set by the TIMEENTERMONITOR register, it returns to MONITOR mode, which reduces the power consumption. The factory default setting for PERIODMONITOR is 0x28, which is 40ms. You can save some power by increasing this register value. I did not perceive a difference from a user perspective when setting it to 0x50, or 80ms. The bigger power saver, especially if your application is touchscreen intensive, is the TIMEENTERMONITOR setting, which is 0x0A by default, or 10 seconds. Why you would need to wait ten seconds to enter MONITOR mode is beyond me. I changed this value to 1 second. By my measurements, the TS controller draws a little over 1mA extra when in ACTIVE mode. Optimizing these values can make a difference, albeit small, in your power consumption. I added a couple of calls to the Reset function of the driver, since it is called when the touchscreen is initialized (see below).
Also, if you are in a low power mode, e.g. STOP mode waiting for a touch, an even further-reduced scan rate could be set, and then bumped up to a normal value on wakeup. Since the touchscreen is always operating even in STOP mode if you want to wake on touch, this could make a more significant difference in power consumption than during normal operation.
void ft6x06_Reset(uint16_t DeviceAddr)
{
/* Do nothing */
/* No software reset sequence available in FT6206 IC */
/* Code below added to reduce operating current.
* Scan interval is in ms and default is 0x28 (40ms). Change to 0x50 (80ms).
* Time to wait before switching to MONITOR mode after a touch is in
* seconds (roughly). Default is 0x0A (10s), change to 0x01 (1s).
*/
TS_IO_Write(DeviceAddr, FT6206_TIMEENTERMONITOR_REG, 0x01);
TS_IO_Write(DeviceAddr, FT6206_PERIODMONITOR_REG, 0x50);
}
Note: A very quick tap of the screen might be missed at an 80ms interval.
For reference, here is a plot with two scans of the touch controller during MONITOR mode while the STM32 is in Stop mode.
2024-08-01 08:35 AM
Did you guys end up making that documentation? could you link that documentation here?
2024-08-02 06:12 AM
Hello @tmehok ,
Unfortunately, the document hasn't been created. I think it has gone a bit out of focus, but I can suggest it again and hopefully, we will find the time to implement it.
Best regards,