LCDEMLIB
Detailed Description
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_DEFAULT_CONTRAST 15 |
| #define | LCD_DEFAULT_FRAME_RATE_DIV 4 |
| #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, lcdBiasOneFourth = LCD_DISPCTRL_BIAS_ONEFOURTH } |
| 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, lcdMuxSextaplex = LCD_DISPCTRL_MUXE_MUXE | LCD_DISPCTRL_MUX_DUPLEX, lcdMuxOctaplex = LCD_DISPCTRL_MUXE_MUXE | 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), lcdSegmentAll = (0x003f) } |
| 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.
|
|
| void | LCD_AnimInit (const LCD_AnimInit_TypeDef *animInit) |
|
Configures LCD controller Animation feature.
|
|
| __STATIC_INLINE int | LCD_AnimState (void) |
|
Returns current animation state.
|
|
| void | LCD_BiasComSet (int comLine, int biasLevel) |
|
Configure bias level for a specific segment line.
|
|
| void | LCD_BiasSegmentSet (int segmentLine, int biasLevel) |
|
Configure bias level for a specific segment line for Direct Segment Control.
|
|
| void | LCD_BiasSet ( LCD_Bias_TypeDef bias) |
|
Configure bias level on LCD panel.
|
|
| __STATIC_INLINE void | LCD_BlankEnable (bool enable) |
|
Disables all segments, while keeping segment state.
|
|
| __STATIC_INLINE void | LCD_BlinkEnable (bool enable) |
|
Enables or disables LCD blink.
|
|
| __STATIC_INLINE int | LCD_BlinkState (void) |
|
Returns current blink state.
|
|
| void | LCD_ContrastSet (int level) |
|
Configure contrast level on LCD panel.
|
|
| __STATIC_INLINE void | LCD_DSCEnable (bool enable) |
|
Enable or disable LCD Direct Segment Control.
|
|
| __STATIC_INLINE void | LCD_Enable (bool enable) |
|
Enable or disable LCD controller.
|
|
| __STATIC_INLINE void | LCD_FrameCountEnable (bool enable) |
|
Enables or disables LCD Frame Control.
|
|
| void | LCD_FrameCountInit (const LCD_FrameCountInit_TypeDef *fcInit) |
|
Initialize LCD Frame Counter.
|
|
| __STATIC_INLINE void | LCD_FreezeEnable (bool enable) |
|
When set, LCD registers will not be updated until cleared,.
|
|
| void | LCD_Init (const LCD_Init_TypeDef *lcdInit) |
|
Initalize Liquid Crystal Display (LCD) controller.
|
|
| __STATIC_INLINE void | LCD_IntClear (uint32_t flags) |
|
Clear one or more interrupt flags.
|
|
| __STATIC_INLINE void | LCD_IntDisable (uint32_t flags) |
|
Disable LCD interrupts.
|
|
| __STATIC_INLINE void | LCD_IntEnable (uint32_t flags) |
|
Enable LCD interrupts.
|
|
| __STATIC_INLINE uint32_t | LCD_IntGet (void) |
|
Get pending LCD interrupt flags.
|
|
| __STATIC_INLINE uint32_t | LCD_IntGetEnabled (void) |
|
Get enabled and pending LCD interrupt flags.
|
|
| __STATIC_INLINE void | LCD_IntSet (uint32_t flags) |
|
Set one or more pending LCD interrupts from SW.
|
|
| void | LCD_SegmentRangeEnable ( LCD_SegmentRange_TypeDef segmentRange, bool enable) |
|
Enables update of this range of LCD segment lines.
|
|
| void | LCD_SegmentSet (int com, int bit, bool enable) |
|
Turn on or clear a segment.
|
|
| 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.
|
|
| __STATIC_INLINE void | LCD_SyncBusyDelay (uint32_t flags) |
|
Polls LCD SYNCBUSY flags, until flag has been cleared.
|
|
| __STATIC_INLINE uint32_t | LCD_SyncBusyGet (void) |
|
Returns SYNCBUSY bits, indicating which registers have pending updates.
|
|
| void | LCD_UpdateCtrl ( LCD_UpdateCtrl_TypeDef ud) |
|
Configure Update Control.
|
|
| void | LCD_VBoostSet ( LCD_VBoostLevel_TypeDef vboost) |
|
Configure voltage booster.
|
|
| void | LCD_VLCDSelect ( LCD_VLCDSel_TypeDef vlcd) |
|
Select source for VLCD.
|
|
Macro Definition Documentation
| #define LCD_INIT_DEFAULT |
Default config for LCD init structure, enables 160 segments
Definition at line
299
of file
em_lcd.h
.
Enumeration Type Documentation
| enum LCD_Bias_TypeDef |
| enum LCD_ConConf_TypeDef |
| enum LCD_Mux_TypeDef |
MUX setting
Definition at line
68
of file
em_lcd.h
.
Segment selection
Definition at line
169
of file
em_lcd.h
.
Voltage Boost Level - Datasheets document setting for each part number
Definition at line
134
of file
em_lcd.h
.
| enum LCD_VLCDSel_TypeDef |
| enum LCD_Wave_TypeDef |
Function Documentation
| __STATIC_INLINE void LCD_AnimEnable | ( | bool |
enable
|
) |
Enables or disables LCD Animation feature.
- Parameters
-
[in] enableBoolean true enables animation, false disables animation
Definition at line
383
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.
- Parameters
-
[in] animInitPointer to LCD Animation initialization structure
Definition at line
201
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.
- Returns
- Animation state, in range 0-15
Definition at line
447
of file
em_lcd.h
.
References _LCD_STATUS_ASTATE_MASK , _LCD_STATUS_ASTATE_SHIFT , and LCD .
| void LCD_BiasComSet | ( | int |
comLine,
|
| int |
biasLevel
|
||
| ) |
Configure bias level for a specific segment line.
- Note
- When DSC is active, each configuration takes up 4 bits in the Segment Registers (SEGD4L/SEGD4H) which defines bias level. For optimal use of this feature, the entire SEGD-registers should be set at once in a optimized routine, so this function is mainly here to demonstrate how to correctly configure the bias levels, and should be used with care.
- Parameters
-
[in] comLineCOM line number, 0-7 [in] biasLevelBias configuration level, 0-4. This value must be within the constraint defined by the LCD_DISPCTRL bias setting, see Reference Manual/Datasheet
Definition at line
762
of file
em_lcd.c
.
References LCD .
| void LCD_BiasSegmentSet | ( | int |
segmentLine,
|
| int |
biasLevel
|
||
| ) |
Configure bias level for a specific segment line for Direct Segment Control.
- Note
- When DSC is active, each configuration takes up 4 bits in the Segment Registers (SEGD0L/SEGD1H) which defines bias level. For optimal use of this feature, the entire SEGD-registers should be set at once in a optimized routine, so this function is mainly here to demonstrate how to correctly configure the bias levels, and should be used with care.
- Parameters
-
[in] segmentLineSegment line number [in] biasLevelBias configuration level, 0-4. This value must be within the constraint defined by the LCD_DISPCTRL bias setting, see Reference Manual/Datasheet
Definition at line
659
of file
em_lcd.c
.
References LCD .
| void LCD_BiasSet | ( | LCD_Bias_TypeDef |
bias
|
) |
Configure bias level on LCD panel.
- Parameters
-
[in] biasBias level
Definition at line
617
of file
em_lcd.c
.
References _LCD_DISPCTRL_BIAS_MASK , and LCD .
| __STATIC_INLINE void LCD_BlankEnable | ( | bool |
enable
|
) |
Disables all segments, while keeping segment state.
- Parameters
-
[in] enableBoolean true clears all segments, boolean false restores all segment lines
Definition at line
415
of file
em_lcd.h
.
References LCD , and LCD_BACTRL_BLANK .
| __STATIC_INLINE void LCD_BlinkEnable | ( | bool |
enable
|
) |
Enables or disables LCD blink.
- Parameters
-
[in] enableBoolean true enables blink, false disables blink
Definition at line
399
of file
em_lcd.h
.
References LCD , and LCD_BACTRL_BLINKEN .
| __STATIC_INLINE int LCD_BlinkState | ( | void |
|
) |
Returns current blink state.
- Returns
- Return value is 1 if segments are enabled, 0 if disabled
Definition at line
459
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.
- Parameters
-
[in] levelContrast level in the range 0-31
Definition at line
584
of file
em_lcd.c
.
References _LCD_DISPCTRL_CONLEV_MASK , _LCD_DISPCTRL_CONLEV_SHIFT , and LCD .
Referenced by LCD_Init() .
| __STATIC_INLINE void LCD_DSCEnable | ( | bool |
enable
|
) |
Enable or disable LCD Direct Segment Control.
- Parameters
-
[in] enableIf true, enables LCD controller Direct Segment Control Segment and COM line bias levels needs to be set explicitly with the LCD_BiasSegmentSet() and LCD_BiasComSet() function calls.
Definition at line
615
of file
em_lcd.h
.
References LCD , and LCD_CTRL_DSC .
| __STATIC_INLINE void LCD_Enable | ( | bool |
enable
|
) |
Enable or disable LCD controller.
- Parameters
-
[in] enableIf 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
367
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.
- Parameters
-
[in] enableBoolean true enables frame counter, false disables frame counter
Definition at line
431
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.
- Parameters
-
[in] fcInitPointer to Frame Counter initialization structure
Definition at line
173
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,.
- Parameters
-
[in] enableWhen enable is true, update is stopped, when false all registers are updated
Definition at line
472
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.
- Parameters
-
[in] lcdInitPointer 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_MUXE_MASK , _LCD_DISPCTRL_VLCDSEL_MASK , _LCD_DISPCTRL_WAVE_MASK , LCD_Init_TypeDef::bias , LCD_Init_TypeDef::contrast , LCD_Init_TypeDef::enable , LCD , LCD_ContrastSet() , 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
|
) |
Clear one or more interrupt flags.
- Parameters
-
[in] flagsLCD interrupt sources to clear. Use a set of interrupt flags OR-ed together to clear multiple interrupt sources for the LCD module (LCD_IFS_nnn).
Definition at line
600
of file
em_lcd.h
.
References LCD .
| __STATIC_INLINE void LCD_IntDisable | ( | uint32_t |
flags
|
) |
Disable LCD interrupts.
- Parameters
-
[in] flagsLCD 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
586
of file
em_lcd.h
.
References LCD .
Referenced by SegmentLCD_Init() .
| __STATIC_INLINE void LCD_IntEnable | ( | uint32_t |
flags
|
) |
Enable LCD interrupts.
- Parameters
-
[in] flagsLCD interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the LCD module (LCD_IFS_nnn).
Definition at line
572
of file
em_lcd.h
.
References LCD .
| __STATIC_INLINE uint32_t LCD_IntGet | ( | void |
|
) |
Get pending LCD interrupt flags.
- Returns
- Pending LCD interrupt sources. Returns a set of interrupt flags OR-ed together for multiple interrupt sources in the LCD module (LCD_IFS_nnn).
Definition at line
514
of file
em_lcd.h
.
References LCD .
| __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.
- Note
- The event bits are not cleared by the use of this function.
- Returns
-
Pending and enabled LCD interrupt sources. The return value is the bitwise AND combination of
- the OR combination of enabled interrupt sources in LCD_IEN_nnn register (LCD_IEN_nnn) and
- the bitwise OR combination of valid interrupt flags of the LCD module (LCD_IF_nnn).
Definition at line
537
of file
em_lcd.h
.
References LCD .
| __STATIC_INLINE void LCD_IntSet | ( | uint32_t |
flags
|
) |
Set one or more pending LCD interrupts from SW.
- Parameters
-
[in] flagsLCD interrupt sources to set to pending. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the LCD module (LCD_IFS_nnn).
Definition at line
558
of file
em_lcd.h
.
References LCD .
| void LCD_SegmentRangeEnable | ( | LCD_SegmentRange_TypeDef |
segmentRange,
|
| bool |
enable
|
||
| ) |
Enables update of this range of LCD segment lines.
- Parameters
-
[in] segmentRangeRange of 4 LCD segments lines to enable or disable, for all enabled COM lines [in] enableBool true to enable segment updates, false to disable updates
Definition at line
249
of file
em_lcd.c
.
References LCD .
| void LCD_SegmentSet | ( | int |
com,
|
| int |
bit,
|
||
| bool |
enable
|
||
| ) |
Turn on or clear a segment.
- Note
- On Gecko Family, max configuration is (COM-lines x Segment-Lines) 4x40 On Tiny Family, max configuration is 8x20 or 4x24 On Giant Family, max configuration is 8x36 or 4x40
- Parameters
-
[in] comCOM line to change [in] bitBit index of which field to change [in] enableWhen true will set segment, when false will clear segment
Definition at line
277
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_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.
- Parameters
-
[in] comWhich COM line to update [in] maskBit mask for segments 0-31 [in] bitsBit pattern for segments 0-31
Definition at line
413
of file
em_lcd.c
.
References LCD .
| __STATIC_INLINE void LCD_SyncBusyDelay | ( | uint32_t |
flags
|
) |
Polls LCD SYNCBUSY flags, until flag has been cleared.
- Parameters
-
[in] flagsBit fields for LCD registers that shall be updated before we continue
Definition at line
500
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 |
|
) |
Returns SYNCBUSY bits, indicating which registers have pending updates.
- Returns
- Bit fields for LCD registers which have pending updates
Definition at line
488
of file
em_lcd.h
.
References LCD .
| void LCD_UpdateCtrl | ( | LCD_UpdateCtrl_TypeDef |
ud
|
) |
Configure Update Control.
- Parameters
-
[in] udConfigures LCD update method
Definition at line
161
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
- Parameters
-
[in] vboostVoltage boost level
Definition at line
632
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.
- Parameters
-
[in] vlcdSelect source for VLD voltage
Definition at line
133
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() .