Boen_Shi 8be2866433 feat(base): 初始化 MSPM0 开发环境
- 添加头文件和配置文件支持
- 更新.gitignore忽略编译和IDE相关文件
- 添加基础的bsp代码
2026-07-16 14:45:26 +08:00

2114 lines
70 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2023, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*!****************************************************************************
* @file dl_lcd.h
* @brief Liquid Crystal Display (LCD) Driver Library
* @defgroup LCD Liquid Crystal Display (LCD)
*
* @anchor ti_dl_dl_lcd_Overview
* # Overview
*
* The LCD Library allows full configuration of the MSPM0 LCD module.
* The LCD controller creates the AC segment and common voltage signals to
* directly drive LCD displays.
*
* <hr>
******************************************************************************
*/
/** @addtogroup LCD
* @{
*/
#ifndef ti_dl_dl_lcd__include
#define ti_dl_dl_lcd__include
#include <stdbool.h>
#include <stdint.h>
#include <ti/devices/msp/msp.h>
#include <ti/driverlib/dl_common.h>
#ifdef __MSPM0_HAS_LCD__
#ifdef __cplusplus
extern "C" {
#endif
/* clang-format off */
/** @addtogroup DL_LCD_INTERRUPT
* @{
*/
/*!
* @brief Interrupt raised when there is the start of a new LCD frame
*/
#define DL_LCD_INTERRUPT_FRAME_START (LCD_IMASK_FRMSTART_SET)
/*!
* @brief Interrupt raised when blinking segments are turned off
*/
#define DL_LCD_INTERRUPT_BLINKING_SEGMENTS_OFF (LCD_IMASK_BLKOFF_SET)
/*!
* @brief Interrupt raised when blinking segments are turned on
*/
#define DL_LCD_INTERRUPT_BLINKING_SEGMENTS_ON (LCD_IMASK_BLKON_SET)
/** @}*/
/** @addtogroup DL_LCD_SEGMENT_LINE
* @{
*/
/*!
* @brief LCD Pin 0
*/
#define DL_LCD_SEGMENT_LINE_0 (0)
/*!
* @brief LCD Pin 1
*/
#define DL_LCD_SEGMENT_LINE_1 (1)
/*!
* @brief LCD Pin 2
*/
#define DL_LCD_SEGMENT_LINE_2 (2)
/*!
* @brief LCD Pin 3
*/
#define DL_LCD_SEGMENT_LINE_3 (3)
/*!
* @brief LCD Pin 4
*/
#define DL_LCD_SEGMENT_LINE_4 (4)
/*!
* @brief LCD Pin 5
*/
#define DL_LCD_SEGMENT_LINE_5 (5)
/*!
* @brief LCD Pin 6
*/
#define DL_LCD_SEGMENT_LINE_6 (6)
/*!
* @brief LCD Pin 7
*/
#define DL_LCD_SEGMENT_LINE_7 (7)
/*!
* @brief LCD Pin 8
*/
#define DL_LCD_SEGMENT_LINE_8 (8)
/*!
* @brief LCD Pin 9
*/
#define DL_LCD_SEGMENT_LINE_9 (9)
/*!
* @brief LCD Pin 10
*/
#define DL_LCD_SEGMENT_LINE_10 (10)
/*!
* @brief LCD Pin 11
*/
#define DL_LCD_SEGMENT_LINE_11 (11)
/*!
* @brief LCD Pin 12
*/
#define DL_LCD_SEGMENT_LINE_12 (12)
/*!
* @brief LCD Pin 13
*/
#define DL_LCD_SEGMENT_LINE_13 (13)
/*!
* @brief LCD Pin 14
*/
#define DL_LCD_SEGMENT_LINE_14 (14)
/*!
* @brief LCD Pin 15
*/
#define DL_LCD_SEGMENT_LINE_15 (15)
/*!
* @brief LCD Pin 16
*/
#define DL_LCD_SEGMENT_LINE_16 (16)
/*!
* @brief LCD Pin 17
*/
#define DL_LCD_SEGMENT_LINE_17 (17)
/*!
* @brief LCD Pin 18
*/
#define DL_LCD_SEGMENT_LINE_18 (18)
/*!
* @brief LCD Pin 19
*/
#define DL_LCD_SEGMENT_LINE_19 (19)
/*!
* @brief LCD Pin 20
*/
#define DL_LCD_SEGMENT_LINE_20 (20)
/*!
* @brief LCD Pin 21
*/
#define DL_LCD_SEGMENT_LINE_21 (21)
/*!
* @brief LCD Pin 22
*/
#define DL_LCD_SEGMENT_LINE_22 (22)
/*!
* @brief LCD Pin 23
*/
#define DL_LCD_SEGMENT_LINE_23 (23)
/*!
* @brief LCD Pin 24
*/
#define DL_LCD_SEGMENT_LINE_24 (24)
/*!
* @brief LCD Pin 25
*/
#define DL_LCD_SEGMENT_LINE_25 (25)
/*!
* @brief LCD Pin 26
*/
#define DL_LCD_SEGMENT_LINE_26 (26)
/*!
* @brief LCD Pin 27
*/
#define DL_LCD_SEGMENT_LINE_27 (27)
/*!
* @brief LCD Pin 28
*/
#define DL_LCD_SEGMENT_LINE_28 (28)
/*!
* @brief LCD Pin 29
*/
#define DL_LCD_SEGMENT_LINE_29 (29)
/*!
* @brief LCD Pin 30
*/
#define DL_LCD_SEGMENT_LINE_30 (30)
/*!
* @brief LCD Pin 31
*/
#define DL_LCD_SEGMENT_LINE_31 (31)
/*!
* @brief LCD Pin 32
*/
#define DL_LCD_SEGMENT_LINE_32 (32)
/*!
* @brief LCD Pin 33
*/
#define DL_LCD_SEGMENT_LINE_33 (33)
/*!
* @brief LCD Pin 34
*/
#define DL_LCD_SEGMENT_LINE_34 (34)
/*!
* @brief LCD Pin 35
*/
#define DL_LCD_SEGMENT_LINE_35 (35)
/*!
* @brief LCD Pin 36
*/
#define DL_LCD_SEGMENT_LINE_36 (36)
/*!
* @brief LCD Pin 37
*/
#define DL_LCD_SEGMENT_LINE_37 (37)
/*!
* @brief LCD Pin 38
*/
#define DL_LCD_SEGMENT_LINE_38 (38)
/*!
* @brief LCD Pin 39
*/
#define DL_LCD_SEGMENT_LINE_39 (39)
/*!
* @brief LCD Pin 40
*/
#define DL_LCD_SEGMENT_LINE_40 (40)
/*!
* @brief LCD Pin 41
*/
#define DL_LCD_SEGMENT_LINE_41 (41)
/*!
* @brief LCD Pin 42
*/
#define DL_LCD_SEGMENT_LINE_42 (42)
/*!
* @brief LCD Pin 43
*/
#define DL_LCD_SEGMENT_LINE_43 (43)
/*!
* @brief LCD Pin 44
*/
#define DL_LCD_SEGMENT_LINE_44 (44)
/*!
* @brief LCD Pin 45
*/
#define DL_LCD_SEGMENT_LINE_45 (45)
/*!
* @brief LCD Pin 46
*/
#define DL_LCD_SEGMENT_LINE_46 (46)
/*!
* @brief LCD Pin 47
*/
#define DL_LCD_SEGMENT_LINE_47 (47)
/*!
* @brief LCD Pin 48
*/
#define DL_LCD_SEGMENT_LINE_48 (48)
/*!
* @brief LCD Pin 49
*/
#define DL_LCD_SEGMENT_LINE_49 (49)
/*!
* @brief LCD Pin 50
*/
#define DL_LCD_SEGMENT_LINE_50 (50)
/*!
* @brief LCD Pin 51
*/
#define DL_LCD_SEGMENT_LINE_51 (51)
/*!
* @brief LCD Pin 52
*/
#define DL_LCD_SEGMENT_LINE_52 (52)
/*!
* @brief LCD Pin 53
*/
#define DL_LCD_SEGMENT_LINE_53 (53)
/*!
* @brief LCD Pin 54
*/
#define DL_LCD_SEGMENT_LINE_54 (54)
/*!
* @brief LCD Pin 55
*/
#define DL_LCD_SEGMENT_LINE_55 (55)
/*!
* @brief LCD Pin 56
*/
#define DL_LCD_SEGMENT_LINE_56 (56)
/*!
* @brief LCD Pin 57
*/
#define DL_LCD_SEGMENT_LINE_57 (57)
/*!
* @brief LCD Pin 58
*/
#define DL_LCD_SEGMENT_LINE_58 (58)
/*!
* @brief LCD Pin 59
*/
#define DL_LCD_SEGMENT_LINE_59 (59)
/*!
* @brief LCD Pin 60
*/
#define DL_LCD_SEGMENT_LINE_60 (60)
/*!
* @brief LCD Pin 61
*/
#define DL_LCD_SEGMENT_LINE_61 (61)
/*!
* @brief LCD Pin 62
*/
#define DL_LCD_SEGMENT_LINE_62 (62)
/*!
* @brief LCD Pin 63
*/
#define DL_LCD_SEGMENT_LINE_63 (63)
/** @}*/
/** @addtogroup DL_LCD_MEMORY_BIT
* @{
*/
/*!
* @brief Bit 0 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM0
* 1b = Pin L[2*index] is used as COM0
*/
#define DL_LCD_MEMORY_BIT_0 (LCD_LCDM_MBIT0_MASK)
/*!
* @brief Bit 1 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM1
* 1b = Pin L[2*index] is used as COM1
*/
#define DL_LCD_MEMORY_BIT_1 (LCD_LCDM_MBIT1_MASK)
/*!
* @brief Bit 2 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM2
* 1b = Pin L[2*index] is used as COM2
*/
#define DL_LCD_MEMORY_BIT_2 (LCD_LCDM_MBIT2_MASK)
/*!
* @brief Bit 3 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM3
* 1b = Pin L[2*index] is used as COM3
*/
#define DL_LCD_MEMORY_BIT_3 (LCD_LCDM_MBIT3_MASK)
/*!
* @brief Bit 4 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM4
* 1b = Pin L[2*index] is used as COM4
*/
#define DL_LCD_MEMORY_BIT_4 (LCD_LCDM_MBIT4_MASK)
/*!
* @brief Bit 5 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM5
* 1b = Pin L[2*index] is used as COM5
*/
#define DL_LCD_MEMORY_BIT_5 (LCD_LCDM_MBIT5_MASK)
/*!
* @brief Bit 6 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM6
* 1b = Pin L[2*index] is used as COM6
*/
#define DL_LCD_MEMORY_BIT_6 (LCD_LCDM_MBIT6_MASK)
/*!
* @brief Bit 7 inside LCD memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM7
* 1b = Pin L[2*index] is used as COM7
*/
#define DL_LCD_MEMORY_BIT_7 (LCD_LCDM_MBIT7_MASK)
/** @}*/
/** @addtogroup DL_LCD_BLINK_MEMORY_BIT
* @{
*/
/*!
* @brief Bit 0 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM0
* 1b = Pin L[2*index] is used as COM0
*/
#define DL_LCD_BLINK_MEMORY_BIT_0 (LCD_LCDBM_MBIT0_MASK)
/*!
* @brief Bit 1 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM1
* 1b = Pin L[2*index] is used as COM1
*/
#define DL_LCD_BLINK_MEMORY_BIT_1 (LCD_LCDBM_MBIT1_MASK)
/*!
* @brief Bit 2 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM2
* 1b = Pin L[2*index] is used as COM2
*/
#define DL_LCD_BLINK_MEMORY_BIT_2 (LCD_LCDBM_MBIT2_MASK)
/*!
* @brief Bit 3 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM3
* 1b = Pin L[2*index] is used as COM3
*/
#define DL_LCD_BLINK_MEMORY_BIT_3 (LCD_LCDBM_MBIT3_MASK)
/*!
* @brief Bit 4 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM4
* 1b = Pin L[2*index] is used as COM4
*/
#define DL_LCD_BLINK_MEMORY_BIT_4 (LCD_LCDBM_MBIT4_MASK)
/*!
* @brief Bit 5 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM5
* 1b = Pin L[2*index] is used as COM5
*/
#define DL_LCD_BLINK_MEMORY_BIT_5 (LCD_LCDBM_MBIT5_MASK)
/*!
* @brief Bit 6 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM6
* 1b = Pin L[2*index] is used as COM6
*/
#define DL_LCD_BLINK_MEMORY_BIT_6 (LCD_LCDBM_MBIT6_MASK)
/*!
* @brief Bit 7 inside LCD blink memory index registers
*
* If LCD L[2*index] is selected as (1) segment line: 0b = LCD segment off
* 1b = LCD segment on (2) common line: 0b = Pin L[2*index] not used as COM7
* 1b = Pin L[2*index] is used as COM7
*/
#define DL_LCD_BLINK_MEMORY_BIT_7 (LCD_LCDBM_MBIT7_MASK)
/** @}*/
/*! @enum DL_LCD_FREQ_DIVIDE */
typedef enum {
/*! Divide fLCD by 1 */
DL_LCD_FREQ_DIVIDE_1 = LCD_LCDCTL0_LCDDIVX_DIV_BY_1,
/*! Divide fLCD by 2 */
DL_LCD_FREQ_DIVIDE_2 = LCD_LCDCTL0_LCDDIVX_DIV_BY_2,
/*! Divide fLCD by 3 */
DL_LCD_FREQ_DIVIDE_3 = LCD_LCDCTL0_LCDDIVX_DIV_BY_3,
/*! Divide fLCD by 4 */
DL_LCD_FREQ_DIVIDE_4 = LCD_LCDCTL0_LCDDIVX_DIV_BY_4,
/*! Divide fLCD by 5 */
DL_LCD_FREQ_DIVIDE_5 = LCD_LCDCTL0_LCDDIVX_DIV_BY_5,
/*! Divide fLCD by 6 */
DL_LCD_FREQ_DIVIDE_6 = LCD_LCDCTL0_LCDDIVX_DIV_BY_6,
/*! Divide fLCD by 7 */
DL_LCD_FREQ_DIVIDE_7 = LCD_LCDCTL0_LCDDIVX_DIV_BY_7,
/*! Divide fLCD by 8 */
DL_LCD_FREQ_DIVIDE_8 = LCD_LCDCTL0_LCDDIVX_DIV_BY_8,
/*! Divide fLCD by 9 */
DL_LCD_FREQ_DIVIDE_9 = LCD_LCDCTL0_LCDDIVX_DIV_BY_9,
/*! Divide fLCD by 10 */
DL_LCD_FREQ_DIVIDE_10 = LCD_LCDCTL0_LCDDIVX_DIV_BY_10,
/*! Divide fLCD by 11 */
DL_LCD_FREQ_DIVIDE_11 = LCD_LCDCTL0_LCDDIVX_DIV_BY_11,
/*! Divide fLCD by 12 */
DL_LCD_FREQ_DIVIDE_12 = LCD_LCDCTL0_LCDDIVX_DIV_BY_12,
/*! Divide fLCD by 13 */
DL_LCD_FREQ_DIVIDE_13 = LCD_LCDCTL0_LCDDIVX_DIV_BY_13,
/*! Divide fLCD by 14 */
DL_LCD_FREQ_DIVIDE_14 = LCD_LCDCTL0_LCDDIVX_DIV_BY_14,
/*! Divide fLCD by 15 */
DL_LCD_FREQ_DIVIDE_15 = LCD_LCDCTL0_LCDDIVX_DIV_BY_15,
/*! Divide fLCD by 16 */
DL_LCD_FREQ_DIVIDE_16 = LCD_LCDCTL0_LCDDIVX_DIV_BY_16,
/*! Divide fLCD by 17 */
DL_LCD_FREQ_DIVIDE_17 = LCD_LCDCTL0_LCDDIVX_DIV_BY_17,
/*! Divide fLCD by 18 */
DL_LCD_FREQ_DIVIDE_18 = LCD_LCDCTL0_LCDDIVX_DIV_BY_18,
/*! Divide fLCD by 19 */
DL_LCD_FREQ_DIVIDE_19 = LCD_LCDCTL0_LCDDIVX_DIV_BY_19,
/*! Divide fLCD by 20 */
DL_LCD_FREQ_DIVIDE_20 = LCD_LCDCTL0_LCDDIVX_DIV_BY_20,
/*! Divide fLCD by 21 */
DL_LCD_FREQ_DIVIDE_21 = LCD_LCDCTL0_LCDDIVX_DIV_BY_21,
/*! Divide fLCD by 22 */
DL_LCD_FREQ_DIVIDE_22 = LCD_LCDCTL0_LCDDIVX_DIV_BY_22,
/*! Divide fLCD by 23 */
DL_LCD_FREQ_DIVIDE_23 = LCD_LCDCTL0_LCDDIVX_DIV_BY_23,
/*! Divide fLCD by 24 */
DL_LCD_FREQ_DIVIDE_24 = LCD_LCDCTL0_LCDDIVX_DIV_BY_24,
/*! Divide fLCD by 25 */
DL_LCD_FREQ_DIVIDE_25 = LCD_LCDCTL0_LCDDIVX_DIV_BY_25,
/*! Divide fLCD by 26 */
DL_LCD_FREQ_DIVIDE_26 = LCD_LCDCTL0_LCDDIVX_DIV_BY_26,
/*! Divide fLCD by 27 */
DL_LCD_FREQ_DIVIDE_27 = LCD_LCDCTL0_LCDDIVX_DIV_BY_27,
/*! Divide fLCD by 28 */
DL_LCD_FREQ_DIVIDE_28 = LCD_LCDCTL0_LCDDIVX_DIV_BY_28,
/*! Divide fLCD by 29 */
DL_LCD_FREQ_DIVIDE_29 = LCD_LCDCTL0_LCDDIVX_DIV_BY_29,
/*! Divide fLCD by 30 */
DL_LCD_FREQ_DIVIDE_30 = LCD_LCDCTL0_LCDDIVX_DIV_BY_30,
/*! Divide fLCD by 31 */
DL_LCD_FREQ_DIVIDE_31 = LCD_LCDCTL0_LCDDIVX_DIV_BY_31,
/*! Divide fLCD by 32 */
DL_LCD_FREQ_DIVIDE_32 = LCD_LCDCTL0_LCDDIVX_DIV_BY_32,
} DL_LCD_FREQ_DIVIDE;
/*! @enum DL_LCD_MUX_RATE */
typedef enum {
/*! Select LCD Mode: static */
DL_LCD_MUX_RATE_STATIC = LCD_LCDCTL0_LCDMXX_MX_STATIC,
/*! Select LCD Mode: 2-mux */
DL_LCD_MUX_RATE_2 = LCD_LCDCTL0_LCDMXX_MX_2,
/*! Select LCD Mode: 3-mux */
DL_LCD_MUX_RATE_3 = LCD_LCDCTL0_LCDMXX_MX_3,
/*! Select LCD Mode: 4-mux */
DL_LCD_MUX_RATE_4 = LCD_LCDCTL0_LCDMXX_MX_4,
/*! Select LCD Mode: 5-mux */
DL_LCD_MUX_RATE_5 = LCD_LCDCTL0_LCDMXX_MX_5,
/*! Select LCD Mode: 6-mux */
DL_LCD_MUX_RATE_6 = LCD_LCDCTL0_LCDMXX_MX_6,
/*! Select LCD Mode: 7-mux */
DL_LCD_MUX_RATE_7 = LCD_LCDCTL0_LCDMXX_MX_7,
/*! Select LCD Mode: 8-mux */
DL_LCD_MUX_RATE_8 = LCD_LCDCTL0_LCDMXX_MX_8,
} DL_LCD_MUX_RATE;
/*! @enum DL_LCD_WAVEFORM_POWERMODE */
typedef enum {
/*! Select low power LCD waveforms */
DL_LCD_WAVEFORM_POWERMODE_LOWPOWER = LCD_LCDCTL0_LCDLP_LP_LCD,
/*! Select standard LCD waveforms */
DL_LCD_WAVEFORM_POWERMODE_STANDARD = LCD_LCDCTL0_LCDLP_STD_LCD,
} DL_LCD_WAVEFORM_POWERMODE;
/*! @enum DL_LCD_BLINKING_DIVIDE */
typedef enum {
/*! Divide LCD blinking frequency by 2 */
DL_LCD_BLINKING_DIVIDE_BY_2 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_2,
/*! Divide LCD blinking frequency by 4 */
DL_LCD_BLINKING_DIVIDE_BY_4 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_4,
/*! Divide LCD blinking frequency by 8 */
DL_LCD_BLINKING_DIVIDE_BY_8 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_8,
/*! Divide LCD blinking frequency by 16 */
DL_LCD_BLINKING_DIVIDE_BY_16 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_16,
/*! Divide LCD blinking frequency by 32 */
DL_LCD_BLINKING_DIVIDE_BY_32 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_32,
/*! Divide LCD blinking frequency by 64 */
DL_LCD_BLINKING_DIVIDE_BY_64 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_64,
/*! Divide LCD blinking frequency by 128 */
DL_LCD_BLINKING_DIVIDE_BY_128 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_128,
/*! Divide LCD blinking frequency by 256 */
DL_LCD_BLINKING_DIVIDE_BY_256 = LCD_LCDBLKCTL_LCDBLKPREX_DIV_BY_256,
} DL_LCD_BLINKING_DIVIDE;
/*! @enum DL_LCD_BLINKING_MODE */
typedef enum {
/*! Blinking disabled */
DL_LCD_BLINKING_MODE_DISABLED = LCD_LCDBLKCTL_LCDBLKMODX_BLINK_DISABLE,
/*! Blinking of individual segments as enabled in LCDBMx */
DL_LCD_BLINKING_MODE_INDIVIDUAL_SEGMENTS =
LCD_LCDBLKCTL_LCDBLKMODX_BLINK_SELECED,
/*! Blinking of all segments */
DL_LCD_BLINKING_MODE_ALL_SEGMENTS = LCD_LCDBLKCTL_LCDBLKMODX_BLINK_ALL,
/*! Switch between display contents stored in LCDMx and LCDMBx */
DL_LCD_BLINKING_MODE_TOGGLE = LCD_LCDBLKCTL_LCDBLKMODX_BKINK_TOGGLE,
} DL_LCD_BLINKING_MODE;
/*! @enum DL_LCD_CHARGE_PUMP_FREQUENCY */
typedef enum {
/*! 32.768 kHz / 1 / 8 = 4.096 kHz */
DL_LCD_CHARGE_PUMP_FREQUENCY_4096HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_1_BY_8,
/*! 32.768 kHz / 2 / 8 = 2.048 kHz */
DL_LCD_CHARGE_PUMP_FREQUENCY_2048HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_2_BY_8,
/*! 32.768 kHz / 3 / 8 = 1.365 kHz */
DL_LCD_CHARGE_PUMP_FREQUENCY_1365HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_3_BY_8,
/*! 32.768 kHz / 4 / 8 = 1.024 kHz */
DL_LCD_CHARGE_PUMP_FREQUENCY_1024HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_4_BY_8,
/*! 32.768 kHz / 5 / 8 = 819 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_819HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_5_BY_8,
/*! 32.768 kHz / 6 / 8 = 682 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_682HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_6_BY_8,
/*! 32.768 kHz / 7 / 8 = 585 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_585HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_7_BY_8,
/*! 32.768 kHz / 8 / 8 = 512 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_512HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_8_BY_8,
/*! 32.768 kHz / 9 / 8 = 455 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_455HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_9_BY_8,
/*! 32.768 kHz / 10 / 8 = 409 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_409HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_10_BY_8,
/*! 32.768 kHz / 11 / 8 = 372 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_372HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_11_BY_8,
/*! 32.768 kHz / 12 / 8 = 341 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_341HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_12_BY_8,
/*! 32.768 kHz / 13 / 8 = 315 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_315HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_13_BY_8,
/*! 32.768 kHz / 14 / 8 = 292 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_292HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_14_BY_8,
/*! 32.768 kHz / 15 / 8 = 273 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_273HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_15_BY_8,
/*! 32.768 kHz / 16 / 8 = 256 Hz */
DL_LCD_CHARGE_PUMP_FREQUENCY_256HZ = LCD_LCDVCTL_LCDCPFSELX_DIV_BY_16_BY_8,
} DL_LCD_CHARGE_PUMP_FREQUENCY;
/*! @enum DL_LCD_VREF_INTERNAL */
typedef enum {
/*! 2.60 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_2_60V = LCD_LCDVCTL_VLCDX_SEL_2P60V,
/*! 2.66 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_2_66V = LCD_LCDVCTL_VLCDX_SEL_2P66V,
/*! 2.72 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_2_72V = LCD_LCDVCTL_VLCDX_SEL_2P72V,
/*! 2.78 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_2_78V = LCD_LCDVCTL_VLCDX_SEL_2P78V,
/*! 2.84 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_2_84V = LCD_LCDVCTL_VLCDX_SEL_2P84V,
/*! 2.90 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_2_90V = LCD_LCDVCTL_VLCDX_SEL_2P90V,
/*! 2.96 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_2_96V = LCD_LCDVCTL_VLCDX_SEL_2P96V,
/*! 3.02 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_02V = LCD_LCDVCTL_VLCDX_SEL_3P02V,
/*! 3.08 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_08V = LCD_LCDVCTL_VLCDX_SEL_3P08V,
/*! 3.14 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_14V = LCD_LCDVCTL_VLCDX_SEL_3P14V,
/*! 3.20 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_20V = LCD_LCDVCTL_VLCDX_SEL_3P20V,
/*! 3.26 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_26V = LCD_LCDVCTL_VLCDX_SEL_3P26V,
/*! 3.32 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_32V = LCD_LCDVCTL_VLCDX_SEL_3P32V,
/*! 3.38 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_38V = LCD_LCDVCTL_VLCDX_SEL_3P38V,
/*! 3.44 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_44V = LCD_LCDVCTL_VLCDX_SEL_3P44V,
/*! 3.50 V internal reference voltage select on R13 */
DL_LCD_VREF_INTERNAL_3_50V = LCD_LCDVCTL_VLCDX_SEL_3P50V,
} DL_LCD_VREF_INTERNAL;
/*! @enum DL_LCD_R33_SOURCE */
typedef enum {
/*! R33 is supplied from charge pump */
DL_LCD_R33_SOURCE_EXTERNAL = LCD_LCDVCTL_LCDSELVDD_SEL_EXT_SUPPLY,
/*! R33 is supplied from AVDD internally */
DL_LCD_R33_SOURCE_INTERNAL = LCD_LCDVCTL_LCDSELVDD_SEL_AVDD,
} DL_LCD_R33_SOURCE;
/*! @enum DL_LCD_POWER_MODE */
typedef enum {
/*! Low power resistor ladder generates bias voltage for the LCD */
DL_LCD_POWER_MODE_LOW = LCD_LCDVCTL_LCD_HP_LP_LP_MODE,
/*! Higher power resistor ladder generates bias voltage for the LCD */
DL_LCD_POWER_MODE_HIGH = LCD_LCDVCTL_LCD_HP_LP_HP_MODE,
} DL_LCD_POWER_MODE;
/*! @enum DL_LCD_BIAS_VOLTAGE_SOURCE */
typedef enum {
/*! Bias voltage sourced from R33 pin */
DL_LCD_BIAS_VOLTAGE_SOURCE_R33 = LCD_LCDVCTL_VLCDSEL_VDD_R33_SEL_R33,
/*! Bias voltage sourced from internal supply voltage AVDD */
DL_LCD_BIAS_VOLTAGE_SOURCE_AVDD = LCD_LCDVCTL_VLCDSEL_VDD_R33_SEL_AVDD,
} DL_LCD_BIAS_VOLTAGE_SOURCE;
/*! @enum DL_LCD_BIAS */
typedef enum {
/*! For 5-mux to 8-mux modes only. 1/3 bias */
DL_LCD_BIAS_ONE_THIRD = LCD_LCDVCTL_LCDBIASSEL_ONE_BY_3_BIAS,
/*! For 5-mux to 8-mux modes only. 1/4 bias */
DL_LCD_BIAS_ONE_FOURTH = LCD_LCDVCTL_LCDBIASSEL_ONE_BY_4_BIAS,
} DL_LCD_BIAS;
/*! @enum DL_LCD_REFERENCE_MODE */
typedef enum {
/*! R13 voltage in static mode */
DL_LCD_REFERENCE_MODE_STATIC = LCD_LCDVCTL_LCDREFMODE_STATIC_MODE,
/*! R13 voltage in switched mode */
DL_LCD_REFERENCE_MODE_SWITCHED = LCD_LCDVCTL_LCDREFMODE_SWITCHED_MODE,
} DL_LCD_REFERENCE_MODE;
/*! @enum DL_LCD_DISP */
typedef enum {
/*! Display content of LCD memory registers LCDMx */
DL_LCD_DISPLAY_REGISTERS_MEMORY = LCD_LCDMEMCTL_LCDDISP_SEL_LCD_MEM_REGS,
/*! Display content of LCD blinking memory registers LCDBMx */
DL_LCD_DISPLAY_REGISTERS_BLINKING_MEMORY =
LCD_LCDMEMCTL_LCDDISP_SEL_BLNK_MEM_REGS,
} DL_LCD_DISP;
/*! @enum DL_LCD_EVENT_LINE_MODE */
typedef enum {
/*! The interrupt or event line is disabled. */
DL_LCD_EVENT_LINE_MODE_DISABLED = LCD_EVT_MODE_INT0_CFG_DISABLE,
/*! The interrupt/event line is in sw mode. Software must clear the RIS. */
DL_LCD_EVENT_LINE_MODE_SOFTWARE = LCD_EVT_MODE_INT0_CFG_SOFTWARE,
/*! The interrupt/event line is in hw mode. The hardware clears RIS flag. */
DL_LCD_EVENT_LINE_MODE_HARDWARE = LCD_EVT_MODE_INT0_CFG_HARDWARE,
} DL_LCD_EVENT_LINE_MODE;
/*! @enum DL_LCD_IIDX */
typedef enum {
/*! LCD interrupt index for no interrupt pending */
DL_LCD_IIDX_NO_INT = LCD_IIDX_STAT_NO_INTR,
/*! LCD interrupt index when start of new frame interrupt */
DL_LCD_IIDX_FRAME_START = LCD_IIDX_STAT_FRAME_START,
/*! LCD interrupt index when blinking segments off */
DL_LCD_IIDX_BLINKING_SEGMENTS_OFF = LCD_IIDX_STAT_BLK_OFF,
/*! LCD interrupt index when blinking segments on */
DL_LCD_IIDX_BLINKING_SEGMENTS_ON = LCD_IIDX_STAT_BLK_ON,
} DL_LCD_IIDX;
/*! @enum DL_LCD_MEMORY */
typedef enum {
/*! Index to access LCD memory register 0 */
DL_LCD_MEMORY_0 = 0,
/*! Index to access LCD memory register 1 */
DL_LCD_MEMORY_1 = 1,
/*! Index to access LCD memory register 2 */
DL_LCD_MEMORY_2 = 2,
/*! Index to access LCD memory register 3 */
DL_LCD_MEMORY_3 = 3,
/*! Index to access LCD memory register 4 */
DL_LCD_MEMORY_4 = 4,
/*! Index to access LCD memory register 5 */
DL_LCD_MEMORY_5 = 5,
/*! Index to access LCD memory register 6 */
DL_LCD_MEMORY_6 = 6,
/*! Index to access LCD memory register 7 */
DL_LCD_MEMORY_7 = 7,
/*! Index to access LCD memory register 8 */
DL_LCD_MEMORY_8 = 8,
/*! Index to access LCD memory register 9 */
DL_LCD_MEMORY_9 = 9,
/*! Index to access LCD memory register 10 */
DL_LCD_MEMORY_10 = 10,
/*! Index to access LCD memory register 11 */
DL_LCD_MEMORY_11 = 11,
/*! Index to access LCD memory register 12 */
DL_LCD_MEMORY_12 = 12,
/*! Index to access LCD memory register 13 */
DL_LCD_MEMORY_13 = 13,
/*! Index to access LCD memory register 14 */
DL_LCD_MEMORY_14 = 14,
/*! Index to access LCD memory register 15 */
DL_LCD_MEMORY_15 = 15,
/*! Index to access LCD memory register 16 */
DL_LCD_MEMORY_16 = 16,
/*! Index to access LCD memory register 17 */
DL_LCD_MEMORY_17 = 17,
/*! Index to access LCD memory register 18 */
DL_LCD_MEMORY_18 = 18,
/*! Index to access LCD memory register 19 */
DL_LCD_MEMORY_19 = 19,
/*! Index to access LCD memory register 20 */
DL_LCD_MEMORY_20 = 20,
/*! Index to access LCD memory register 21 */
DL_LCD_MEMORY_21 = 21,
/*! Index to access LCD memory register 22 */
DL_LCD_MEMORY_22 = 22,
/*! Index to access LCD memory register 23 */
DL_LCD_MEMORY_23 = 23,
/*! Index to access LCD memory register 24 */
DL_LCD_MEMORY_24 = 24,
/*! Index to access LCD memory register 25 */
DL_LCD_MEMORY_25 = 25,
/*! Index to access LCD memory register 26 */
DL_LCD_MEMORY_26 = 26,
/*! Index to access LCD memory register 27 */
DL_LCD_MEMORY_27 = 27,
/*! Index to access LCD memory register 28 */
DL_LCD_MEMORY_28 = 28,
/*! Index to access LCD memory register 29 */
DL_LCD_MEMORY_29 = 29,
/*! Index to access LCD memory register 30 */
DL_LCD_MEMORY_30 = 30,
/*! Index to access LCD memory register 31 */
DL_LCD_MEMORY_31 = 31,
/*! Index to access LCD memory register 32 */
DL_LCD_MEMORY_32 = 32,
/*! Index to access LCD memory register 33 */
DL_LCD_MEMORY_33 = 33,
/*! Index to access LCD memory register 34 */
DL_LCD_MEMORY_34 = 34,
/*! Index to access LCD memory register 35 */
DL_LCD_MEMORY_35 = 35,
/*! Index to access LCD memory register 36 */
DL_LCD_MEMORY_36 = 36,
/*! Index to access LCD memory register 37 */
DL_LCD_MEMORY_37 = 37,
/*! Index to access LCD memory register 38 */
DL_LCD_MEMORY_38 = 38,
/*! Index to access LCD memory register 39 */
DL_LCD_MEMORY_39 = 39,
/*! Index to access LCD memory register 40 */
DL_LCD_MEMORY_40 = 40,
/*! Index to access LCD memory register 41 */
DL_LCD_MEMORY_41 = 41,
/*! Index to access LCD memory register 42 */
DL_LCD_MEMORY_42 = 42,
/*! Index to access LCD memory register 43 */
DL_LCD_MEMORY_43 = 43,
/*! Index to access LCD memory register 44 */
DL_LCD_MEMORY_44 = 44,
/*! Index to access LCD memory register 45 */
DL_LCD_MEMORY_45 = 45,
/*! Index to access LCD memory register 46 */
DL_LCD_MEMORY_46 = 46,
/*! Index to access LCD memory register 47 */
DL_LCD_MEMORY_47 = 47,
/*! Index to access LCD memory register 48 */
DL_LCD_MEMORY_48 = 48,
/*! Index to access LCD memory register 49 */
DL_LCD_MEMORY_49 = 49,
/*! Index to access LCD memory register 50 */
DL_LCD_MEMORY_50 = 50,
/*! Index to access LCD memory register 51 */
DL_LCD_MEMORY_51 = 51,
/*! Index to access LCD memory register 52 */
DL_LCD_MEMORY_52 = 52,
/*! Index to access LCD memory register 53*/
DL_LCD_MEMORY_53 = 53,
/*! Index to access LCD memory register 54 */
DL_LCD_MEMORY_54 = 54,
/*! Index to access LCD memory register 55 */
DL_LCD_MEMORY_55 = 55,
/*! Index to access LCD memory register 56 */
DL_LCD_MEMORY_56 = 56,
/*! Index to access LCD memory register 57 */
DL_LCD_MEMORY_57 = 57,
/*! Index to access LCD memory register 58 */
DL_LCD_MEMORY_58 = 58,
/*! Index to access LCD memory register 59 */
DL_LCD_MEMORY_59 = 59,
/*! Index to access LCD memory register 60 */
DL_LCD_MEMORY_60 = 60,
/*! Index to access LCD memory register 61 */
DL_LCD_MEMORY_61 = 61,
/*! Index to access LCD memory register 62 */
DL_LCD_MEMORY_62 = 62,
/*! Index to access LCD memory register 63 */
DL_LCD_MEMORY_63 = 63,
} DL_LCD_MEMORY;
/*! @enum DL_LCD_BLINKING_MEMORY */
typedef enum {
/*! Index to access LCD blink memory register 0 */
DL_LCD_BLINKING_MEMORY_0 = 0,
/*! Index to access LCD blink memory register 1 */
DL_LCD_BLINKING_MEMORY_1 = 1,
/*! Index to access LCD blink memory register 2 */
DL_LCD_BLINKING_MEMORY_2 = 2,
/*! Index to access LCD blink memory register 3 */
DL_LCD_BLINKING_MEMORY_3 = 3,
/*! Index to access LCD blink memory register 4 */
DL_LCD_BLINKING_MEMORY_4 = 4,
/*! Index to access LCD blink memory register 5 */
DL_LCD_BLINKING_MEMORY_5 = 5,
/*! Index to access LCD blink memory register 6 */
DL_LCD_BLINKING_MEMORY_6 = 6,
/*! Index to access LCD blink memory register 7 */
DL_LCD_BLINKING_MEMORY_7 = 7,
/*! Index to access LCD blink memory register 8 */
DL_LCD_BLINKING_MEMORY_8 = 8,
/*! Index to access LCD blink memory register 9 */
DL_LCD_BLINKING_MEMORY_9 = 9,
/*! Index to access LCD blink memory register 10 */
DL_LCD_BLINKING_MEMORY_10 = 10,
/*! Index to access LCD blink memory register 11 */
DL_LCD_BLINKING_MEMORY_11 = 11,
/*! Index to access LCD blink memory register 12 */
DL_LCD_BLINKING_MEMORY_12 = 12,
/*! Index to access LCD blink memory register 13 */
DL_LCD_BLINKING_MEMORY_13 = 13,
/*! Index to access LCD blink memory register 14 */
DL_LCD_BLINKING_MEMORY_14 = 14,
/*! Index to access LCD blink memory register 15 */
DL_LCD_BLINKING_MEMORY_15 = 15,
/*! Index to access LCD blink memory register 16 */
DL_LCD_BLINKING_MEMORY_16 = 16,
/*! Index to access LCD blink memory register 17 */
DL_LCD_BLINKING_MEMORY_17 = 17,
/*! Index to access LCD blink memory register 18 */
DL_LCD_BLINKING_MEMORY_18 = 18,
/*! Index to access LCD blink memory register 19 */
DL_LCD_BLINKING_MEMORY_19 = 19,
/*! Index to access LCD blink memory register 20 */
DL_LCD_BLINKING_MEMORY_20 = 20,
/*! Index to access LCD blink memory register 21 */
DL_LCD_BLINKING_MEMORY_21 = 21,
/*! Index to access LCD blink memory register 22 */
DL_LCD_BLINKING_MEMORY_22 = 22,
/*! Index to access LCD blink memory register 23 */
DL_LCD_BLINKING_MEMORY_23 = 23,
/*! Index to access LCD blink memory register 24 */
DL_LCD_BLINKING_MEMORY_24 = 24,
/*! Index to access LCD blink memory register 25 */
DL_LCD_BLINKING_MEMORY_25 = 25,
/*! Index to access LCD blink memory register 26 */
DL_LCD_BLINKING_MEMORY_26 = 26,
/*! Index to access LCD blink memory register 27 */
DL_LCD_BLINKING_MEMORY_27 = 27,
/*! Index to access LCD blink memory register 28 */
DL_LCD_BLINKING_MEMORY_28 = 28,
/*! Index to access LCD blink memory register 29 */
DL_LCD_BLINKING_MEMORY_29 = 29,
/*! Index to access LCD blink memory register 30*/
DL_LCD_BLINKING_MEMORY_30 = 30,
/*! Index to access LCD blink memory register 31 */
DL_LCD_BLINKING_MEMORY_31 = 31,
} DL_LCD_BLINKING_MEMORY;
/*! @enum DL_LCD_COM */
typedef enum {
/*! Index to access COM 0 */
DL_LCD_COM_0 = 0x01,
/*! Index to access COM 1 */
DL_LCD_COM_1 = 0x02,
/*! Index to access COM 2 */
DL_LCD_COM_2 = 0x04,
/*! Index to access COM 3 */
DL_LCD_COM_3 = 0x08,
/*! Index to access COM 4 */
DL_LCD_COM_4 = 0x10,
/*! Index to access COM 5 */
DL_LCD_COM_5 = 0x20,
/*! Index to access COM 6 */
DL_LCD_COM_6 = 0x40,
/*! Index to access COM 7 */
DL_LCD_COM_7 = 0x80,
} DL_LCD_COM;
/*! @enum DL_LCD_VREFGEN_CYCLES */
typedef enum {
/*! Turn on VREF generation circuitry for 16 clock cycles */
DL_LCD_VREFGEN_CYCLES_16 = LCD_LCDVREFCFG_ONTIME_ONTIME16,
/*! Turn on VREF generation circuitry for 32 clock cycles */
DL_LCD_VREFGEN_CYCLES_32 = LCD_LCDVREFCFG_ONTIME_ONTIME32,
/*! Turn on VREF generation circuitry for 128 clock cycles */
DL_LCD_VREFGEN_CYCLES_128 = LCD_LCDVREFCFG_ONTIME_ONTIME128,
/*! Turn on VREF generation circuitry for 256 clock cycles */
DL_LCD_VREFGEN_CYCLES_256 = LCD_LCDVREFCFG_ONTIME_ONTIME256,
} DL_LCD_VREFGEN_CYCLES;
/**
* @brief Configuration struct for @ref DL_LCD_init
*/
typedef struct {
/*! The frequency divider to set. One of @ref DL_LCD_FREQ_DIVIDE */
DL_LCD_FREQ_DIVIDE frequencyDivider;
/*! The mux rate. One of @ref DL_LCD_MUX_RATE. */
DL_LCD_MUX_RATE muxRate;
/*! Select waveforms power mode. One of @ref DL_LCD_WAVEFORM_POWERMODE */
DL_LCD_WAVEFORM_POWERMODE lowPowerWaveform;
} DL_LCD_Config;
/**
* @brief Initialize the LCD peripheral
*
* Initializes all the common configurable options for the LCD peripheral. Any
* other custom configuration can be done after calling this API. The LCD is
* not enabled in this API.
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] config Configuration for LCD peripheral
*/
void DL_LCD_init(LCD_Regs *lcd, const DL_LCD_Config *config);
/**
* @brief Enable a pin as LCD function
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] pin Pin to set as LCD function
* One of @ref DL_LCD_SEGMENT_LINE
* @note This function will disable power to the LCD module.
* If needed, enable the module after by calling
* @ref DL_LCD_enable
*/
void DL_LCD_setPinAsLCDFunction(LCD_Regs *lcd, uint32_t pin);
/**
* @brief Enable a pin as port function
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] pin Pin to set as port function.
* One of @ref DL_LCD_SEGMENT_LINE
* @note This function will disable power to the LCD module.
* If needed, enable the module after by calling
* @ref DL_LCD_enable
*/
void DL_LCD_setPinAsPortFunction(LCD_Regs *lcd, uint8_t pin);
/**
* @brief Enable an LCD function pin as COM
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] pin Pin to set as common.
* One of @ref DL_LCD_SEGMENT_LINE
* @param[in] com The selected COM number for the common line.
* One of @ref DL_LCD_COM
*/
void DL_LCD_setPinAsCommon(LCD_Regs *lcd, uint8_t pin, uint32_t com);
/**
* @brief Enable an LCD function pin as Segment
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] pin Pin to set as segment line.
* One of @ref DL_LCD_SEGMENT_LINE
*/
void DL_LCD_setPinAsSegment(LCD_Regs *lcd, uint8_t pin);
/**
* @brief Enables the Peripheral Write Enable (PWREN) register for the LCD
*
* Before any peripheral registers can be configured by software, the
* peripheral itself must be enabled by writing the ENABLE bit together with
* the appropriate KEY value to the peripheral's PWREN register.
*
* @note For power savings, please refer to @ref DL_LCD_enable
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
*/
__STATIC_INLINE void DL_LCD_enablePower(LCD_Regs *lcd)
{
lcd->PWREN |= (LCD_PWREN_KEY_UNLOCK_W | LCD_PWREN_ENABLE_ENABLE);
}
/**
* @brief Disables the Peripheral Write Enable (PWREN) register for the LCD
*
* When the PWREN.ENABLE bit is cleared, the peripheral's registers are not
* accessible for read/write operations.
*
* @note This API does not provide large power savings. For power savings,
* please refer to @ref DL_LCD_enable
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_disablePower(LCD_Regs *lcd)
{
lcd->PWREN = (LCD_PWREN_KEY_UNLOCK_W | LCD_PWREN_ENABLE_DISABLE);
}
/**
* @brief Returns if the Peripheral Write Enable (PWREN) register for the LCD
* is enabled
*
* Before any peripheral registers can be configured by software, the
* peripheral itself must be enabled by writing the ENABLE bit together with
* the appropriate KEY value to the peripheral's PWREN register.
*
* When the PWREN.ENABLE bit is cleared, the peripheral's registers are not
* accessible for read/write operations.
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return If power module on LCD is enabled
*
* @return true if peripheral register access is enabled
* @return false if peripheral register access is disabled
*/
__STATIC_INLINE bool DL_LCD_isPowerEnabled(const LCD_Regs *lcd)
{
return ((lcd->PWREN & LCD_PWREN_ENABLE_MASK) ==
LCD_PWREN_ENABLE_ENABLE);
}
/**
* @brief Resets LCD peripheral
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
*/
__STATIC_INLINE void DL_LCD_reset(LCD_Regs *lcd)
{
lcd->RSTCTL = (LCD_RSTCTL_KEY_UNLOCK_W | LCD_RSTCTL_RESETSTKYCLR_CLR |
LCD_RSTCTL_RESETASSERT_ASSERT);
}
/**
* @brief Checks if LCD peripheral was reset
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return If peripheral was reset
*
* @retval true if peripheral was reset since this bit was last cleared by
* RESETSTKYCLR in the RSTCTL register
* @retval false if peripheral was not reset since the last bit clear
*/
__STATIC_INLINE bool DL_LCD_isReset(const LCD_Regs *lcd)
{
return ((lcd->STAT & LCD_STAT_RESETSTKY_MASK) ==
LCD_STAT_RESETSTKY_RESET);
}
/**
* @brief Get the event line mode
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return event line mode
*
* @retval One of @ref DL_LCD_EVENT_LINE_MODE
*/
__STATIC_INLINE DL_LCD_EVENT_LINE_MODE DL_LCD_getEventLineMode(const LCD_Regs *lcd)
{
uint32_t eventLineMode = (lcd->EVT_MODE & LCD_EVT_MODE_INT0_CFG_MASK);
return (DL_LCD_EVENT_LINE_MODE)(eventLineMode);
}
/**
* @brief Gets the highest priority pending interrupt
*
* Accesses and reads the IIDX register to obtain the highest currently
* pending interrupt. A read clears the corresponding interrupt flag in RIS
* and MIS.
*
* @param[in] lcd pointer to the register overlay of the peripheral
*
* @return The highest priority pending interrupt
*
* @retval One of @ref DL_LCD_IIDX
*/
__STATIC_INLINE DL_LCD_IIDX DL_LCD_getPendingInterrupt(const LCD_Regs *lcd)
{
return ((DL_LCD_IIDX) lcd->INT_EVENT0.IIDX);
}
/**
* @brief Enable LCD interrupts
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] interruptMask Bit mask of interrupts to enable. Bitwise OR of
* @ref DL_LCD_INTERRUPT.
*/
__STATIC_INLINE void DL_LCD_enableInterrupt(
LCD_Regs *lcd, uint32_t interruptMask)
{
lcd->INT_EVENT0.IMASK |= interruptMask;
}
/**
* @brief Disable LCD interrupts
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] interruptMask Bit mask of interrupts to disable. Bitwise OR of
* @ref DL_LCD_INTERRUPT.
*/
__STATIC_INLINE void DL_LCD_disableInterrupt(
LCD_Regs *lcd, uint32_t interruptMask)
{
lcd->INT_EVENT0.IMASK &= ~(interruptMask);
}
/**
* @brief Check which LCD interrupts are enabled
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] interruptMask Bit mask of interrupts to check. Bitwise OR of
* @ref DL_LCD_INTERRUPT.
*
* @return Which of the requested LCD interrupts are enabled
*
* @retval Bitwise OR of @ref DL_LCD_INTERRUPT values
*/
__STATIC_INLINE uint32_t DL_LCD_getEnabledInterrupts(
const LCD_Regs *lcd, uint32_t interruptMask)
{
return (lcd->INT_EVENT0.IMASK & interruptMask);
}
/**
* @brief Check interrupt flag of any LCD interrupt
*
* Checks if any of the LCD interrupts are pending. Interrupts do not have to
* be previously enabled.
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] interruptMask Bit mask of interrupts to check. Bitwise OR of
* @ref DL_LCD_INTERRUPT.
*
* @return Which of the requested LCD interrupts are pending
*
* @retval Bitwise OR of @ref DL_LCD_INTERRUPT values
*/
__STATIC_INLINE uint32_t DL_LCD_getRawInterruptStatus(
const LCD_Regs *lcd, uint32_t interruptMask)
{
return (lcd->INT_EVENT0.RIS & interruptMask);
}
/**
* @brief Check interrupt flag of enabled LCD interrupts
*
* Checks if any of the LCD interrupts that were previously enabled are
* pending.
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] interruptMask Bit mask of interrupts to check. Bitwise OR of
* @ref DL_LCD_INTERRUPT.
*
* @return Which of the requested LCD interrupts are pending
*
* @retval Bitwise OR of @ref DL_LCD_INTERRUPT values
*
* @sa DL_LCD_enableInterrupt
*/
__STATIC_INLINE uint32_t DL_LCD_getEnabledInterruptStatus(
const LCD_Regs *lcd, uint32_t interruptMask)
{
return (lcd->INT_EVENT0.MIS & interruptMask);
}
/**
* @brief Set LCD interrupts
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] interruptMask Bit mask of interrupts to set. Bitwise OR of
* @ref DL_LCD_INTERRUPT.
*/
__STATIC_INLINE void DL_LCD_setInterrupts(
LCD_Regs *lcd, uint32_t interruptMask)
{
lcd->INT_EVENT0.ISET = interruptMask;
}
/**
* @brief Clear pending LCD interrupts
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] interruptMask Bit mask of interrupts to clear. Bitwise OR of
* @ref DL_LCD_INTERRUPT.
*/
__STATIC_INLINE void DL_LCD_clearInterruptStatus(
LCD_Regs *lcd, uint32_t interruptMask)
{
lcd->INT_EVENT0.ICLR = interruptMask;
}
/**
* @brief Enable external synchronization
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_enableExternalSync(LCD_Regs *lcd)
{
lcd->LCDCTL0 |= LCD_LCDCTL0_LCDSYNCEXT_LCD_EXT_SYNC_ON;
}
/**
* @brief Disable external synchronization
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_disableExternalSync(LCD_Regs *lcd)
{
lcd->LCDCTL0 &= ~(LCD_LCDCTL0_LCDSYNCEXT_MASK);
}
/**
* @brief Checks if external synchronization is enabled
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return If external synchronization is enabled
*
* @retval true if external synchronization enabled
* @retval false if external synchronization is disabled
*/
__STATIC_INLINE bool DL_LCD_isExternalSyncEnabled(const LCD_Regs *lcd)
{
return ((lcd->LCDCTL0 & LCD_LCDCTL0_LCDSYNCEXT_MASK) ==
LCD_LCDCTL0_LCDSYNCEXT_LCD_EXT_SYNC_ON);
}
/**
* @brief Set the LCD frequency divider.
*
* fLCD = fSOURCE / ((LCDDIVx + 1) × Value[LCDMXx])
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] fDiv The frequency divider to set.
* One of @ref DL_LCD_FREQ_DIVIDE
*
* @pre The LCD module must be off (LCDCTL0.LCDON == 0) before setting
* this configuration.
*/
__STATIC_INLINE void DL_LCD_setFreqDiv(
LCD_Regs *lcd, DL_LCD_FREQ_DIVIDE fDiv)
{
DL_Common_updateReg(
&lcd->LCDCTL0, (uint32_t) fDiv, LCD_LCDCTL0_LCDDIVX_MASK);
}
/**
* @brief Get the LCD frequency divider
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The current frequency divider
*
* @retval One of @ref DL_LCD_FREQ_DIVIDE
*/
__STATIC_INLINE DL_LCD_FREQ_DIVIDE DL_LCD_getFreqDiv(const LCD_Regs *lcd)
{
uint32_t fDiv = (lcd->LCDCTL0 & LCD_LCDCTL0_LCDDIVX_MASK);
return (DL_LCD_FREQ_DIVIDE)(fDiv);
}
/**
* @brief Set the LCD mux rate
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] muxRate The mux rate to set. One of @ref DL_LCD_MUX_RATE
*
*
* @pre The LCD module must be off (LCDCTL0.LCDON == 0) before setting
* this configuration. The LCD module can be disabled by calling
* DL_LCD_disableModule.
*
*/
__STATIC_INLINE void DL_LCD_setMuxRate(
LCD_Regs *lcd, DL_LCD_MUX_RATE muxRate)
{
DL_Common_updateReg(
&lcd->LCDCTL0, (uint32_t) muxRate, LCD_LCDCTL0_LCDMXX_MASK);
}
/**
* @brief Get the LCD mux rate
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The mux rate
*
* @retval One of @ref DL_LCD_MUX_RATE
*/
__STATIC_INLINE DL_LCD_MUX_RATE DL_LCD_getMuxRate(const LCD_Regs *lcd)
{
uint32_t muxRate = (lcd->LCDCTL0 & LCD_LCDCTL0_LCDMXX_MASK);
return (DL_LCD_MUX_RATE)(muxRate);
}
/**
* @brief Turns LCD segments on
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_turnSegmentsOn(LCD_Regs *lcd)
{
lcd->LCDCTL0 |= LCD_LCDCTL0_LCDSON_LCD_SEG_ON;
}
/**
* @brief Turns LCD segments off
*
* Can be used to flash LCD applications by turning off segment lines
* and leaving LCD timing generator and R33 enabled.
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_turnSegmentsOff(LCD_Regs *lcd)
{
lcd->LCDCTL0 &= ~(LCD_LCDCTL0_LCDSON_MASK);
}
/**
* @brief Set the waveform power mode
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] waveformPowerMode The power mode for LCD waveforms.
* One of @ref DL_LCD_WAVEFORM_POWERMODE
*
* @pre The LCD module must be in 1/3 bias mode (LCDBIASSEL == 0)
* before setting this configuration.
*/
__STATIC_INLINE void DL_LCD_setWaveformPowerMode(
LCD_Regs *lcd, DL_LCD_WAVEFORM_POWERMODE waveformPowerMode)
{
DL_Common_updateReg(
&lcd->LCDCTL0, (uint32_t) waveformPowerMode, LCD_LCDCTL0_LCDLP_MASK);
}
/**
* @brief Get the waveform power mode
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The waveform power mode
*
* @retval One of @ref DL_LCD_WAVEFORM_POWERMODE
*/
__STATIC_INLINE DL_LCD_WAVEFORM_POWERMODE DL_LCD_getWaveformPowerMode(
const LCD_Regs *lcd)
{
uint32_t waveformPowerMode = (lcd->LCDCTL0 & LCD_LCDCTL0_LCDLP_MASK);
return (DL_LCD_WAVEFORM_POWERMODE)(waveformPowerMode);
}
/**
* @brief Enables the LCD module
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_enable(LCD_Regs *lcd)
{
lcd->LCDCTL0 |= LCD_LCDCTL0_LCDON_LCD_MOD_ENABLE;
}
/**
* @brief Disables the LCD module
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_disable(LCD_Regs *lcd)
{
lcd->LCDCTL0 &= ~(LCD_LCDCTL0_LCDON_MASK);
}
/**
* @brief Set the blinking frequency divider and blinking mode
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] blinkFreqDiv The blinking frequency divider to set.
* One of @ref DL_LCD_BLINKING_DIVIDE
* @param[in] blinkMode The blinking mode to select.
* One of @ref DL_LCD_BLINKING_MODE
*/
__STATIC_INLINE void DL_LCD_setBlinkingControl(
LCD_Regs *lcd, DL_LCD_BLINKING_DIVIDE blinkFreqDiv,
DL_LCD_BLINKING_MODE blinkMode)
{
DL_Common_updateReg(&lcd->LCDBLKCTL, (uint32_t) blinkFreqDiv |
(uint32_t) blinkMode, LCD_LCDBLKCTL_LCDBLKPREX_MASK |
LCD_LCDBLKCTL_LCDBLKMODX_MASK);
}
/**
* @brief Get the blinking frequency divider
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The current blinking frequency divider
*
* @retval One of @ref DL_LCD_BLINKING_DIVIDE
*/
__STATIC_INLINE DL_LCD_BLINKING_DIVIDE DL_LCD_getBlinkingFreqDiv(const LCD_Regs *lcd)
{
uint32_t blinkFreqDiv = (lcd->LCDBLKCTL & LCD_LCDBLKCTL_LCDBLKPREX_MASK);
return (DL_LCD_BLINKING_DIVIDE)(blinkFreqDiv);
}
/**
* @brief Get the blinking mode
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The current blinking mode
*
* @retval One of @ref DL_LCD_BLINKING_MODE
*/
__STATIC_INLINE DL_LCD_BLINKING_MODE DL_LCD_getBlinkingMode(const LCD_Regs *lcd)
{
uint32_t blinkMode = (lcd->LCDBLKCTL & LCD_LCDBLKCTL_LCDBLKMODX_MASK);
return (DL_LCD_BLINKING_MODE)(blinkMode);
}
/**
* @brief Clear LCD blinking memory
*
* Clears all blinking memory registers LCDBMx.
* The bit is automatically reset when blinking memory cleared.
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_clearAllBlinkingMemoryRegs(LCD_Regs *lcd)
{
DL_Common_updateReg(&lcd->LCDMEMCTL,
LCD_LCDMEMCTL_LCDCLRBM_CLR_BLNK_MEM_REGS, LCD_LCDMEMCTL_LCDCLRBM_MASK);
}
/**
* @brief Clear LCD memory
*
* Clears all memory registers LCDMx.
* The bit is automatically reset when LCD memory cleared.
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_clearAllMemoryRegs(LCD_Regs *lcd)
{
DL_Common_updateReg(&lcd->LCDMEMCTL, LCD_LCDMEMCTL_LCDCLRM_CLR_LCD_MEM_REGS,
LCD_LCDMEMCTL_LCDCLRM_MASK);
}
/**
* @brief Select LCD memory registers for display
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] dispSel The memory registers to select. One of @ref DL_LCD_DISP
*
* @pre LCDDISP can only be set by software when LCDBLKMODx is disabled.
* Bit cleared/cannot be changed by software when
* LCDBLKMODx == DL_LCD_BLINKING_MODE_INDIVIDUAL_SEGMENTS,
* DL_LCD_BLINKING_MODE_ALL_SEGMENTS or if a mux mode = 5 selected.
*/
__STATIC_INLINE void DL_LCD_selectMemRegsForDisplay(
LCD_Regs *lcd, DL_LCD_DISP dispSel)
{
DL_Common_updateReg(&lcd->LCDMEMCTL, (uint32_t) dispSel,
LCD_LCDMEMCTL_LCDDISP_MASK);
}
/**
* @brief Get the LCD memory registers selected for display
*
* When LCDBLKMODx = DL_LCD_BLINKING_MODE_TOGGLE, this bit reflects the
* currently displayed memory but cannot be changed by software.
* When returning to LCDBLKMODx is disabled, bit is cleared.
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return LCD memory registers selected for display
*
* @retval One of @ref DL_LCD_DISP
*/
__STATIC_INLINE DL_LCD_DISP DL_LCD_getSelectedMemRegsForDisplay(const LCD_Regs *lcd)
{
uint32_t dispSel = (lcd->LCDMEMCTL & LCD_LCDMEMCTL_LCDDISP_MASK);
return (DL_LCD_DISP)(dispSel);
}
/**
* @brief Enables VBOOST on LCD module
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_enableVBOOST(LCD_Regs *lcd)
{
lcd->LCDVCTL |= LCD_LCDVCTL_LCDVBSTEN_ENABLE;
}
/**
* @brief Disables VBOOST on LCD module
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_disableVBOOST(LCD_Regs *lcd)
{
lcd->LCDVCTL &= ~(LCD_LCDVCTL_LCDVBSTEN_MASK);
}
/**
* @brief Set charge pump frequency
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] chargePumpFreq The charge pump frequency to select.
* One of @ref DL_LCD_CHARGE_PUMP_FREQUENCY
*
*/
__STATIC_INLINE void DL_LCD_setChargePumpFreq(
LCD_Regs *lcd, DL_LCD_CHARGE_PUMP_FREQUENCY chargePumpFreq)
{
DL_Common_updateReg(&lcd->LCDVCTL, (uint32_t) chargePumpFreq,
LCD_LCDVCTL_LCDCPFSELX_MASK);
}
/**
* @brief Get the charge pump frequency
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The current charge pump frequency
*
* @retval One of @ref DL_LCD_CHARGE_PUMP_FREQUENCY
*/
__STATIC_INLINE DL_LCD_CHARGE_PUMP_FREQUENCY DL_LCD_getChargePumpFreq(
const LCD_Regs *lcd)
{
uint32_t chargePumpFreq = (lcd->LCDVCTL & LCD_LCDVCTL_LCDCPFSELX_MASK);
return (DL_LCD_CHARGE_PUMP_FREQUENCY)(chargePumpFreq);
}
/**
* @brief Set internal reference voltage
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] vrefInternal The internal reference voltage to select.
* One of @ref DL_LCD_VREF_INTERNAL
*
*/
__STATIC_INLINE void DL_LCD_setVREFInternal(
LCD_Regs *lcd, DL_LCD_VREF_INTERNAL vrefInternal)
{
DL_Common_updateReg(&lcd->LCDVCTL, (uint32_t) vrefInternal,
LCD_LCDVCTL_VLCDX_MASK);
}
/**
* @brief Get the internal reference voltage
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The current internal reference voltage
*
* @retval One of @ref DL_LCD_VREF_INTERNAL
*/
__STATIC_INLINE DL_LCD_VREF_INTERNAL DL_LCD_getVREFInternal(const LCD_Regs *lcd)
{
uint32_t vrefInternal = (lcd->LCDVCTL & LCD_LCDVCTL_VLCDX_MASK);
return (DL_LCD_VREF_INTERNAL)(vrefInternal);
}
/**
* @brief Enables charge pump
*
* @param lcd Pointer to the register overlay for the peripheral
*
* @pre VLCD must be generated internally (VLCDEXT = 0) and VLCD > 0 or
* VLCDREFx > 0 in order to use this configuration.
*/
__STATIC_INLINE void DL_LCD_enableChargePump(LCD_Regs *lcd)
{
lcd->LCDVCTL |= LCD_LCDVCTL_LCDCPEN_CP_ENABLE;
}
/**
* @brief Disables charge pump
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_disableChargePump(LCD_Regs *lcd)
{
lcd->LCDVCTL &= ~(LCD_LCDVCTL_LCDCPEN_MASK);
}
/**
* @brief Enables internal reference voltage
*
* @param lcd Pointer to the register overlay for the peripheral
*
*/
__STATIC_INLINE void DL_LCD_enableVREFInternal(LCD_Regs *lcd)
{
lcd->LCDVCTL |= LCD_LCDVCTL_LCDREFEN_INT_REF_ENABLE;
}
/**
* @brief Disables internal reference voltage
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_disableVREFInternal(LCD_Regs *lcd)
{
lcd->LCDVCTL &= ~(LCD_LCDVCTL_LCDREFEN_MASK);
}
/**
* @brief Set source for R33
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] r33Source The internal reference voltage to select.
* One of @ref DL_LCD_R33_SOURCE
*
*/
__STATIC_INLINE void DL_LCD_setR33source(
LCD_Regs *lcd, DL_LCD_R33_SOURCE r33Source)
{
DL_Common_updateReg(&lcd->LCDVCTL, (uint32_t) r33Source,
LCD_LCDVCTL_LCDSELVDD_MASK);
}
/**
* @brief Get the source for R33
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The current source for R33
*
* @retval One of @ref DL_LCD_R33_SOURCE
*/
__STATIC_INLINE DL_LCD_R33_SOURCE DL_LCD_getR33Source(const LCD_Regs *lcd)
{
uint32_t r33Source = (lcd->LCDVCTL & LCD_LCDVCTL_LCDSELVDD_MASK);
return (DL_LCD_R33_SOURCE)(r33Source);
}
/**
* @brief Select internal bias power mode
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] powerMode The power mode to use for generating bias voltage
* for LCD. One of @ref DL_LCD_POWER_MODE
*
* @pre The user must first enable the internal bias voltage resistor
* divider by calling @ref DL_LCD_enableInternalBias
*/
__STATIC_INLINE void DL_LCD_setInternalBiasPowerMode(
LCD_Regs *lcd, DL_LCD_POWER_MODE powerMode)
{
DL_Common_updateReg(&lcd->LCDVCTL, (uint32_t) powerMode,
LCD_LCDVCTL_LCD_HP_LP_MASK);
}
/**
* @brief Get power mode
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The power mode
*
* @retval One of @ref DL_LCD_POWER_MODE
*/
__STATIC_INLINE DL_LCD_POWER_MODE DL_LCD_getPowerMode(const LCD_Regs *lcd)
{
uint32_t powerMode = (lcd->LCDVCTL & LCD_LCDVCTL_LCDSELVDD_MASK);
return (DL_LCD_POWER_MODE)(powerMode);
}
/**
* @brief Set bias voltage source
*
* @param[in] lcd Pointer to the register overlay for the
* peripheral
* @param[in] biasVoltageSource The bias voltage source.
* One of @ref DL_LCD_BIAS_VOLTAGE_SOURCE
*
* @pre The user must first enable the internal bias voltage resistor
divider by calling @ref DL_LCD_enableInternalBias
*/
__STATIC_INLINE void DL_LCD_setBiasVoltageSource(
LCD_Regs *lcd, DL_LCD_BIAS_VOLTAGE_SOURCE biasVoltageSource)
{
DL_Common_updateReg(&lcd->LCDVCTL, (uint32_t) biasVoltageSource,
LCD_LCDVCTL_VLCDSEL_VDD_R33_MASK);
}
/**
* @brief Get bias voltage source
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The bias voltage source
*
* @retval One of @ref DL_LCD_BIAS_VOLTAGE_SOURCE
*/
__STATIC_INLINE DL_LCD_BIAS_VOLTAGE_SOURCE DL_LCD_getBiasVoltageSource(
const LCD_Regs *lcd)
{
uint32_t biasVoltageSource = (
lcd->LCDVCTL & LCD_LCDVCTL_VLCDSEL_VDD_R33_MASK);
return (DL_LCD_BIAS_VOLTAGE_SOURCE)(biasVoltageSource);
}
/**
* @brief Enables internal bias voltage resistor divider
*
* @param lcd Pointer to the register overlay for the peripheral
*
*/
__STATIC_INLINE void DL_LCD_enableInternalBias(LCD_Regs *lcd)
{
lcd->LCDVCTL |= LCD_LCDVCTL_LCDINTBIASEN_INT_BIAS_ENABLE;
}
/**
* @brief Disables internal bias voltage resistor divider
*
* @param lcd Pointer to the register overlay for the peripheral
*/
__STATIC_INLINE void DL_LCD_disableInternalBias(LCD_Regs *lcd)
{
lcd->LCDVCTL &= ~(LCD_LCDVCTL_LCDINTBIASEN_MASK);
}
/**
* @brief Select LCD bias
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] biasSel The bias. One of @ref DL_LCD_BIAS
*
* @note This bit (LCDBIASSEL) is ignored in static mode and for 2-mux,
* 3-mux, and 4-mux LCD modes
*/
__STATIC_INLINE void DL_LCD_setBias(
LCD_Regs *lcd, DL_LCD_BIAS biasSel)
{
DL_Common_updateReg(
&lcd->LCDVCTL, (uint32_t) biasSel, LCD_LCDVCTL_LCDBIASSEL_MASK);
}
/**
* @brief Get bias for LCD
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The bias for the LCD
*
* @retval One of @ref DL_LCD_BIAS
*/
__STATIC_INLINE DL_LCD_BIAS DL_LCD_getBias(const LCD_Regs *lcd)
{
uint32_t biasSel = (lcd->LCDVCTL & LCD_LCDVCTL_LCDBIASSEL_MASK);
return (DL_LCD_BIAS)(biasSel);
}
/**
* @brief Set reference mode for R13 voltage
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] refMode Ref mode. One of @ref DL_LCD_REFERENCE_MODE
*
*/
__STATIC_INLINE void DL_LCD_setRefMode(
LCD_Regs *lcd, DL_LCD_REFERENCE_MODE refMode)
{
DL_Common_updateReg(
&lcd->LCDVCTL, (uint32_t) refMode, LCD_LCDVCTL_LCDREFMODE_MASK);
}
/**
* @brief Get reference mode for R13 voltage
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return Voltage reference mode
*
* @retval One of @ref DL_LCD_REFERENCE_MODE
*/
__STATIC_INLINE DL_LCD_REFERENCE_MODE DL_LCD_getRefMode(const LCD_Regs *lcd)
{
uint32_t refMode = (lcd->LCDVCTL & LCD_LCDVCTL_LCDREFMODE_MASK);
return (DL_LCD_REFERENCE_MODE)(refMode);
}
/**
* @brief Write to bits in LCD memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_MEMORY.
* @param[in] mask Registers to set in LCDMx register.
* Bitwise OR of @ref DL_LCD_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_writeMemory(
LCD_Regs *lcd, DL_LCD_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDM[(uint32_t) memIndex] = mask;
}
/**
* @brief Set bits in LCD memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_MEMORY.
* @param[in] mask Registers to set in LCDMx register.
* Bitwise OR of @ref DL_LCD_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_setMemory(
LCD_Regs *lcd, DL_LCD_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDM[(uint32_t) memIndex] |= mask;
}
/**
* @brief Toggle bits in LCD memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_MEMORY.
* @param[in] mask Registers to set in LCDMx register.
* Bitwise OR of @ref DL_LCD_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_toggleMemory(
LCD_Regs *lcd, DL_LCD_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDM[(uint32_t) memIndex] ^= mask;
}
/**
* @brief Clear bits in LCD memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_MEMORY.
* @param[in] mask Registers to set in LCDMx register.
* Bitwise OR of @ref DL_LCD_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_clearMemory(
LCD_Regs *lcd, DL_LCD_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDM[(uint32_t) memIndex] &= ~(mask);
}
/**
* @brief Get bits in LCD memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to read from.
*
* @retval 32 bit value of register
*
* @sa DL_LCD_MEMORY_BIT
*/
__STATIC_INLINE uint32_t DL_LCD_getMemory(
const LCD_Regs *lcd, DL_LCD_MEMORY memIndex)
{
return lcd -> LCDM[(uint32_t) memIndex];
}
/**
* @brief Write to bits in LCD blinking memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_BLINKING_MEMORY.
* @param[in] mask Registers to set in LCDBMx register.
* Bitwise OR of @ref DL_LCD_BLINK_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_writeBlinkingMemory(
LCD_Regs *lcd, DL_LCD_BLINKING_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDBM[(uint32_t) memIndex] = mask;
}
/**
* @brief Set bits in LCD blinking memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_BLINKING_MEMORY.
* @param[in] mask Registers to set in LCDBMx register.
* Bitwise OR of @ref DL_LCD_BLINK_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_setBlinkingMemory(
LCD_Regs *lcd, DL_LCD_BLINKING_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDBM[(uint32_t) memIndex] |= mask;
}
/**
* @brief Toggle bits in LCD blinking memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_BLINKING_MEMORY.
* @param[in] mask Registers to set in LCDBMx register.
* Bitwise OR of @ref DL_LCD_BLINK_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_toggleBlinkingMemory(
LCD_Regs *lcd, DL_LCD_BLINKING_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDBM[(uint32_t) memIndex] ^= mask;
}
/**
* @brief Clear bits in LCD blinking memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to write to.
* One of @ref DL_LCD_BLINKING_MEMORY.
* @param[in] mask Registers to set in LCDBMx register.
* Bitwise OR of @ref DL_LCD_BLINK_MEMORY_BIT.
*/
__STATIC_INLINE void DL_LCD_clearBlinkingMemory(
LCD_Regs *lcd, DL_LCD_BLINKING_MEMORY memIndex, uint32_t mask)
{
lcd -> LCDBM[(uint32_t) memIndex] &= ~(mask);
}
/**
* @brief Get bits in LCD blinking memory index register
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] memIndex Index of LCDMx register to read from.
*
* @retval 32 bit value of register
*
* @sa DL_LCD_BLINK_MEMORY_BIT
*/
__STATIC_INLINE uint32_t DL_LCD_getBlinkingMemory(
const LCD_Regs *lcd, DL_LCD_BLINKING_MEMORY memIndex)
{
return lcd -> LCDBM[(uint32_t) memIndex];
}
/**
* @brief Set number of cycles to enable voltage generation circuitry
*
* @param[in] lcd Pointer to the register overlay for the peripheral
* @param[in] cycles The number of cycles to enable voltage generation circuitry.
* One of @ref DL_LCD_VREFGEN_CYCLES.
*/
__STATIC_INLINE void DL_LCD_setVrefOnTimeCycles(
LCD_Regs *lcd, DL_LCD_VREFGEN_CYCLES cycles)
{
DL_Common_updateReg(&lcd->LCDVREFCFG, (uint32_t) cycles,
LCD_LCDVREFCFG_ONTIME_MASK);
}
/**
* @brief Get the number of cycles set to enable voltage generation circuitry
*
* @param[in] lcd Pointer to the register overlay for the peripheral
*
* @return The number of cycles
*
* @retval One of @ref DL_LCD_VREFGEN_CYCLES
*/
__STATIC_INLINE DL_LCD_VREFGEN_CYCLES DL_LCD_getVrefOnTimeCycles(const LCD_Regs *lcd)
{
uint32_t cycles = (lcd->LCDVREFCFG & LCD_LCDVREFCFG_ONTIME_MASK);
return (DL_LCD_VREFGEN_CYCLES)(cycles);
}
#ifdef __cplusplus
}
#endif
#endif /* __MSPM0_HAS_LCD__ */
#endif /* ti_dl_dl_lcd__include */
/** @}*/