cancel
Showing results for 
Search instead for 
Did you mean: 

Current spikes in STM32U083 MCU inbuilt LCD controller in running in STOP2 mode

Magvel
Associate

 

Hi everyone,
I’m working on an STM32U083RC and facing a low-power issue related to the Segment LCD driver when the MCU is in STOP2 mode.
USE CASE
  • The LCD must remain ON all the time — we cannot disable it during STOP2 mode.
  • The LCD clock source is LSE (32.768 kHz).
  • No backlight is used.
  • All unused GPIOs are configured in analog mode.
  • The required pins are driven to known levels (with pull-ups or pull-downs) during STOP2 mode.
  • LSE is kept ON during STOP2.
Current Consumption at base average current
  • STOP2 with LCD Disabled: ~2 µA average(base current)
  • STOP2 with LCD Enabled: ~5.07 µA average( 7uA-8uA spikes)
  • When LCD is enabled, there are current spikes of  7-8µA at regular intervals (depending on the LCD refresh rate).
    • For example, with a refresh rate of 128 Hz, spikes occur approximately every 7.8 ms (1/128).
  • The average current increase is mainly due to these spikes.
 
//LCD Configuration
void MX_LCD_Init(void)
{
    hlcd.Instance = LCD;
    hlcd.Init.Prescaler = LCD_PRESCALER_16;
    hlcd.Init.Divider = LCD_DIVIDER_16;
    hlcd.Init.Duty = LCD_DUTY_1_4;
    hlcd.Init.Bias = LCD_BIAS_1_3;
    hlcd.Init.VoltageSource = LCD_VOLTAGESOURCE_INTERNAL;
    hlcd.Init.Contrast = LCD_CONTRASTLEVEL_0;
    hlcd.Init.DeadTime = LCD_DEADTIME_0;
    hlcd.Init.PulseOnDuration = LCD_PULSEONDURATION_1;
    hlcd.Init.BlinkMode = LCD_BLINKMODE_OFF;
    hlcd.Init.BlinkFrequency = LCD_BLINKFREQUENCY_DIV1024;
    hlcd.Init.MuxSegment = LCD_MUXSEGMENT_DISABLE;

    if (HAL_LCD_Init(&hlcd) != HAL_OK)
    {
        Error_Handler();
    }
}
//entering low power mode 
void lowpwrmode_EnterLowPowerMode(void)
{
    HAL_CRC_MspDeInit(&hcrc);
    HAL_SPI_MspDeInit(&hspi1);
    HAL_CRYP_MspDeInit(&hcryp);
    HAL_UART_MspDeInit(&hlpuart2);
    HAL_LPTIM_MspDeInit(&hlptim3);
    HAL_DAC_MspDeInit(&hdac1);
    HAL_I2C_MspDeInit(&hi2c2);

    HAL_SuspendTick();
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

    HAL_PWREx_EnablePullUpPullDownConfig();
    HAL_DBGMCU_DisableDBGStopMode();
    HAL_PWREx_EnableUltraLowPowerMode();

    HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);

    HAL_ResumeTick();
    custom_StopGpioInit();
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET); // LDO Enable
}​


Power Measurement Graph 

Magvel_0-1759490490960.png

 

We can see periodic current spikes corresponding to the LCD refresh intervals. The average current remains around 5–6 µA, but these periodic spikes are preventing us from reducing the base consumption further.
MAIN QUESTION / DOUBT IS?
Is this spike behavior expected from the LCD driver on STM32U0 in STOP2 mode?
Are there any configuration tweaks (LCD prescaler/divider, bias, duty, voltage source, etc.) or low-power tricks to minimize these periodic current spikes while keeping the LCD ON?
0 REPLIES 0