cancel
Showing results for 
Search instead for 
Did you mean: 

LCD on nucleo STM32L073 doesn't initialize with contrast lower than 5.

MŁask.1
Associate II

When I set up contrast to value less than 5 I get stuck on HAL_LCD_Init() on wait for booster, and initialization fails:

  /*!< Wait Until the LCD Booster is ready */
  while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_RDY) == RESET)
  {
    if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE)
    {   
      hlcd->ErrorCode = HAL_LCD_ERROR_RDY;
      return HAL_TIMEOUT;
    } 
  }

Do I have to initilize something else to get other values of contrast?

  hlcd.Instance = LCD;
  hlcd.Init.Prescaler = LCD_PRESCALER_1;
  hlcd.Init.Divider = LCD_DIVIDER_31;
  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_5;
  hlcd.Init.DeadTime = LCD_DEADTIME_0;
  hlcd.Init.PulseOnDuration = LCD_PULSEONDURATION_4;
  hlcd.Init.HighDrive = LCD_HIGHDRIVE_0;
  hlcd.Init.BlinkMode = LCD_BLINKMODE_OFF;
  hlcd.Init.BlinkFrequency = LCD_BLINKFREQUENCY_DIV8;
  hlcd.Init.MuxSegment = LCD_MUXSEGMENT_DISABLE;

1 REPLY 1
felixkv
Associate

I al facing similar to above issue. I could not able to configure the internal voltage source. The while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_RDY) == RESET) never sets if the internal voltage source is selected. My configurations are listed below,

hlcd.Instance = LCD;

hlcd.Init.Prescaler = LCD_PRESCALER_1;

hlcd.Init.Divider = LCD_DIVIDER_31;

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_6;

hlcd.Init.DeadTime = LCD_DEADTIME_0;

hlcd.Init.PulseOnDuration = LCD_PULSEONDURATION_4;

hlcd.Init.HighDrive = LCD_HIGHDRIVE_0;

hlcd.Init.MuxSegment = LCD_MUXSEGMENT_DISABLE;

hlcd.Init.BlinkMode = LCD_BLINKMODE_OFF;

hlcd.Init.BlinkFrequency = LCD_BLINKFREQUENCY_DIV8;

 

Anybody faced similar issue. Anyone can support for solution