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), 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.
|
|
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_SegmentSetHigh (int com, uint32_t mask, uint32_t bits) |
Updated the high (32-39) segments on a given COM-line in one operation.
|
|
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] enable
Boolean 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] animInit
Pointer to LCD Animation initialization structure
Definition at line
201
of file
em_lcd.c
.
References _LCD_BACTRL_ALOC_MASK , _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 , LCD_AnimEnable() , LCD_BACTRL_ALOC_SEG0TO7 , LCD_BACTRL_ALOC_SEG8TO15 , and LCD_AnimInit_TypeDef::startSeg .
__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] comLine
COM line number, 0-7 [in] biasLevel
Bias 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] segmentLine
Segment line number [in] biasLevel
Bias 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] bias
Bias 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] enable
Boolean 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] enable
Boolean 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] level
Contrast 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] enable
If 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] 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
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] enable
Boolean 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] fcInit
Pointer 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] enable
When 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] 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_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] flags
LCD 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] 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
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] flags
LCD 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] flags
LCD 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] segmentRange
Range of 4 LCD segments lines to enable or disable, for all enabled COM lines [in] enable
Bool 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] 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
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_SegmentSetHigh | ( | int |
com,
|
uint32_t |
mask,
|
||
uint32_t |
bits
|
||
) |
Updated the high (32-39) segments on a given COM-line in one operation.
- Parameters
-
[in] com
Which COM line to update [in] mask
Bit mask for segments 32-39 [in] bits
Bit pattern for segments 32-39
Definition at line
502
of file
em_lcd.c
.
References LCD .
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] com
Which COM line to update [in] mask
Bit mask for segments 0-31 [in] bits
Bit 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] flags
Bit 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] ud
Configures 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] vboost
Voltage 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] vlcd
Select 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() .