735 lines
33 KiB
C
735 lines
33 KiB
C
/************************************************************************************************/
|
||
/**
|
||
* @file ciu32l051_std_lcd.h
|
||
* @author MCU Ecosystem Development Team
|
||
* @brief LCD STD库驱动头文件。
|
||
* 提供LCD 相关的STD库操作函数声明、数据类型以及常量的定义。
|
||
*
|
||
*
|
||
**************************************************************************************************
|
||
* @attention
|
||
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
||
*
|
||
**************************************************************************************************
|
||
*/
|
||
|
||
/* 避免头文件重复引用 */
|
||
#ifndef CIU32L051_STD_LCD_H
|
||
#define CIU32L051_STD_LCD_H
|
||
|
||
/************************************************************************************************/
|
||
/**
|
||
* @addtogroup CIU32L051_STD_Driver
|
||
* @{
|
||
*/
|
||
|
||
/**
|
||
* @defgroup LCD LCD
|
||
* @brief 液晶显示控制器的STD库驱动
|
||
* @{
|
||
*/
|
||
/************************************************************************************************/
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/*------------------------------------------includes--------------------------------------------*/
|
||
#include "ciu32l051_std_common.h"
|
||
|
||
/*-----------------------------------------type define------------------------------------------*/
|
||
/************************************************************************************************/
|
||
/**
|
||
* @defgroup LCD_Types LCD Types
|
||
* @brief LCD 数据类型定义
|
||
* @{
|
||
*
|
||
*/
|
||
/************************************************************************************************/
|
||
/**
|
||
* @brief LCD 初始化结构体定义
|
||
*/
|
||
typedef struct
|
||
{
|
||
uint32_t bias; /**< 偏置电压的设置
|
||
@arg LCD_BIAS_1_3... */
|
||
uint32_t duty; /**< 占空比的设置
|
||
@arg LCD_DUTY_1_4... */
|
||
uint32_t prescaler; /**< 时钟源预分频器的设置
|
||
@arg LCD_PRESCALER_1... */
|
||
uint32_t divider; /**< 时钟源分频器的设置
|
||
@arg LCD_DIVIDER_16... */
|
||
uint32_t driver_mode; /**< 驱动模式配置
|
||
@arg LCD_DRIVER_MODE_CHARGE_PUMP... */
|
||
uint32_t vlcd_voltage; /**< VLCD输出电压配置
|
||
@arg LCD_INNER_RESISTER_1_000_VDD...
|
||
@arg LCD_CHAGE_PUMP_1_3_BIAS_2_55V...
|
||
@arg LCD_CHAGE_PUMP_1_4_BIAS_2_60V...*/
|
||
uint32_t high_drive; /**< 驱动能力的设置
|
||
@arg LCD_HIGH_DRIVE... */
|
||
uint32_t pulse_on_duration; /**< 脉冲持续时间
|
||
@arg LCD_PULSE_ON_DURATION_0... */
|
||
uint32_t mux_segment; /**< 区段多路复用的使能
|
||
@arg LCD_MUX_SEGMENT_ENABLE...
|
||
@note 1/6 和 1/4duty需使能区段多路复用,
|
||
1/8duty为无关项 */
|
||
}std_lcd_init_t;
|
||
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/*--------------------------------------------define--------------------------------------------*/
|
||
/************************************************************************************************/
|
||
/**
|
||
* @defgroup LCD_Constants LCD Constants
|
||
* @brief LCD 常量定义及宏定义
|
||
* @{
|
||
*/
|
||
/************************************************************************************************/
|
||
|
||
/* LCD驱动模式 */
|
||
#define LCD_DRIVER_MODE_CHARGE_PUMP LCD_CR_MDSET_CHARGE_PUMP /**< 电荷泵模式 */
|
||
#define LCD_DRIVER_MODE_INNER_RESISTER LCD_CR_MDSET_INNER_RES /**< 片内电阻分压模式 */
|
||
#define LCD_DRIVER_MODE_OUTER_CAPACITY LCD_CR_MDSET_OUTER_CAP /**< 片外电容分压模式 */
|
||
|
||
/* LCD电荷泵和片外电容分压模式时钟分频 */
|
||
#define LCD_CPCLK_DIV1 LCD_CR_CPDIV_DIV1 /**< 不分频 */
|
||
#define LCD_CPCLK_DIV2 LCD_CR_CPDIV_DIV2 /**< 2分频 */
|
||
#define LCD_CPCLK_DIV4 LCD_CR_CPDIV_DIV4 /**< 4分频 */
|
||
#define LCD_CPCLK_DIV8 LCD_CR_CPDIV_DIV8 /**< 8分频 */
|
||
#define LCD_CPCLK_DIV16 LCD_CR_CPDIV_DIV16 /**< 16分频 */
|
||
#define LCD_CPCLK_DIV32 LCD_CR_CPDIV_DIV32 /**< 32分频 */
|
||
#define LCD_CPCLK_DIV64 LCD_CR_CPDIV_DIV64 /**< 64分频 */
|
||
#define LCD_CPCLK_DIV128 LCD_CR_CPDIV_DIV128 /**< 128分频 */
|
||
|
||
/* LCD外设区段多路复用 */
|
||
#define LCD_MUX_SEGMENT_DISABLE (0x00000000U) /**< SEG 区段多路复用禁止 */
|
||
#define LCD_MUX_SEGMENT_ENABLE LCD_CR_MUX_SEG /**< SEG 区段多路复用使能 */
|
||
|
||
/* LCD外设偏置 */
|
||
#define LCD_BIAS_1_3 LCD_CR_BIAS_1_3 /**< 1/3 偏置电压 */
|
||
#define LCD_BIAS_1_4 LCD_CR_BIAS_1_4 /**< 1/4 偏置电压 */
|
||
|
||
/* LCD外设占空比 */
|
||
#define LCD_DUTY_1_4 LCD_CR_DUTY_1_4 /**< 1/4 占空比 */
|
||
#define LCD_DUTY_1_6 LCD_CR_DUTY_1_6 /**< 1/6 占空比 */
|
||
#define LCD_DUTY_1_8 LCD_CR_DUTY_1_8 /**< 1/8 占空比 */
|
||
|
||
/* 外设时钟源预分频器 */
|
||
#define LCD_PRESCALER_1 LCD_FCR_PS_1 /**< ck_ps = LCDCLK */
|
||
#define LCD_PRESCALER_2 LCD_FCR_PS_2 /**< ck_ps = LCDCLK/2 */
|
||
#define LCD_PRESCALER_4 LCD_FCR_PS_4 /**< ck_ps = LCDCLK/4 */
|
||
#define LCD_PRESCALER_8 LCD_FCR_PS_8 /**< ck_ps = LCDCLK/8 */
|
||
#define LCD_PRESCALER_16 LCD_FCR_PS_16 /**< ck_ps = LCDCLK/16 */
|
||
#define LCD_PRESCALER_32 LCD_FCR_PS_32 /**< ck_ps = LCDCLK/32 */
|
||
#define LCD_PRESCALER_64 LCD_FCR_PS_64 /**< ck_ps = LCDCLK/64 */
|
||
#define LCD_PRESCALER_128 LCD_FCR_PS_128 /**< ck_ps = LCDCLK/128 */
|
||
|
||
/* LCD外设时钟源分频器 */
|
||
#define LCD_DIVIDER_16 LCD_FCR_DIV16 /**< ck_div = CLKPS/16 */
|
||
#define LCD_DIVIDER_17 LCD_FCR_DIV17 /**< ck_div = CLKPS/17 */
|
||
#define LCD_DIVIDER_18 LCD_FCR_DIV18 /**< ck_div = CLKPS/18 */
|
||
#define LCD_DIVIDER_19 LCD_FCR_DIV19 /**< ck_div = CLKPS/19 */
|
||
#define LCD_DIVIDER_20 LCD_FCR_DIV20 /**< ck_div = CLKPS/20 */
|
||
#define LCD_DIVIDER_21 LCD_FCR_DIV21 /**< ck_div = CLKPS/21 */
|
||
#define LCD_DIVIDER_22 LCD_FCR_DIV22 /**< ck_div = CLKPS/22 */
|
||
#define LCD_DIVIDER_23 LCD_FCR_DIV23 /**< ck_div = CLKPS/23 */
|
||
#define LCD_DIVIDER_24 LCD_FCR_DIV24 /**< ck_div = CLKPS/24 */
|
||
#define LCD_DIVIDER_25 LCD_FCR_DIV25 /**< ck_div = CLKPS/25 */
|
||
#define LCD_DIVIDER_26 LCD_FCR_DIV26 /**< ck_div = CLKPS/26 */
|
||
#define LCD_DIVIDER_27 LCD_FCR_DIV27 /**< ck_div = CLKPS/27 */
|
||
#define LCD_DIVIDER_28 LCD_FCR_DIV28 /**< ck_div = CLKPS/28 */
|
||
#define LCD_DIVIDER_29 LCD_FCR_DIV29 /**< ck_div = CLKPS/29 */
|
||
#define LCD_DIVIDER_30 LCD_FCR_DIV30 /**< ck_div = CLKPS/30 */
|
||
#define LCD_DIVIDER_31 LCD_FCR_DIV31 /**< ck_div = CLKPS/31 */
|
||
|
||
/* LCD外设闪烁模式 */
|
||
#define LCD_BLINK_MODE_OFF LCD_FCR_MODE_OFF /**< 禁止闪烁 */
|
||
#define LCD_BLINK_MODE_SEG0_COM0 LCD_FCR_MODE_SEG0_COM0 /**< 在SEG[0], COM[0] 使能闪烁(1个像素) */
|
||
#define LCD_BLINK_MODE_SEG0_ALLCOM LCD_FCR_MODE_SEG0_ALLCOM /**< 在SEG[0],所有COM 使能闪烁(最多8个像素,取决于占空比) */
|
||
#define LCD_BLINK_MODE_ALLSEG_ALLCOM LCD_FCR_MODE_ALLSEG_ALLCOM /**< 在所有SEG,所有COM 使能闪烁(所有像素) */
|
||
|
||
/* LCD外设闪烁频率 */
|
||
#define LCD_BLINK_FREQUENCY_DIV8 LCD_FCR_BLINKF_DIV8 /**< 闪烁频率 F = ck_div/8 */
|
||
#define LCD_BLINK_FREQUENCY_DIV16 LCD_FCR_BLINKF_DIV16 /**< 闪烁频率 F = ck_div/16 */
|
||
#define LCD_BLINK_FREQUENCY_DIV32 LCD_FCR_BLINKF_DIV32 /**< 闪烁频率 F = ck_div/32 */
|
||
#define LCD_BLINK_FREQUENCY_DIV64 LCD_FCR_BLINKF_DIV64 /**< 闪烁频率 F = ck_div/64 */
|
||
#define LCD_BLINK_FREQUENCY_DIV128 LCD_FCR_BLINKF_DIV128 /**< 闪烁频率 F = ck_div/128 */
|
||
#define LCD_BLINK_FREQUENCY_DIV256 LCD_FCR_BLINKF_DIV256 /**< 闪烁频率 F = ck_div/256 */
|
||
#define LCD_BLINK_FREQUENCY_DIV512 LCD_FCR_BLINKF_DIV512 /**< 闪烁频率 F = ck_div/512 */
|
||
#define LCD_BLINK_FREQUENCY_DIV1024 LCD_FCR_BLINKF_DIV1024 /**< 闪烁频率 F = ck_div/1024 */
|
||
|
||
/* VLCD输出电压档位,适用于电荷泵模式,1/3 BIAS */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_2_55V LCD_FCR_CC_LV0 /**< VLCD电压档位0 2.55V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_2_70V LCD_FCR_CC_LV1 /**< VLCD电压档位1 2.70V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_2_85V LCD_FCR_CC_LV2 /**< VLCD电压档位2 2.85V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_3_00V LCD_FCR_CC_LV3 /**< VLCD电压档位3 3.00V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_3_15V LCD_FCR_CC_LV4 /**< VLCD电压档位4 3.15V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_3_30V LCD_FCR_CC_LV5 /**< VLCD电压档位5 3.30V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_3_45V LCD_FCR_CC_LV6 /**< VLCD电压档位6 3.45V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_3_60V LCD_FCR_CC_LV7 /**< VLCD电压档位7 3.60V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_3_75V LCD_FCR_CC_LV8 /**< VLCD电压档位8 3.75V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_3_90V LCD_FCR_CC_LV9 /**< VLCD电压档位9 3.90V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_4_05V LCD_FCR_CC_LV10 /**< VLCD电压档位10 4.05V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_4_20V LCD_FCR_CC_LV11 /**< VLCD电压档位11 4.20V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_4_35V LCD_FCR_CC_LV12 /**< VLCD电压档位12 4.35V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_4_50V LCD_FCR_CC_LV13 /**< VLCD电压档位13 4.50V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_4_65V LCD_FCR_CC_LV14 /**< VLCD电压档位14 4.65V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_4_80V LCD_FCR_CC_LV15 /**< VLCD电压档位15 4.80V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_4_95V LCD_FCR_CC_LV16 /**< VLCD电压档位16 4.95V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_5_10V LCD_FCR_CC_LV17 /**< VLCD电压档位17 5.10V */
|
||
#define LCD_CHAGE_PUMP_1_3_BIAS_5_25V LCD_FCR_CC_LV18 /**< VLCD电压档位18 5.25V */
|
||
|
||
|
||
/* VLCD输出电压档位,适用于电荷泵模式,1/4 BIAS */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_2_60V LCD_FCR_CC_LV0 /**< VLCD电压档位0 2.60V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_2_80V LCD_FCR_CC_LV1 /**< VLCD电压档位1 2.80V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_3_00V LCD_FCR_CC_LV2 /**< VLCD电压档位2 3.00V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_3_20V LCD_FCR_CC_LV3 /**< VLCD电压档位3 3.20V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_3_40V LCD_FCR_CC_LV4 /**< VLCD电压档位4 3.40V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_3_60V LCD_FCR_CC_LV5 /**< VLCD电压档位5 3.60V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_3_80V LCD_FCR_CC_LV6 /**< VLCD电压档位6 3.80V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_4_00V LCD_FCR_CC_LV7 /**< VLCD电压档位7 4.00V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_4_20V LCD_FCR_CC_LV8 /**< VLCD电压档位8 4.20V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_4_40V LCD_FCR_CC_LV9 /**< VLCD电压档位9 4.40V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_4_60V LCD_FCR_CC_LV10 /**< VLCD电压档位10 4.60V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_4_80V LCD_FCR_CC_LV11 /**< VLCD电压档位11 4.80V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_5_00V LCD_FCR_CC_LV12 /**< VLCD电压档位12 5.00V */
|
||
#define LCD_CHAGE_PUMP_1_4_BIAS_5_20V LCD_FCR_CC_LV13 /**< VLCD电压档位13 5.20V */
|
||
|
||
/* VLCD输出电压档位,用于片内电阻分压模式(高驱) */
|
||
#define LCD_INNER_RESISTER_0_548_VDD LCD_FCR_CC_LV0 /**< VLCD电压档位0 0.548*VDD */
|
||
#define LCD_INNER_RESISTER_0_566_VDD LCD_FCR_CC_LV1 /**< VLCD电压档位1 0.566*VDD */
|
||
#define LCD_INNER_RESISTER_0_584_VDD LCD_FCR_CC_LV2 /**< VLCD电压档位2 0.584*VDD */
|
||
#define LCD_INNER_RESISTER_0_602_VDD LCD_FCR_CC_LV3 /**< VLCD电压档位3 0.602*VDD */
|
||
#define LCD_INNER_RESISTER_0_624_VDD LCD_FCR_CC_LV4 /**< VLCD电压档位4 0.624*VDD */
|
||
#define LCD_INNER_RESISTER_0_646_VDD LCD_FCR_CC_LV5 /**< VLCD电压档位5 0.646*VDD */
|
||
#define LCD_INNER_RESISTER_0_670_VDD LCD_FCR_CC_LV6 /**< VLCD电压档位6 0.670*VDD */
|
||
#define LCD_INNER_RESISTER_0_694_VDD LCD_FCR_CC_LV7 /**< VLCD电压档位7 0.694*VDD */
|
||
#define LCD_INNER_RESISTER_0_722_VDD LCD_FCR_CC_LV8 /**< VLCD电压档位8 0.722*VDD */
|
||
#define LCD_INNER_RESISTER_0_752_VDD LCD_FCR_CC_LV9 /**< VLCD电压档位9 0.752*VDD */
|
||
#define LCD_INNER_RESISTER_0_786_VDD LCD_FCR_CC_LV10 /**< VLCD电压档位10 0.786*VDD */
|
||
#define LCD_INNER_RESISTER_0_820_VDD LCD_FCR_CC_LV11 /**< VLCD电压档位11 0.820*VDD */
|
||
#define LCD_INNER_RESISTER_0_860_VDD LCD_FCR_CC_LV12 /**< VLCD电压档位12 0.860*VDD */
|
||
#define LCD_INNER_RESISTER_0_902_VDD LCD_FCR_CC_LV13 /**< VLCD电压档位13 0.902*VDD */
|
||
#define LCD_INNER_RESISTER_0_950_VDD LCD_FCR_CC_LV14 /**< VLCD电压档位14 0.950*VDD */
|
||
#define LCD_INNER_RESISTER_1_000_VDD LCD_FCR_CC_LV15 /**< VLCD电压档位15 1.000*VDD */
|
||
|
||
/* LCD外设死区时间 */
|
||
#define LCD_DEAD_TIME_0 LCD_FCR_DEAD_0 /**< 无死区 */
|
||
#define LCD_DEAD_TIME_1 LCD_FCR_DEAD_1 /**< 死区时间1个ck_div */
|
||
#define LCD_DEAD_TIME_2 LCD_FCR_DEAD_2 /**< 死区时间2个ck_div */
|
||
#define LCD_DEAD_TIME_3 LCD_FCR_DEAD_3 /**< 死区时间3个ck_div */
|
||
#define LCD_DEAD_TIME_4 LCD_FCR_DEAD_4 /**< 死区时间4个ck_div */
|
||
#define LCD_DEAD_TIME_5 LCD_FCR_DEAD_5 /**< 死区时间5个ck_div */
|
||
#define LCD_DEAD_TIME_6 LCD_FCR_DEAD_6 /**< 死区时间6个ck_div */
|
||
#define LCD_DEAD_TIME_7 LCD_FCR_DEAD_7 /**< 死区时间7个ck_div */
|
||
|
||
/* LCD外设脉冲持续时间 */
|
||
#define LCD_PULSE_ON_DURATION_0 LCD_FCR_PON_0 /**< 脉冲持续时间 T = 0 */
|
||
#define LCD_PULSE_ON_DURATION_1 LCD_FCR_PON_1 /**< 脉冲持续时间 T = 1/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_2 LCD_FCR_PON_2 /**< 脉冲持续时间 T = 2/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_3 LCD_FCR_PON_3 /**< 脉冲持续时间 T = 3/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_4 LCD_FCR_PON_4 /**< 脉冲持续时间 T = 4/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_5 LCD_FCR_PON_5 /**< 脉冲持续时间 T = 5/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_6 LCD_FCR_PON_6 /**< 脉冲持续时间 T = 6/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_7 LCD_FCR_PON_7 /**< 脉冲持续时间 T = 7/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_8 LCD_FCR_PON_8 /**< 脉冲持续时间 T = 8/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_9 LCD_FCR_PON_9 /**< 脉冲持续时间 T = 9/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_10 LCD_FCR_PON_10 /**< 脉冲持续时间 T = 10/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_11 LCD_FCR_PON_11 /**< 脉冲持续时间 T = 11/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_12 LCD_FCR_PON_12 /**< 脉冲持续时间 T = 12/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_13 LCD_FCR_PON_13 /**< 脉冲持续时间 T = 13/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_14 LCD_FCR_PON_14 /**< 脉冲持续时间 T = 14/ck_ps */
|
||
#define LCD_PULSE_ON_DURATION_15 LCD_FCR_PON_15 /**< 脉冲持续时间 T = 15/ck_ps */
|
||
|
||
/* LCD外设驱动能力 */
|
||
#define LCD_LOW_DRIVE (0x00000000U) /**< 高阻抗弱驱动 */
|
||
#define LCD_HIGH_DRIVE LCD_FCR_HD /**< 低阻抗强驱动 */
|
||
|
||
/* LCD防极化 */
|
||
#define LCD_ANTIPOLAR_FLOATING (0x00000000U) /**< COM和SEG引脚输出浮空 */
|
||
#define LCD_ANTIPOLAR_GND LCD_FCR_ANTI_POLAR /**< COM和SEG引脚输出连接到GND */
|
||
|
||
/* LCD COM和SEG输出控制 */
|
||
#define LCD_SCOC_GND (0x00000000U) /**< COM和SEG引脚输出连接到GND */
|
||
#define LCD_SCOC_OUT (LCD_FCR_SCOC) /**< COM和SEG引脚根据偏置和占空比配置输出 */
|
||
|
||
#define LCD_DRIVER_VOLTAGE_DELAY (50U) /**< LCD输出驱动电压稳定时间 */
|
||
|
||
/* LCD外设中断标志 */
|
||
#define LCD_INTERRUPT_SOF LCD_FCR_SOFIE /**< 帧起始中断 */
|
||
|
||
/* LCD状态标志 */
|
||
#define LCD_FLAG_ENS LCD_SR_ENS /**< 使能状态标志 */
|
||
#define LCD_FLAG_SOF LCD_SR_SOF /**< 帧起始状态标志 */
|
||
|
||
/* LCD状态标志 */
|
||
#define LCD_CLEAR_FLAG_SOF LCD_CLR_SOFC /**< 清零帧起始状态标志 */
|
||
|
||
/* LCD_RAM显示存储器 */
|
||
#define LCD_RAM_REGISTER0 (0x00000000U) /**< LCD RAM 存储器 0 */
|
||
#define LCD_RAM_REGISTER1 (0x00000001U) /**< LCD RAM 存储器 1 */
|
||
#define LCD_RAM_REGISTER2 (0x00000002U) /**< LCD RAM 存储器 2 */
|
||
#define LCD_RAM_REGISTER3 (0x00000003U) /**< LCD RAM 存储器 3 */
|
||
#define LCD_RAM_REGISTER4 (0x00000004U) /**< LCD RAM 存储器 4 */
|
||
#define LCD_RAM_REGISTER5 (0x00000005U) /**< LCD RAM 存储器 5 */
|
||
#define LCD_RAM_REGISTER6 (0x00000006U) /**< LCD RAM 存储器 6 */
|
||
#define LCD_RAM_REGISTER7 (0x00000007U) /**< LCD RAM 存储器 7 */
|
||
#define LCD_RAM_REGISTER8 (0x00000008U) /**< LCD RAM 存储器 8 */
|
||
#define LCD_RAM_REGISTER9 (0x00000009U) /**< LCD RAM 存储器 9 */
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/*-------------------------------------------functions------------------------------------------*/
|
||
|
||
/************************************************************************************************/
|
||
/**
|
||
* @defgroup LCD_External_Functions LCD External Functions
|
||
* @brief LCD对外函数
|
||
* @{
|
||
*
|
||
*/
|
||
/************************************************************************************************/
|
||
/**
|
||
* @brief LCD 外设使能
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_enable(void)
|
||
{
|
||
LCD->CR |= (LCD_CR_LCDEN);
|
||
}
|
||
|
||
/**
|
||
* @brief LCD 外设禁止
|
||
* @note 禁止外设后,输出驱动波形在当前帧结束后停止输出
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_disable(void)
|
||
{
|
||
LCD->CR &= (~LCD_CR_LCDEN);
|
||
}
|
||
|
||
/**
|
||
* @brief 选择 LCD 占空比
|
||
* @param duty LCD占空比选择
|
||
* @arg LCD_DUTY_1_4
|
||
* @arg LCD_DUTY_1_6
|
||
* @arg LCD_DUTY_1_8
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_duty(uint32_t duty)
|
||
{
|
||
MODIFY_REG(LCD->CR, LCD_CR_DUTY, (duty));
|
||
}
|
||
|
||
/**
|
||
* @brief 获取LCD占空比
|
||
* @retval uint32_t LCD占空比
|
||
* @arg LCD_DUTY_1_4
|
||
* @arg LCD_DUTY_1_6
|
||
* @arg LCD_DUTY_1_8
|
||
*/
|
||
__STATIC_INLINE uint32_t std_lcd_get_duty(void)
|
||
{
|
||
return (LCD->CR & LCD_CR_DUTY);
|
||
}
|
||
|
||
/**
|
||
* @brief 选择LCD 偏置
|
||
* @param bias LCD偏置
|
||
* @arg LCD_BIAS_1_3
|
||
* @arg LCD_BIAS_1_4
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_bias(uint32_t bias)
|
||
{
|
||
MODIFY_REG(LCD->CR, LCD_CR_BIAS, (bias));
|
||
}
|
||
|
||
/**
|
||
* @brief 获取LCD偏置
|
||
* @retval uint32_t LCD偏置
|
||
* @arg LCD_BIAS_1_3
|
||
* @arg LCD_BIAS_1_4
|
||
*/
|
||
__STATIC_INLINE uint32_t std_lcd_get_bias(void)
|
||
{
|
||
return (LCD->CR & LCD_CR_BIAS);
|
||
}
|
||
|
||
/**
|
||
* @brief 选择LCD驱动模式
|
||
* @param driver_mode LCD驱动模式
|
||
* @arg LCD_DRIVER_MODE_CHARGE_PUMP
|
||
* @arg LCD_DRIVER_MODE_INNER_RESISTER
|
||
* @arg LCD_DRIVER_MODE_OUTER_CAPACITY
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_driver_mode(uint32_t driver_mode)
|
||
{
|
||
MODIFY_REG(LCD->CR, LCD_CR_MDSET, (driver_mode));
|
||
}
|
||
|
||
/**
|
||
* @brief 获取LCD驱动模式
|
||
* @retval uint32_t LCD驱动模式
|
||
* @arg LCD_DRIVER_MODE_CHARGE_PUMP
|
||
* @arg LCD_DRIVER_MODE_INNER_RESISTER
|
||
* @arg LCD_DRIVER_MODE_OUTER_CAPACITY
|
||
*/
|
||
__STATIC_INLINE uint32_t std_lcd_get_driver_mode(void)
|
||
{
|
||
return (LCD->CR & LCD_CR_MDSET);
|
||
}
|
||
|
||
/**
|
||
* @brief 配置LCD显示帧速率
|
||
* @param clock_prescaler LCD时钟预分频
|
||
* @arg LCD_PRESCALER_1
|
||
* @arg ...
|
||
* @arg LCD_PRESCALER_128
|
||
*
|
||
* @param clock_divider LCD时钟分频
|
||
* @arg LCD_DIVIDER_16
|
||
* @arg ...
|
||
* @arg LCD_DIVIDER_31
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_display_frame_frequency(uint32_t clock_prescaler, uint32_t clock_divider)
|
||
{
|
||
MODIFY_REG(LCD->FCR, (LCD_FCR_PS | LCD_FCR_DIV), ((clock_prescaler) | (clock_divider)));
|
||
}
|
||
|
||
/**
|
||
* @brief 设置LCD电荷泵和片外电容分压模式时钟分频
|
||
* @param clock_div 时钟分频系数
|
||
* @arg LCD_CPCLK_DIV1
|
||
* @arg ...
|
||
* @arg LCD_CPCLK_DIV128
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_chargepump_clock(uint32_t clock_div)
|
||
{
|
||
MODIFY_REG(LCD->CR, LCD_CR_CPDIV, (clock_div));
|
||
}
|
||
|
||
/**
|
||
* @brief 获取LCD电荷泵和片外电容分压模式时钟分频
|
||
* @retval uint32_t 时钟分频系数
|
||
* @arg LCD_CPCLK_DIV1
|
||
* @arg ...
|
||
* @arg LCD_CPCLK_DIV128
|
||
*
|
||
*/
|
||
__STATIC_INLINE uint32_t std_lcd_get_chargepump_clock(void)
|
||
{
|
||
return (LCD->CR & LCD_CR_CPDIV);
|
||
}
|
||
|
||
/**
|
||
* @brief LCD 区段多路复用配置
|
||
* @param mux_seg LCD区段多路复用配置
|
||
* @arg LCD_MUX_SEGMENT_ENABLE
|
||
* @arg LCD_MUX_SEGMENT_DISABLE
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_mux_seg(uint32_t mux_seg)
|
||
{
|
||
MODIFY_REG(LCD->CR, LCD_CR_MUX_SEG, (mux_seg));
|
||
}
|
||
|
||
/**
|
||
* @brief 使能LCD_V1引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_v1_cap_enable(void)
|
||
{
|
||
LCD->CR |= (LCD_CR_LCD_CAP_V1);
|
||
}
|
||
|
||
/**
|
||
* @brief 禁止LCD_V1引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_v1_cap_disable(void)
|
||
{
|
||
LCD->CR &= (~LCD_CR_LCD_CAP_V1);
|
||
}
|
||
|
||
/**
|
||
* @brief 使能LCD_V2引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_v2_cap_enable(void)
|
||
{
|
||
LCD->CR |= (LCD_CR_LCD_CAP_V2);
|
||
}
|
||
|
||
/**
|
||
* @brief 禁止LCD_V2引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_v2_cap_disable(void)
|
||
{
|
||
LCD->CR &= (~LCD_CR_LCD_CAP_V2);
|
||
}
|
||
|
||
/**
|
||
* @brief 使能LCD_V3引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_v3_cap_enable(void)
|
||
{
|
||
LCD->CR |= (LCD_CR_LCD_CAP_V3);
|
||
}
|
||
|
||
/**
|
||
* @brief 禁止LCD_V3引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_v3_cap_disable(void)
|
||
{
|
||
LCD->CR &= (~LCD_CR_LCD_CAP_V3);
|
||
}
|
||
|
||
/**
|
||
* @brief 使能VLCD引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_vlcd_cap_enable(void)
|
||
|
||
{
|
||
LCD->CR |= (LCD_CR_LCD_CAP_VLCD);
|
||
}
|
||
|
||
/**
|
||
* @brief 禁止VLCD引脚连接外部电容
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_vlcd_cap_disable(void)
|
||
{
|
||
LCD->CR &= (~LCD_CR_LCD_CAP_VLCD);
|
||
}
|
||
|
||
/**
|
||
* @brief LCD外设强驱动使能
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_high_drive_enable(void)
|
||
{
|
||
LCD->FCR |= (LCD_FCR_HD);
|
||
}
|
||
|
||
/**
|
||
* @brief LCD外设强驱动禁止
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_high_drive_disable(void)
|
||
{
|
||
LCD->FCR &= (~LCD_FCR_HD);
|
||
}
|
||
|
||
/**
|
||
* @brief LCD外设脉冲持续时间的配置
|
||
* @param duration LCD脉冲持续时间
|
||
* @arg LCD_PULSE_ON_DURATION_0
|
||
* @arg LCD_PULSE_ON_DURATION_1
|
||
* @arg ...
|
||
* @arg LCD_PULSE_ON_DURATION_14
|
||
* @arg LCD_PULSE_ON_DURATION_15
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_pulse_duration(uint32_t duration)
|
||
{
|
||
MODIFY_REG(LCD->FCR, LCD_FCR_PON, (duration));
|
||
}
|
||
|
||
/**
|
||
* @brief LCD外设输出VLCD电压档位配置
|
||
* @param vlcd_voltage VLCD电压档位
|
||
* @arg LCD_CHAGE_PUMP_1_3_BIAS_2_55V
|
||
* @arg ...
|
||
* @arg LCD_CHAGE_PUMP_1_4_BIAS_2_60V
|
||
* @arg ...
|
||
* @arg LCD_INNER_RESISTER_0_548_VDD
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_vlcd_voltage(uint32_t vlcd_voltage)
|
||
{
|
||
MODIFY_REG(LCD->FCR, LCD_FCR_CC, (vlcd_voltage));
|
||
}
|
||
|
||
/**
|
||
* @brief 设置LCD外设死区时间
|
||
* @param deadtime LCD死区时间
|
||
* @arg LCD_DEAD_TIME_0
|
||
* @arg LCD_DEAD_TIME_1
|
||
* @arg LCD_DEAD_TIME_2
|
||
* @arg LCD_DEAD_TIME_3
|
||
* @arg LCD_DEAD_TIME_4
|
||
* @arg LCD_DEAD_TIME_5
|
||
* @arg LCD_DEAD_TIME_6
|
||
* @arg LCD_DEAD_TIME_7
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_dead_time(uint32_t deadtime)
|
||
{
|
||
MODIFY_REG(LCD->FCR, LCD_FCR_DEAD, (deadtime));
|
||
}
|
||
|
||
/**
|
||
* @brief 配置LCD外设闪烁模式和闪烁频率
|
||
* @param mode LCD闪烁模式
|
||
* @arg LCD_BLINK_MODE_OFF
|
||
* @arg LCD_BLINK_MODE_SEG0_COM0
|
||
* @arg LCD_BLINK_MODE_SEG0_ALLCOM
|
||
* @arg LCD_BLINK_MODE_ALLSEG_ALLCOM
|
||
* @param blink_frequency LCD闪烁频率
|
||
* @arg LCD_BLINK_FREQUENCY_DIV8
|
||
* @arg LCD_BLINK_FREQUENCY_DIV16
|
||
* @arg LCD_BLINK_FREQUENCY_DIV32
|
||
* @arg LCD_BLINK_FREQUENCY_DIV64
|
||
* @arg LCD_BLINK_FREQUENCY_DIV128
|
||
* @arg LCD_BLINK_FREQUENCY_DIV256
|
||
* @arg LCD_BLINK_FREQUENCY_DIV512
|
||
* @arg LCD_BLINK_FREQUENCY_DIV1024
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_blink_frequency(uint32_t mode, uint32_t blink_frequency)
|
||
{
|
||
MODIFY_REG(LCD->FCR, (LCD_FCR_BLINK | LCD_FCR_BLINKF), ((mode) | (blink_frequency)));
|
||
}
|
||
|
||
/**
|
||
* @brief 配置LCD防极化
|
||
* @param state LCD防极化配置
|
||
* @arg LCD_ANTIPOLAR_FLOATING
|
||
* @arg LCD_ANTIPOLAR_GND
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_anti_polar(uint32_t state)
|
||
{
|
||
MODIFY_REG(LCD->FCR, LCD_FCR_ANTI_POLAR, state);
|
||
}
|
||
|
||
/**
|
||
* @brief 配置LCD COM和SEG输出
|
||
* @param state COM和SEG输出配置
|
||
* @arg LCD_SCOC_GND
|
||
* @arg LCD_SCOC_OUT
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_set_scoc(uint32_t state)
|
||
{
|
||
MODIFY_REG(LCD->FCR, LCD_FCR_SCOC, state);
|
||
}
|
||
|
||
/**
|
||
* @brief 使能LCD外设中断
|
||
* @param interrupt LCD中断源
|
||
* @arg LCD_INTERRUPT_SOF
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_interrupt_enable(uint32_t interrupt)
|
||
{
|
||
LCD->FCR |= (interrupt);
|
||
}
|
||
|
||
/**
|
||
* @brief 禁止LCD外设中断
|
||
* @param interrupt LCD中断源
|
||
* @arg LCD_INTERRUPT_SOF
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_interrupt_disable(uint32_t interrupt)
|
||
{
|
||
LCD->FCR &= (~interrupt);
|
||
}
|
||
|
||
/**
|
||
* @brief 获取LCD外设中断使能
|
||
* @param interrupt LCD中断源
|
||
* @arg LCD_INTERRUPT_SOF
|
||
* @retval bool 返回选择的中断源使能状态
|
||
* @arg true: 表示选择中断源使能
|
||
* @arg false: 表示选择中断源未使能
|
||
*/
|
||
__STATIC_INLINE bool std_lcd_get_interrupt_enable(uint32_t interrupt)
|
||
{
|
||
return ((LCD->FCR & interrupt) == (interrupt));
|
||
}
|
||
|
||
/**
|
||
* @brief 查询LCD状态标志
|
||
* @param flag LCD状态标志
|
||
* @arg LCD_FLAG_ENS
|
||
* @arg LCD_FLAG_SOF
|
||
* @retval bool 返回标志的状态
|
||
* @arg true: 当前标志为置起状态
|
||
* @arg false:当前标志为清除状态
|
||
*/
|
||
__STATIC_INLINE bool std_lcd_get_flag(uint32_t flag)
|
||
{
|
||
return ((LCD->SR & (flag)) == (flag));
|
||
}
|
||
|
||
/**
|
||
* @brief 清除LCD中断标志
|
||
* @param clear_flag LCD中断标志
|
||
* @arg LCD_CLEAR_FLAG_SOF
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_clear_flag(uint32_t clear_flag)
|
||
{
|
||
LCD->CLR |= (clear_flag);
|
||
}
|
||
|
||
/**
|
||
* @brief 写入指定LCD RAM数据
|
||
* @param lcd_ram_index 指定LCD_RAM 显示存储器
|
||
* @arg LCD_RAM_REGISTER0
|
||
* @arg LCD_RAM_REGISTER1
|
||
* @arg LCD_RAM_REGISTER2
|
||
* @arg LCD_RAM_REGISTER3
|
||
* @arg LCD_RAM_REGISTER4
|
||
* @arg LCD_RAM_REGISTER5
|
||
* @arg LCD_RAM_REGISTER6
|
||
* @arg LCD_RAM_REGISTER7
|
||
* @arg LCD_RAM_REGISTER8
|
||
* @arg LCD_RAM_REGISTER9
|
||
* @param lcd_ram_mask LCD_RAM 显示存储器数据掩码
|
||
* @param pixel 写入LCD_RAM的数值
|
||
* @retval 无
|
||
*/
|
||
__STATIC_INLINE void std_lcd_write(uint32_t lcd_ram_index, uint32_t lcd_ram_mask, uint32_t pixel)
|
||
{
|
||
MODIFY_REG(LCD->RAM[lcd_ram_index], ~(lcd_ram_mask), pixel);
|
||
}
|
||
|
||
/* LCD初始化相关函数 */
|
||
void std_lcd_init(std_lcd_init_t *lcd_init_param);
|
||
void std_lcd_deinit(void);
|
||
|
||
/* LCD结构体初始化相关函数 */
|
||
void std_lcd_struct_init(std_lcd_init_t *lcd_init_struct);
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
#endif /* CIU32L051_STD_LCD_H */
|