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_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. | |
| #define | LCD_FRAME_COUNTER_VAL_MAX 64 | 
| Frame counter uses a maximum of 5 bits (FCTOP[5:0]). | |
| 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_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.
        
       
◆ LCD_FRAME_COUNTER_VAL_MAX
| #define LCD_FRAME_COUNTER_VAL_MAX 64 | 
Frame counter uses a maximum of 5 bits (FCTOP[5:0]).
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 |