LCD - Liquid Crystal Display
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 the CPU intervention.
Data Structures |
|
| struct | LCD_AnimInit_TypeDef |
|
LCD Animation Configuration.
|
|
| struct | LCD_FrameCountInit_TypeDef |
|
LCD Frame Control Initialization.
|
|
| struct | LCD_Init_TypeDef |
|
LCD Controller Initialization structure.
|
|
Functions |
|
| void | LCD_Init (const LCD_Init_TypeDef *lcdInit) |
|
Initialize the Liquid Crystal Display (LCD) controller.
|
|
| void | LCD_UpdateCtrl ( LCD_UpdateCtrl_TypeDef ud) |
|
Configure Update Control.
|
|
| void | LCD_FrameCountInit (const LCD_FrameCountInit_TypeDef *fcInit) |
|
Initialize the LCD Frame Counter.
|
|
| void | LCD_AnimInit (const LCD_AnimInit_TypeDef *animInit) |
|
Configure the LCD controller Animation feature.
|
|
| void | LCD_SegmentEnable (uint32_t seg_nbr, bool enable) |
|
Enables a given LCD segment line.
|
|
| void | LCD_ComEnable (uint8_t com, bool enable) |
|
Enables a given LCD COM line.
|
|
| void | LCD_DmaModeSet ( LCD_DmaMode_Typedef mode) |
|
Set a given DMA mode operation.
|
|
| 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) |
|
Update 0-31 lowest segments on a given COM-line in one operation according to the bit mask.
|
|
| void | LCD_ContrastSet (int level) |
|
Configure the contrast level on the LCD panel.
|
|
| void | LCD_BiasSet ( LCD_Bias_TypeDef bias) |
|
Configure the bias level on the LCD panel.
|
|
| void | LCD_BiasSegmentSet (int segmentLine, int biasLevel) |
|
Configure the bias level for a specific segment line for Direct Segment Control.
|
|
| void | LCD_BiasComSet (int comLine, int biasLevel) |
|
Configure the bias level for a specific segment line.
|
|
| void | LCD_ModeSet ( LCD_Mode_Typedef mode) |
|
Configure the mode for the LCD panel.
|
|
| void | LCD_ChargeRedistributionCyclesSet (uint8_t cycles) |
|
Configure the charge redistribution cycles for the LCD panel.
|
|
| void | LCD_LoadBusyWait (void) |
|
Wait for load synchronization completion.
|
|
| void | LCD_ReadyWait (void) |
|
Wait for the LCD to complete resetting or disabling procedure.
|
|
| void | LCD_Enable (bool enable) |
|
Enable or disable LCD controller.
|
|
| void | LCD_Reset (void) |
|
Reset the LCD.
|
|
| void | LCD_AnimEnable (bool enable) |
|
Enable or disable LCD Animation feature.
|
|
| void | LCD_BlinkEnable (bool enable) |
|
Enable or disable the LCD blink.
|
|
| void | LCD_BlankEnable (bool enable) |
|
Disable all segments while keeping segment state.
|
|
| void | LCD_FrameCountEnable (bool enable) |
|
Enable or disable LCD Frame counter.
|
|
| void | LCD_DisplayCountEnable (bool enable) |
|
Enable or disable the LCD Display counter.
|
|
| int | LCD_AnimState (void) |
|
Return the current animation state.
|
|
| int | LCD_BlinkState (void) |
|
Return the current blink state.
|
|
| void | LCD_SyncStart (bool autoload, LCD_LoadAddr_TypeDef load_addr) |
|
Start the synchronization process.
|
|
| void | LCD_SyncStop (bool autoload) |
|
Stop the synchronization process.
|
|
| uint32_t | LCD_IntGet (void) |
|
Get pending LCD interrupt flags.
|
|
| uint32_t | LCD_IntGetEnabled (void) |
|
Get enabled and pending LCD interrupt flags.
|
|
| void | LCD_IntSet (uint32_t flags) |
|
Set one or more pending LCD interrupts from SW.
|
|
| void | LCD_IntEnable (uint32_t flags) |
|
Enable LCD interrupts.
|
|
| void | LCD_IntDisable (uint32_t flags) |
|
Disable LCD interrupts.
|
|
| void | LCD_IntClear (uint32_t flags) |
|
Clear one or more interrupt flags.
|
|
| void | LCD_DSCEnable (bool enable) |
|
Enable or disable LCD Direct Segment Control.
|
|
Macros |
|
| #define | LCD_FRAME_COUNTER_VAL_MAX 64 |
|
Frame counter uses a maximum of 5 bits (FCTOP[5:0]).
|
|
| #define | LCD_DEFAULT_CLOCK_PRESCALER 64 |
|
Default Clock Prescaler.
|
|
| #define | LCD_DEFAULT_FRAME_RATE_DIV 4 |
|
Default LCD Frame Rate Divisor.
|
|
| #define | LCD_DEFAULT_CONTRAST 15 |
|
Default LCD Contrast.
|
|
| #define | LCD_COM_LINES_MAX 4 |
|
Maximum common lines of LCD.
|
|
| #define | LCD_SEGMENT_LINES_MAX 20 |
|
Maximum segment lines of LCD.
|
|
| #define | LCD_INIT_DEFAULT |
|
Default configuration for LCD initialization structure, enables 160 segments.
|
|
Enumerations |
|
| enum |
LCD_Mux_TypeDef
{
lcdMuxStatic = LCD_DISPCTRL_MUX_STATIC, lcdMuxDuplex = LCD_DISPCTRL_MUX_DUPLEX, lcdMuxTriplex = LCD_DISPCTRL_MUX_TRIPLEX, lcdMuxQuadruplex = LCD_DISPCTRL_MUX_QUADRUPLEX } |
|
MUX setting.
|
|
| enum |
LCD_Wave_TypeDef
{
lcdWaveLowPower = LCD_DISPCTRL_WAVE_TYPEB, lcdWaveNormal = LCD_DISPCTRL_WAVE_TYPEA } |
|
Wave type.
|
|
| enum |
LCD_Bias_TypeDef
{
lcdBiasStatic = LCD_DISPCTRL_BIAS_STATIC, lcdBiasOneHalf = LCD_DISPCTRL_BIAS_ONEHALF, lcdBiasOneThird = LCD_DISPCTRL_BIAS_ONETHIRD, lcdBiasOneFourth = LCD_DISPCTRL_BIAS_ONEFOURTH } |
|
Bias setting.
|
|
| enum |
LCD_Mode_Typedef
{
lcdModeStepDown = LCD_BIASCTRL_MODE_STEPDOWN, lcdModeChargePump = LCD_BIASCTRL_MODE_CHARGEPUMP } |
|
Contrast Configuration.
|
|
| enum |
LCD_FCPreScale_TypeDef
{
lcdFCPrescDiv1 = LCD_BACFG_FCPRESC_DIV1, lcdFCPrescDiv2 = LCD_BACFG_FCPRESC_DIV2, lcdFCPrescDiv4 = LCD_BACFG_FCPRESC_DIV4, lcdFCPrescDiv8 = LCD_BACFG_FCPRESC_DIV8 } |
|
Frame Counter Clock Prescaler, FC-CLK = FrameRate (Hz) / this factor.
|
|
| enum |
LCD_UpdateCtrl_TypeDef
{
lcdUpdateCtrlRegular = LCD_CTRL_UDCTRL_REGULAR, lcdUpdateCtrlFCEvent = LCD_CTRL_UDCTRL_FCEVENT, lcdUpdateCtrlFrameStart = LCD_CTRL_UDCTRL_FRAMESTART, lcdUpdateCtrlDisplayEvent = LCD_CTRL_UDCTRL_DISPLAYEVENT } |
|
Update Data Control.
|
|
| enum |
LCD_LoadAddr_TypeDef
{
lcdLoadAddrNone = 0, lcdLoadAddrBactrl = LCD_UPDATECTRL_LOADADDR_BACTRLWR, lcdLoadAddrAregA = LCD_UPDATECTRL_LOADADDR_AREGAWR, lcdLoadAddrAregB = LCD_UPDATECTRL_LOADADDR_AREGBWR, lcdLoadAddrSegd0 = LCD_UPDATECTRL_LOADADDR_SEGD0WR, lcdLoadAddrSegd1 = LCD_UPDATECTRL_LOADADDR_SEGD1WR, lcdLoadAddrSegd2 = LCD_UPDATECTRL_LOADADDR_SEGD2WR, lcdLoadAddrSegd3 = LCD_UPDATECTRL_LOADADDR_SEGD3WR } |
|
Auto Load address which will start the synchronization from CLK_BUS to CLK_PER.
|
|
| enum |
LCD_AnimShift_TypeDef
{
lcdAnimShiftNone = _LCD_BACTRL_AREGASC_NOSHIFT, lcdAnimShiftLeft = _LCD_BACTRL_AREGASC_SHIFTLEFT, lcdAnimShiftRight = _LCD_BACTRL_AREGASC_SHIFTRIGHT } |
|
Animation Shift operation; none, left or right.
|
|
| enum |
LCD_AnimLogic_TypeDef
{
lcdAnimLogicAnd = LCD_BACTRL_ALOGSEL_AND, lcdAnimLogicOr = LCD_BACTRL_ALOGSEL_OR } |
|
Animation Logic Control, how AReg and BReg should be combined.
|
|
| enum |
LCD_AnimLoc_TypeDef
{
lcdAnimLocSeg0To7 = LCD_BACTRL_ALOC_SEG0TO7, lcdAnimLocSeg8To15 = LCD_BACTRL_ALOC_SEG8TO15 } |
|
Animation Location, set the LCD segments which animation applies to.
|
|
| enum |
LCD_ChargeRedistribution_TypeDef
{
lcdChargeRedistributionDisable = LCD_DISPCTRL_CHGRDST_DISABLE, lcdChargeRedistributionEnable = LCD_DISPCTRL_CHGRDST_ONE, lcdChargeRedistributionTwoCycle = LCD_DISPCTRL_CHGRDST_TWO, lcdChargeRedistributionThreeCycle = LCD_DISPCTRL_CHGRDST_THREE, lcdChargeRedistributionFourCycle = LCD_DISPCTRL_CHGRDST_FOUR } |
|
Charge redistribution control.
|
|
| enum |
LCD_DmaMode_Typedef
{
lcdDmaModeDisable = LCD_BIASCTRL_DMAMODE_DMADISABLE, lcdDmaModeFrameCounterEvent = LCD_BIASCTRL_DMAMODE_DMAFC, lcdDmaModeDisplayEvent = LCD_BIASCTRL_DMAMODE_DMADISPLAY } |
|
DMA mode of operation.
|
|
Function Documentation
◆ LCD_Init()
| void LCD_Init | ( | const LCD_Init_TypeDef * |
lcdInit
|
) |
Initialize the Liquid Crystal Display (LCD) controller.
Configures the LCD controller. You must enable it afterwards, potentially configuring Frame Control and interrupts first according to requirements.
- Parameters
-
[in] lcdInitA pointer to the initialization structure which configures the LCD controller.
◆ LCD_UpdateCtrl()
| void LCD_UpdateCtrl | ( | LCD_UpdateCtrl_TypeDef |
ud
|
) |
Configure Update Control.
- Parameters
-
[in] udConfigures the LCD update method.
◆ LCD_FrameCountInit()
| void LCD_FrameCountInit | ( | const LCD_FrameCountInit_TypeDef * |
fcInit
|
) |
Initialize the LCD Frame Counter.
- Parameters
-
[in] fcInitA pointer to the Frame Counter initialization structure.
◆ LCD_AnimInit()
| void LCD_AnimInit | ( | const LCD_AnimInit_TypeDef * |
animInit
|
) |
Configure the LCD controller Animation feature.
- Parameters
-
[in] animInitA pointer to the LCD Animation initialization structure.
◆ LCD_SegmentEnable()
| void LCD_SegmentEnable | ( | uint32_t |
seg_nbr,
|
| bool |
enable
|
||
| ) |
Enables a given LCD segment line.
- Parameters
-
[in] seg_nbrSegment line number. [in] enableBoolean true to enable a segment, false to disable.
◆ LCD_ComEnable()
| void LCD_ComEnable | ( | uint8_t |
com,
|
| bool |
enable
|
||
| ) |
Enables a given LCD COM line.
- Parameters
-
[in] comCOM line number. [in] enableBoolean true to enable a COM , false to disable.
◆ LCD_DmaModeSet()
| void LCD_DmaModeSet | ( | LCD_DmaMode_Typedef |
mode
|
) |
Set a given DMA mode operation.
- Parameters
-
[in] modeDMA mode.
◆ LCD_SegmentSet()
| void LCD_SegmentSet | ( | int |
com,
|
| int |
bit,
|
||
| bool |
enable
|
||
| ) |
Turn on or clear a segment.
- Note
- For the Gecko Family, the maximum configuration is (COM-lines x Segment-Lines) 4x40. For the Tiny Gecko Family, the maximum configuration is 8x20 or 4x24. For the Giant Gecko Family, the maximum configuration is 8x36 or 4x40.
- Parameters
-
[in] comA COM line to change. [in] bitA bit index indicating which field to change. [in] enableTrue will set segment, false will clear segment.
◆ LCD_SegmentSetLow()
| void LCD_SegmentSetLow | ( | int |
com,
|
| uint32_t |
mask,
|
||
| uint32_t |
bits
|
||
| ) |
Update 0-31 lowest segments on a given COM-line in one operation according to the bit mask.
- Parameters
-
[in] comIndicates a COM line to update. [in] maskA bit mask for segments 0-31. [in] bitsA bit pattern for segments 0-31.
◆ LCD_ContrastSet()
| void LCD_ContrastSet | ( | int |
level
|
) |
Configure the contrast level on the LCD panel.
- Parameters
-
[in] levelThe contrast level in range 0-63.
◆ LCD_BiasSet()
| void LCD_BiasSet | ( | LCD_Bias_TypeDef |
bias
|
) |
Configure the bias level on the LCD panel.
- Parameters
-
[in] biasThe bias level.
◆ LCD_BiasSegmentSet()
| void LCD_BiasSegmentSet | ( | int |
segmentLine,
|
| int |
biasLevel
|
||
| ) |
Configure the bias level for a specific segment line for Direct Segment Control.
- Note
- When DSC is active, each configuration takes up 4 bits in the corresponding Segment Registers (SEGD0L/SEGD1H for Series 0 and 1, SEGDx for Series 2) which defines the bias level. For optimal use of this feature, the entire SEGD-registers should be set at once in an optimized routine. Therefore, this function shows how to correctly configure the bias levels and should be used with care.
- Parameters
-
[in] segmentLineA segment line number. [in] biasLevelThe bias configuration level. This value must be within the constraints defined by the LCD_DISPCTRL bias settings. For more information, see the applicable Reference Manual and data sheet.
◆ LCD_BiasComSet()
| void LCD_BiasComSet | ( | int |
comLine,
|
| int |
biasLevel
|
||
| ) |
Configure the bias level for a specific segment line.
- Note
- When DSC is active, each configuration takes up 4 bits in the corresponding Segment Registers (SEGD4L/SEGD4H for Series 0 and 1, AREGA/AREGB for Series 2) which defines bias level. For optimal use of this feature, the entire register set should be set at once in a optimized routine. Therefore, this function shows how to correctly configure the bias levels and should be used with care.
- Parameters
-
[in] comLineA COM line number, between 0 and 7 for Series 0 and 1. For Series 2, max is LCD_COM_NUM, defined in device-specific headers. [in] biasLevelThe bias configuration level. This value must be within the constraints defined by the LCD_DISPCTRL bias settings. For more information, see the appropriate Reference Manual and data sheet.
◆ LCD_ModeSet()
| void LCD_ModeSet | ( | LCD_Mode_Typedef |
mode
|
) |
Configure the mode for the LCD panel.
- Parameters
-
[in] modeA mode.
◆ LCD_ChargeRedistributionCyclesSet()
| void LCD_ChargeRedistributionCyclesSet | ( | uint8_t |
cycles
|
) |
Configure the charge redistribution cycles for the LCD panel.
- Parameters
-
[in] cyclesCharge redistribution cycles, range 0-4.
◆ LCD_LoadBusyWait()
|
inline |
Wait for load synchronization completion.
- Note
- Doing any writes to HV registers will not go through and will cause a bus fault.
◆ LCD_ReadyWait()
|
inline |
Wait for the LCD to complete resetting or disabling procedure.
◆ LCD_Enable()
|
inline |
Enable or disable LCD controller.
- Parameters
-
[in] enableIf true, enables LCD controller with current configuration. If false, disables LCD controller. Enable CMU clock for LCD for correct operation.
◆ LCD_Reset()
|
inline |
Reset the LCD.
◆ LCD_AnimEnable()
|
inline |
Enable or disable LCD Animation feature.
- Parameters
-
[in] enableBoolean true enables animation, false disables animation.
◆ LCD_BlinkEnable()
|
inline |
Enable or disable the LCD blink.
- Parameters
-
[in] enableBoolean true enables blink, false disables blink.
◆ LCD_BlankEnable()
|
inline |
Disable all segments while keeping segment state.
- Parameters
-
[in] enableBoolean true clears all segments, boolean false restores all segment lines.
◆ LCD_FrameCountEnable()
|
inline |
Enable or disable LCD Frame counter.
- Parameters
-
[in] enableBoolean true enables frame counter, false disables frame counter.
◆ LCD_DisplayCountEnable()
|
inline |
Enable or disable the LCD Display counter.
- Parameters
-
[in] enableBoolean true enables display counter, false disables display counter.
◆ LCD_AnimState()
|
inline |
Return the current animation state.
- Returns
- Animation state, in range 0-15.
◆ LCD_BlinkState()
|
inline |
Return the current blink state.
- Returns
- Return value is 1 if segments are enabled, 0 if disabled.
◆ LCD_SyncStart()
|
inline |
Start the synchronization process.
- Parameters
-
[in] autoloadFlag indicating if the synchronization is started manually with CMD.LOAD (false) or if the synchronization is managed automatically by Auto Load (true). [in] load_addrAddress which will start the synchronization from CLK_BUS to CLK_PER when Auto Load is selected. This argument has no effect if 'autoload' is false.
◆ LCD_SyncStop()
|
inline |
Stop the synchronization process.
- Parameters
-
[in] autoloadFlag indicating if the synchronization is stopped manually with CMD.CLEAR (false) or if the synchronization managed by Auto Load is disabled (true).
◆ LCD_IntGet()
|
inline |
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).
◆ LCD_IntGetEnabled()
|
inline |
Get enabled and pending LCD interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Note
- Event bits are not cleared by the use of this function.
- Returns
-
Pending and enabled LCD interrupt sources. 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 LCD module (LCD_IF_nnn).
◆ LCD_IntSet()
|
inline |
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).
◆ LCD_IntEnable()
|
inline |
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 LCD module (LCD_IFS_nnn).
◆ LCD_IntDisable()
|
inline |
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 LCD module (LCD_IFS_nnn).
◆ LCD_IntClear()
|
inline |
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 LCD module (LCD_IFS_nnn).
◆ LCD_DSCEnable()
|
inline |
Enable or disable LCD Direct Segment Control.
- Parameters
-
[in] enableIf true, enables LCD controller Direct Segment Control Segment and COM line bias levels need to be set explicitly with LCD_BiasSegmentSet() and LCD_BiasComSet() function calls respectively.
Macro Definition Documentation
◆ LCD_FRAME_COUNTER_VAL_MAX
| #define LCD_FRAME_COUNTER_VAL_MAX 64 |
Frame counter uses a maximum of 5 bits (FCTOP[5:0]).
◆ LCD_DEFAULT_CLOCK_PRESCALER
| #define LCD_DEFAULT_CLOCK_PRESCALER 64 |
Default Clock Prescaler.
◆ LCD_DEFAULT_FRAME_RATE_DIV
| #define LCD_DEFAULT_FRAME_RATE_DIV 4 |
Default LCD Frame Rate Divisor.
◆ LCD_DEFAULT_CONTRAST
| #define LCD_DEFAULT_CONTRAST 15 |
Default LCD Contrast.
◆ LCD_COM_LINES_MAX
| #define LCD_COM_LINES_MAX 4 |
Maximum common lines of LCD.
◆ LCD_SEGMENT_LINES_MAX
| #define LCD_SEGMENT_LINES_MAX 20 |
Maximum segment lines of LCD.
◆ LCD_INIT_DEFAULT
| #define LCD_INIT_DEFAULT |
Default configuration for LCD initialization structure, enables 160 segments.
Enumeration Type Documentation
◆ LCD_Mux_TypeDef
| enum LCD_Mux_TypeDef |
MUX setting.
◆ LCD_Wave_TypeDef
| enum LCD_Wave_TypeDef |
◆ LCD_Bias_TypeDef
| enum LCD_Bias_TypeDef |
◆ LCD_Mode_Typedef
| enum LCD_Mode_Typedef |
◆ LCD_FCPreScale_TypeDef
◆ LCD_UpdateCtrl_TypeDef
◆ LCD_LoadAddr_TypeDef
| enum LCD_LoadAddr_TypeDef |
Auto Load address which will start the synchronization from CLK_BUS to CLK_PER.
◆ LCD_AnimShift_TypeDef
◆ LCD_AnimLogic_TypeDef
◆ LCD_AnimLoc_TypeDef
| enum LCD_AnimLoc_TypeDef |
◆ LCD_ChargeRedistribution_TypeDef
Charge redistribution control.
◆ LCD_DmaMode_Typedef
| enum LCD_DmaMode_Typedef |