34 #if defined(LCD_COUNT) && (LCD_COUNT > 0)
64 uint32_t dispCtrl =
LCD->DISPCTRL;
66 EFM_ASSERT(lcdInit != (
void *) 0);
73 #if defined(LCD_DISPCTRL_MUXE)
83 dispCtrl |= lcdInit->
mux;
84 dispCtrl |= lcdInit->
bias;
85 dispCtrl |= lcdInit->
wave;
86 dispCtrl |= lcdInit->
vlcd;
90 LCD->DISPCTRL = dispCtrl;
109 uint32_t dispctrl =
LCD->DISPCTRL;
125 LCD->DISPCTRL = dispctrl;
151 uint32_t bactrl =
LCD->BACTRL;
153 EFM_ASSERT(fcInit != (
void *) 0);
156 EFM_ASSERT(fcInit->
top < 64);
165 LCD->BACTRL = bactrl;
180 uint32_t bactrl =
LCD->BACTRL;
182 EFM_ASSERT(animInit != (
void *) 0);
197 #if defined(LCD_BACTRL_ALOC)
211 LCD->BACTRL = bactrl;
233 LCD->SEGEN |= segmentRange;
237 LCD->SEGEN &= ~((uint32_t)segmentRange);
262 #if defined(_LCD_SEGD7L_MASK)
270 #if defined(_LCD_SEGD0H_MASK)
271 EFM_ASSERT(bit < 40);
274 EFM_ASSERT(bit < 32);
285 #if defined(_LCD_SEGD0H_MASK)
298 #if defined(_LCD_SEGD1H_MASK)
311 #if defined(_LCD_SEGD2H_MASK)
324 #if defined(_LCD_SEGD3H_MASK)
332 #if defined(_LCD_SEGD4L_MASK)
338 #if defined(_LCD_SEGD4H_MASK)
347 #if defined(_LCD_SEGD5L_MASK)
353 #if defined(_LCD_SEGD5H_MASK)
363 #if defined(_LCD_SEGD6L_MASK)
368 #if defined(_LCD_SEGD6H_MASK)
377 #if defined(_LCD_SEGD7L_MASK)
383 #if defined(_LCD_SEGD7H_MASK)
419 #if defined(_LCD_SEGD7L_MASK)
429 segData =
LCD->SEGD0L;
431 segData |= (mask & bits);
432 LCD->SEGD0L = segData;
435 segData =
LCD->SEGD1L;
437 segData |= (mask & bits);
438 LCD->SEGD1L = segData;
441 segData =
LCD->SEGD2L;
443 segData |= (mask & bits);
444 LCD->SEGD2L = segData;
447 segData =
LCD->SEGD3L;
449 segData |= (mask & bits);
450 LCD->SEGD3L = segData;
452 #if defined(_LCD_SEGD4L_MASK)
454 segData =
LCD->SEGD4L;
456 segData |= (mask & bits);
457 LCD->SEGD4L = segData;
460 #if defined(_LCD_SEGD5L_MASK)
462 segData =
LCD->SEGD5L;
464 segData |= (mask & bits);
465 LCD->SEGD5L = segData;
468 #if defined(_LCD_SEGD6L_MASK)
470 segData =
LCD->SEGD6L;
472 segData |= (mask & bits);
473 LCD->SEGD6L = segData;
476 #if defined(_LCD_SEGD7L_MASK)
478 segData =
LCD->SEGD7L;
480 segData |= (mask & bits);
481 LCD->SEGD7L = segData;
491 #if defined(_LCD_SEGD0H_MASK)
509 #if defined(_LCD_SEGD7H_MASK)
519 segData =
LCD->SEGD0H;
521 segData |= (mask & bits);
522 LCD->SEGD0H = segData;
525 segData =
LCD->SEGD1H;
527 segData |= (mask & bits);
528 LCD->SEGD1H = segData;
531 segData =
LCD->SEGD2H;
533 segData |= (mask & bits);
534 LCD->SEGD2H = segData;
537 segData =
LCD->SEGD3H;
539 segData |= (mask & bits);
540 LCD->SEGD3H = segData;
542 #if defined(_LCD_SEGD4H_MASK)
544 segData =
LCD->SEGD4H;
546 segData |= (mask & bits);
547 LCD->SEGD4H = segData;
550 #if defined(_LCD_SEGD5H_MASK)
552 segData =
LCD->SEGD5H;
554 segData |= (mask & bits);
555 LCD->SEGD5H = segData;
558 #if defined(_LCD_SEGD6H_MASK)
560 segData =
LCD->SEGD6H;
562 segData |= (mask & bits);
563 LCD->SEGD6H = segData;
566 #if defined(_LCD_SEGD7H_MASK)
568 segData =
LCD->SEGD7H;
570 segData |= (mask & bits);
571 LCD->SEGD7H = segData;
589 EFM_ASSERT(level < 32);
612 #if defined(LCD_CTRL_DSC)
636 volatile uint32_t *segmentRegister;
638 #if !defined(_LCD_SEGD0H_MASK)
639 EFM_ASSERT(segmentLine < 20);
642 biasRegister = segmentLine / 8;
643 bitShift = (segmentLine % 8) * 4;
645 switch (biasRegister)
648 segmentRegister = &
LCD->SEGD0L;
651 segmentRegister = &
LCD->SEGD1L;
654 segmentRegister = &
LCD->SEGD2L;
657 segmentRegister = &
LCD->SEGD3L;
660 segmentRegister = (uint32_t *)0x00000000;
665 EFM_ASSERT(segmentLine < 40);
668 biasRegister = segmentLine / 10;
669 bitShift = (segmentLine % 10) * 4;
671 switch (biasRegister)
676 segmentRegister = &
LCD->SEGD0L;
680 segmentRegister = &
LCD->SEGD0H;
687 segmentRegister = &
LCD->SEGD1L;
691 segmentRegister = &
LCD->SEGD1H;
698 segmentRegister = &
LCD->SEGD2L;
702 segmentRegister = &
LCD->SEGD1H;
709 segmentRegister = &
LCD->SEGD3L;
713 segmentRegister = &
LCD->SEGD3H;
718 segmentRegister = (uint32_t *)0x00000000;
725 *segmentRegister = (*segmentRegister & ~(0xF << bitShift)) | (biasLevel << bitShift);
730 #if defined(LCD_CTRL_DSC)
753 EFM_ASSERT(comLine < 8);
755 bitShift = comLine * 4;
756 LCD->SEGD4L = (
LCD->SEGD4L & ~(0xF << bitShift)) | (biasLevel << bitShift);
LCD_ConConf_TypeDef contrast
#define _LCD_BACTRL_AREGASC_SHIFT
#define _LCD_BACTRL_AREGBSC_MASK
Emlib peripheral API "assert" implementation.
void LCD_VBoostSet(LCD_VBoostLevel_TypeDef vboost)
Configure voltage booster.
#define _LCD_DISPCTRL_MUXE_MASK
RAM and peripheral bit-field set and clear API.
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...
#define LCD_BACTRL_ALOC_SEG0TO7
void LCD_SegmentRangeEnable(LCD_SegmentRange_TypeDef segment, bool enable)
Enables update of this range of LCD segment lines.
void LCD_BiasComSet(int com, int biasLevel)
Configure bias level for a specific segment line.
#define _LCD_BACTRL_ALOGSEL_MASK
LCD_AnimShift_TypeDef BShift
#define _LCD_DISPCTRL_CONLEV_MASK
#define _LCD_BACTRL_FCTOP_MASK
void LCD_FrameCountInit(const LCD_FrameCountInit_TypeDef *fcInit)
Initialize LCD Frame Counter.
void LCD_SegmentSet(int com, int bit, bool enable)
Turn on or clear a segment.
#define _LCD_BACTRL_AREGBSC_SHIFT
void LCD_VLCDSelect(LCD_VLCDSel_TypeDef vlcd)
Select source for VLCD.
__STATIC_INLINE void LCD_FrameCountEnable(bool enable)
Enables or disables LCD Frame Control.
#define _LCD_BACTRL_FCPRESC_MASK
void LCD_UpdateCtrl(LCD_UpdateCtrl_TypeDef ud)
Configure Update Control.
LCD_FCPreScale_TypeDef prescale
#define _LCD_DISPCTRL_CONCONF_MASK
#define _LCD_BACTRL_AREGASC_MASK
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.
#define _LCD_DISPCTRL_VLCDSEL_MASK
#define _LCD_DISPCTRL_CONLEV_SHIFT
Liquid Crystal Display (LCD) peripheral API.
#define LCD_DISPCTRL_VLCDSEL_VEXTBOOST
#define LCD_DISPCTRL_VLCDSEL_VDD
#define _LCD_DISPCTRL_WAVE_MASK
LCD_AnimShift_TypeDef AShift
void LCD_ContrastSet(int level)
Configure contrast level on LCD panel.
LCD_AnimLogic_TypeDef animLogic
void LCD_BiasSegmentSet(int segment, int biasLevel)
Configure bias level for a specific segment line for Direct Segment Control.
#define _LCD_CTRL_UDCTRL_MASK
#define _LCD_DISPCTRL_VBLEV_MASK
#define _LCD_BACTRL_ALOC_MASK
#define LCD_BACTRL_ALOC_SEG8TO15
__STATIC_INLINE void BUS_RegBitWrite(volatile uint32_t *addr, unsigned int bit, unsigned int val)
Perform a single-bit write operation on a peripheral register.
#define _LCD_DISPCTRL_MUX_MASK
#define _LCD_BACTRL_FCTOP_SHIFT
void LCD_AnimInit(const LCD_AnimInit_TypeDef *animInit)
Configures LCD controller Animation feature.
__STATIC_INLINE void LCD_Enable(bool enable)
Enable or disable LCD controller.
void LCD_Init(const LCD_Init_TypeDef *lcdInit)
Initalize Liquid Crystal Display (LCD) controller.
__STATIC_INLINE void LCD_AnimEnable(bool enable)
Enables or disables LCD Animation feature.
#define _LCD_DISPCTRL_BIAS_MASK