EFM32 Gecko Software Documentation
efm32g-doc-5.1.2
|
Liquid Crystal Display (LCD) Peripheral API.
This module contains functions to control the LDC peripheral of Silicon Labs 32-bit MCUs and SoCs. The LCD driver can drive up to 8x36 segmented LCD directly. The animation feature makes it possible to have active animations without CPU intervention.
Data Structures | |
struct | LCD_AnimInit_TypeDef |
struct | LCD_FrameCountInit_TypeDef |
struct | LCD_Init_TypeDef |
Macros | |
#define | LCD_INIT_DEFAULT |
Enumerations | |
enum | LCD_AnimLogic_TypeDef { lcdAnimLogicAnd = LCD_BACTRL_ALOGSEL_AND, lcdAnimLogicOr = LCD_BACTRL_ALOGSEL_OR } |
enum | LCD_AnimShift_TypeDef { lcdAnimShiftNone = _LCD_BACTRL_AREGASC_NOSHIFT, lcdAnimShiftLeft = _LCD_BACTRL_AREGASC_SHIFTLEFT, lcdAnimShiftRight = _LCD_BACTRL_AREGASC_SHIFTRIGHT } |
enum | LCD_Bias_TypeDef { lcdBiasStatic = LCD_DISPCTRL_BIAS_STATIC, lcdBiasOneHalf = LCD_DISPCTRL_BIAS_ONEHALF, lcdBiasOneThird = LCD_DISPCTRL_BIAS_ONETHIRD } |
enum | LCD_ConConf_TypeDef { lcdConConfVLCD = LCD_DISPCTRL_CONCONF_VLCD, lcdConConfGND = LCD_DISPCTRL_CONCONF_GND } |
enum | LCD_FCPreScale_TypeDef { lcdFCPrescDiv1 = LCD_BACTRL_FCPRESC_DIV1, lcdFCPrescDiv2 = LCD_BACTRL_FCPRESC_DIV2, lcdFCPrescDiv4 = LCD_BACTRL_FCPRESC_DIV4, lcdFCPrescDiv8 = LCD_BACTRL_FCPRESC_DIV8 } |
enum | LCD_Mux_TypeDef { lcdMuxStatic = LCD_DISPCTRL_MUX_STATIC, lcdMuxDuplex = LCD_DISPCTRL_MUX_DUPLEX, lcdMuxTriplex = LCD_DISPCTRL_MUX_TRIPLEX, lcdMuxQuadruplex = LCD_DISPCTRL_MUX_QUADRUPLEX } |
enum | LCD_SegmentRange_TypeDef { lcdSegment0_3 = (1 << 0), lcdSegment4_7 = (1 << 1), lcdSegment8_11 = (1 << 2), lcdSegment12_15 = (1 << 3), lcdSegment16_19 = (1 << 4), lcdSegment20_23 = (1 << 5), lcdSegment24_27 = (1 << 6), lcdSegment28_31 = (1 << 7), lcdSegment32_35 = (1 << 8), lcdSegment36_39 = (1 << 9), lcdSegmentAll = (0x03ff) } |
enum | LCD_UpdateCtrl_TypeDef { lcdUpdateCtrlRegular = LCD_CTRL_UDCTRL_REGULAR, lcdUpdateCtrlFCEvent = LCD_CTRL_UDCTRL_FCEVENT, lcdUpdateCtrlFrameStart = LCD_CTRL_UDCTRL_FRAMESTART } |
enum | LCD_VBoostLevel_TypeDef { lcdVBoostLevel0 = LCD_DISPCTRL_VBLEV_LEVEL0, lcdVBoostLevel1 = LCD_DISPCTRL_VBLEV_LEVEL1, lcdVBoostLevel2 = LCD_DISPCTRL_VBLEV_LEVEL2, lcdVBoostLevel3 = LCD_DISPCTRL_VBLEV_LEVEL3, lcdVBoostLevel4 = LCD_DISPCTRL_VBLEV_LEVEL4, lcdVBoostLevel5 = LCD_DISPCTRL_VBLEV_LEVEL5, lcdVBoostLevel6 = LCD_DISPCTRL_VBLEV_LEVEL6, lcdVBoostLevel7 = LCD_DISPCTRL_VBLEV_LEVEL7 } |
enum | LCD_VLCDSel_TypeDef { lcdVLCDSelVDD = LCD_DISPCTRL_VLCDSEL_VDD, lcdVLCDSelVExtBoost = LCD_DISPCTRL_VLCDSEL_VEXTBOOST } |
enum | LCD_Wave_TypeDef { lcdWaveLowPower = LCD_DISPCTRL_WAVE_LOWPOWER, lcdWaveNormal = LCD_DISPCTRL_WAVE_NORMAL } |
Functions | |
__STATIC_INLINE void | LCD_AnimEnable (bool enable) |
Enables or disables LCD Animation feature. More... | |
void | LCD_AnimInit (const LCD_AnimInit_TypeDef *animInit) |
Configures LCD controller Animation feature. More... | |
__STATIC_INLINE int | LCD_AnimState (void) |
Returns current animation state. More... | |
__STATIC_INLINE void | LCD_BlankEnable (bool enable) |
Disables all segments, while keeping segment state. More... | |
__STATIC_INLINE void | LCD_BlinkEnable (bool enable) |
Enables or disables LCD blink. More... | |
__STATIC_INLINE int | LCD_BlinkState (void) |
Returns current blink state. More... | |
void | LCD_ContrastSet (int level) |
Configure contrast level on LCD panel. More... | |
__STATIC_INLINE void | LCD_Enable (bool enable) |
Enable or disable LCD controller. More... | |
__STATIC_INLINE void | LCD_FrameCountEnable (bool enable) |
Enables or disables LCD Frame Control. More... | |
void | LCD_FrameCountInit (const LCD_FrameCountInit_TypeDef *fcInit) |
Initialize LCD Frame Counter. More... | |
__STATIC_INLINE void | LCD_FreezeEnable (bool enable) |
When set, LCD registers will not be updated until cleared,. More... | |
void | LCD_Init (const LCD_Init_TypeDef *lcdInit) |
Initalize Liquid Crystal Display (LCD) controller. More... | |
__STATIC_INLINE void | LCD_IntClear (uint32_t flags) |
Clear one or more interrupt flags. More... | |
__STATIC_INLINE void | LCD_IntDisable (uint32_t flags) |
Disable LCD interrupts. More... | |
__STATIC_INLINE void | LCD_IntEnable (uint32_t flags) |
Enable LCD interrupts. More... | |
__STATIC_INLINE uint32_t | LCD_IntGet (void) |
Get pending LCD interrupt flags. More... | |
__STATIC_INLINE uint32_t | LCD_IntGetEnabled (void) |
Get enabled and pending LCD interrupt flags. More... | |
__STATIC_INLINE void | LCD_IntSet (uint32_t flags) |
Set one or more pending LCD interrupts from SW. More... | |
void | LCD_SegmentRangeEnable (LCD_SegmentRange_TypeDef segmentRange, bool enable) |
Enables update of this range of LCD segment lines. More... | |
void | LCD_SegmentSet (int com, int bit, bool enable) |
Turn on or clear a segment. More... | |
void | LCD_SegmentSetHigh (int com, uint32_t mask, uint32_t bits) |
Updated the high (32-39) segments on a given COM-line in one operation. More... | |
void | LCD_SegmentSetLow (int com, uint32_t mask, uint32_t bits) |
Updates the 0-31 lowest segments on a given COM-line in one operation, according to bit mask. More... | |
__STATIC_INLINE void | LCD_SyncBusyDelay (uint32_t flags) |
Polls LCD SYNCBUSY flags, until flag has been cleared. More... | |
__STATIC_INLINE uint32_t | LCD_SyncBusyGet (void) |
Returns SYNCBUSY bits, indicating which registers have pending updates. More... | |
void | LCD_UpdateCtrl (LCD_UpdateCtrl_TypeDef ud) |
Configure Update Control. More... | |
void | LCD_VBoostSet (LCD_VBoostLevel_TypeDef vboost) |
Configure voltage booster. More... | |
void | LCD_VLCDSelect (LCD_VLCDSel_TypeDef vlcd) |
Select source for VLCD. More... | |
#define LCD_INIT_DEFAULT |
Default config for LCD init structure, enables 160 segments
enum LCD_Bias_TypeDef |
enum LCD_ConConf_TypeDef |
enum LCD_Mux_TypeDef |
MUX setting
Segment selection
Voltage Boost Level - Datasheets document setting for each part number
enum LCD_VLCDSel_TypeDef |
enum LCD_Wave_TypeDef |
__STATIC_INLINE void LCD_AnimEnable | ( | bool | enable | ) |
Enables or disables LCD Animation feature.
[in] | enable | Boolean true enables animation, false disables animation |
Definition at line 328 of file em_lcd.h.
References LCD, and LCD_BACTRL_AEN.
Referenced by LCD_AnimInit().
void LCD_AnimInit | ( | const LCD_AnimInit_TypeDef * | animInit | ) |
Configures LCD controller Animation feature.
[in] | animInit | Pointer to LCD Animation initialization structure |
Definition at line 183 of file em_lcd.c.
References _LCD_BACTRL_ALOGSEL_MASK, _LCD_BACTRL_AREGASC_MASK, _LCD_BACTRL_AREGASC_SHIFT, _LCD_BACTRL_AREGBSC_MASK, _LCD_BACTRL_AREGBSC_SHIFT, LCD_AnimInit_TypeDef::animLogic, LCD_AnimInit_TypeDef::AReg, LCD_AnimInit_TypeDef::AShift, LCD_AnimInit_TypeDef::BReg, LCD_AnimInit_TypeDef::BShift, LCD_AnimInit_TypeDef::enable, LCD, and LCD_AnimEnable().
__STATIC_INLINE int LCD_AnimState | ( | void | ) |
Returns current animation state.
Definition at line 408 of file em_lcd.h.
References _LCD_STATUS_ASTATE_MASK, _LCD_STATUS_ASTATE_SHIFT, and LCD.
__STATIC_INLINE void LCD_BlankEnable | ( | bool | enable | ) |
Disables all segments, while keeping segment state.
[in] | enable | Boolean true clears all segments, boolean false restores all segment lines |
Definition at line 368 of file em_lcd.h.
References LCD, and LCD_BACTRL_BLANK.
__STATIC_INLINE void LCD_BlinkEnable | ( | bool | enable | ) |
Enables or disables LCD blink.
[in] | enable | Boolean true enables blink, false disables blink |
Definition at line 348 of file em_lcd.h.
References LCD, and LCD_BACTRL_BLINKEN.
__STATIC_INLINE int LCD_BlinkState | ( | void | ) |
Returns current blink state.
Definition at line 421 of file em_lcd.h.
References _LCD_STATUS_BLINK_MASK, _LCD_STATUS_BLINK_SHIFT, and LCD.
void LCD_ContrastSet | ( | int | level | ) |
Configure contrast level on LCD panel.
[in] | level | Contrast level in the range 0-31 |
Definition at line 592 of file em_lcd.c.
References _LCD_DISPCTRL_CONLEV_MASK, _LCD_DISPCTRL_CONLEV_SHIFT, and LCD.
__STATIC_INLINE void LCD_Enable | ( | bool | enable | ) |
Enable or disable LCD controller.
[in] | enable | If true, enables LCD controller with current configuration, if false disables LCD controller. CMU clock for LCD must be enabled for correct operation. |
Definition at line 308 of file em_lcd.h.
References LCD, and LCD_CTRL_EN.
Referenced by LCD_Init(), and SegmentLCD_Disable().
__STATIC_INLINE void LCD_FrameCountEnable | ( | bool | enable | ) |
Enables or disables LCD Frame Control.
[in] | enable | Boolean true enables frame counter, false disables frame counter |
Definition at line 388 of file em_lcd.h.
References LCD, and LCD_BACTRL_FCEN.
Referenced by LCD_FrameCountInit().
void LCD_FrameCountInit | ( | const LCD_FrameCountInit_TypeDef * | fcInit | ) |
Initialize LCD Frame Counter.
[in] | fcInit | Pointer to Frame Counter initialization structure |
Definition at line 154 of file em_lcd.c.
References _LCD_BACTRL_FCPRESC_MASK, _LCD_BACTRL_FCTOP_MASK, _LCD_BACTRL_FCTOP_SHIFT, LCD_FrameCountInit_TypeDef::enable, LCD, LCD_FrameCountEnable(), LCD_FrameCountInit_TypeDef::prescale, and LCD_FrameCountInit_TypeDef::top.
__STATIC_INLINE void LCD_FreezeEnable | ( | bool | enable | ) |
When set, LCD registers will not be updated until cleared,.
[in] | enable | When enable is true, update is stopped, when false all registers are updated |
Definition at line 435 of file em_lcd.h.
References LCD, LCD_FREEZE_REGFREEZE_FREEZE, and LCD_FREEZE_REGFREEZE_UPDATE.
Referenced by SegmentLCD_Number(), SegmentLCD_UnsignedHex(), and SegmentLCD_Write().
void LCD_Init | ( | const LCD_Init_TypeDef * | lcdInit | ) |
Initalize Liquid Crystal Display (LCD) controller.
This function call will only configure the LCD controller. You must enable it afterwards, potentially configuring Frame Control and interrupts first according to requirements.
[in] | lcdInit | Pointer to initialization structure which configures LCD controller. |
Definition at line 67 of file em_lcd.c.
References _LCD_DISPCTRL_BIAS_MASK, _LCD_DISPCTRL_CONCONF_MASK, _LCD_DISPCTRL_MUX_MASK, _LCD_DISPCTRL_VLCDSEL_MASK, _LCD_DISPCTRL_WAVE_MASK, LCD_Init_TypeDef::bias, LCD_Init_TypeDef::contrast, LCD_Init_TypeDef::enable, LCD, LCD_Enable(), LCD_Init_TypeDef::mux, LCD_Init_TypeDef::vlcd, and LCD_Init_TypeDef::wave.
Referenced by SegmentLCD_Init().
__STATIC_INLINE void LCD_IntClear | ( | uint32_t | flags | ) |
__STATIC_INLINE void LCD_IntDisable | ( | uint32_t | flags | ) |
Disable LCD interrupts.
[in] | flags | LCD interrupt sources to disable. Use a set of interrupt flags OR-ed together to disable multiple interrupt sources for the LCD module (LCD_IFS_nnn). |
Definition at line 559 of file em_lcd.h.
References LCD.
Referenced by SegmentLCD_Init().
__STATIC_INLINE void LCD_IntEnable | ( | uint32_t | flags | ) |
__STATIC_INLINE uint32_t LCD_IntGet | ( | void | ) |
__STATIC_INLINE uint32_t LCD_IntGetEnabled | ( | void | ) |
Get enabled and pending LCD interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
Definition at line 507 of file em_lcd.h.
References LCD.
__STATIC_INLINE void LCD_IntSet | ( | uint32_t | flags | ) |
void LCD_SegmentRangeEnable | ( | LCD_SegmentRange_TypeDef | segmentRange, |
bool | enable | ||
) |
void LCD_SegmentSet | ( | int | com, |
int | bit, | ||
bool | enable | ||
) |
Turn on or clear a segment.
[in] | com | COM line to change |
[in] | bit | Bit index of which field to change |
[in] | enable | When true will set segment, when false will clear segment |
Definition at line 265 of file em_lcd.c.
References BUS_RegBitWrite(), and LCD.
Referenced by displayBlock(), SegmentLCD_ARing(), SegmentLCD_Battery(), SegmentLCD_EnergyMode(), SegmentLCD_Number(), SegmentLCD_Symbol(), SegmentLCD_UnsignedHex(), and SegmentLCD_Write().
void LCD_SegmentSetHigh | ( | int | com, |
uint32_t | mask, | ||
uint32_t | bits | ||
) |
void LCD_SegmentSetLow | ( | int | com, |
uint32_t | mask, | ||
uint32_t | bits | ||
) |
__STATIC_INLINE void LCD_SyncBusyDelay | ( | uint32_t | flags | ) |
Polls LCD SYNCBUSY flags, until flag has been cleared.
[in] | flags | Bit fields for LCD registers that shall be updated before we continue |
Definition at line 468 of file em_lcd.h.
References LCD.
Referenced by SegmentLCD_Disable(), SegmentLCD_Init(), SegmentLCD_Number(), SegmentLCD_UnsignedHex(), and SegmentLCD_Write().
__STATIC_INLINE uint32_t LCD_SyncBusyGet | ( | void | ) |
void LCD_UpdateCtrl | ( | LCD_UpdateCtrl_TypeDef | ud | ) |
Configure Update Control.
[in] | ud | Configures LCD update method |
Definition at line 141 of file em_lcd.c.
References _LCD_CTRL_UDCTRL_MASK, and LCD.
void LCD_VBoostSet | ( | LCD_VBoostLevel_TypeDef | vboost | ) |
Configure voltage booster.
The resulting voltage level is described in each part number's data sheet
[in] | vboost | Voltage boost level |
Definition at line 610 of file em_lcd.c.
References _LCD_DISPCTRL_VBLEV_MASK, and LCD.
Referenced by SegmentLCD_Init().
void LCD_VLCDSelect | ( | LCD_VLCDSel_TypeDef | vlcd | ) |
Select source for VLCD.
[in] | vlcd | Select source for VLD voltage |
Definition at line 112 of file em_lcd.c.
References _LCD_DISPCTRL_VLCDSEL_MASK, LCD, LCD_DISPCTRL_VLCDSEL_VDD, LCD_DISPCTRL_VLCDSEL_VEXTBOOST, lcdVLCDSelVDD, and lcdVLCDSelVExtBoost.
Referenced by SegmentLCD_Init().