mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
Diff: targets/TARGET_NUVOTON/TARGET_NANO100/device/StdDriver/nano100_lcd.h
- Revision:
- 174:b96e65c34a4d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/targets/TARGET_NUVOTON/TARGET_NANO100/device/StdDriver/nano100_lcd.h Mon Oct 02 15:33:19 2017 +0100 @@ -0,0 +1,225 @@ +/****************************************************************************//** + * @file lcd.h + * @version V1.00 + * $Revision: 5 $ + * $Date: 15/06/26 1:30p $ + * @brief Nano100 series I2C driver header file + * + * @note + * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved. +*****************************************************************************/ +#ifndef __LCD_H__ +#define __LCD_H__ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include <stdint.h> +//#include <stdbool.h> + + +/** @addtogroup NANO100_Device_Driver NANO100 Device Driver + @{ +*/ + +/** @addtogroup NANO100_LCD_Driver LCD Driver + @{ +*/ + + +/** @addtogroup NANO100_LCD_EXPORTED_CONSTANTS LCD Exported Constants + @{ +*/ + +/// @cond +/*---------------------------------------------------------------------------------------------------------*/ +/* Macro, type and constant definitions */ +/*---------------------------------------------------------------------------------------------------------*/ + +/// @endcond + +#define LCD_FREQ_DIV32 ((uint32_t) 0x00000000) /*!< Clock source (32 or 10KHz) divide by 32 */ +#define LCD_FREQ_DIV64 ((uint32_t) 0x00000010) /*!< Clock source (32 or 10KHz) divide by 64 */ +#define LCD_FREQ_DIV96 ((uint32_t) 0x00000020) /*!< Clock source (32 or 10KHz) divide by 96 */ +#define LCD_FREQ_DIV128 ((uint32_t) 0x00000030) /*!< Clock source (32 or 10KHz) divide by 128 */ +#define LCD_FREQ_DIV192 ((uint32_t) 0x00000040) /*!< Clock source (32 or 10KHz) divide by 192 */ +#define LCD_FREQ_DIV256 ((uint32_t) 0x00000050) /*!< Clock source (32 or 10KHz) divide by 256 */ +#define LCD_FREQ_DIV384 ((uint32_t) 0x00000060) /*!< Clock source (32 or 10KHz) divide by 384 */ +#define LCD_FREQ_DIV512 ((uint32_t) 0x00000070) /*!< Clock source (32 or 10KHz) divide by 512 */ + +#define LCD_MUX_STATIC ((uint32_t) 0x00000000) /*!< Static multiplexing */ +#define LCD_MUX_ONE_SECOND ((uint32_t) 0x00000002) /*!< Duplex multiplexing */ +#define LCD_MUX_ONE_THIRD ((uint32_t) 0x00000004) /*!< Triplex multiplexing */ +#define LCD_MUX_ONE_FOURTH ((uint32_t) 0x00000006) /*!< Quadruplex multiplexing */ +#define LCD_MUX_ONE_FIFTH ((uint32_t) 0x00000008) /*!< 1/5 duty */ +#define LCD_MUX_ONE_SIXTH ((uint32_t) 0x0000000A) /*!< 1/6 duty */ + +#define LCD_BIAS_STATIC ((uint32_t) 0x00000000) /*!< Static bias */ +#define LCD_BIAS_HALF ((uint32_t) 0x00000002) /*!< 1/2 bias */ +#define LCD_BIAS_THIRD ((uint32_t) 0x00000004) /*!< 1/3 bias */ + +#define LCD_CPUMP_DIV1 ((uint32_t) 0x00000000) /*!< Clock source (32 or 10KHz) divide by 1 and is used by analog component */ +#define LCD_CPUMP_DIV2 ((uint32_t) 0x00000800) /*!< Clock source (32 or 10KHz) divide by 2 */ +#define LCD_CPUMP_DIV4 ((uint32_t) 0x00001000) /*!< Clock source (32 or 10KHz) divide by 4 */ +#define LCD_CPUMP_DIV8 ((uint32_t) 0x00001800) /*!< Clock source (32 or 10KHz) divide by 8 */ +#define LCD_CPUMP_DIV16 ((uint32_t) 0x00002000) /*!< Clock source (32 or 10KHz) divide by 16 */ +#define LCD_CPUMP_DIV32 ((uint32_t) 0x00002800) /*!< Clock source (32 or 10KHz) divide by 32 */ +#define LCD_CPUMP_DIV64 ((uint32_t) 0x00003000) /*!< Clock source (32 or 10KHz) divide by 64 */ +#define LCD_CPUMP_DIV128 ((uint32_t) 0x00003800) /*!< Clock source (32 or 10KHz) divide by 128 */ + +#define LCD_CPVOl_2_6V ((uint32_t) 0x00000000) /*!< Set charge pump voltage to 2.6 V */ +#define LCD_CPVOl_2_7V ((uint32_t) 0x00000100) /*!< Set charge pump voltage to 2.7 V */ +#define LCD_CPVOl_2_8V ((uint32_t) 0x00000200) /*!< Set charge pump voltage to 2.8 V */ +#define LCD_CPVOl_2_9V ((uint32_t) 0x00000300) /*!< Set charge pump voltage to 2.9 V */ +#define LCD_CPVOl_3V ((uint32_t) 0x00000400) /*!< Set charge pump voltage to 3 V */ +#define LCD_CPVOl_3_1V ((uint32_t) 0x00000500) /*!< Set charge pump voltage to 3.1 V */ +#define LCD_CPVOl_3_2V ((uint32_t) 0x00000600) /*!< Set charge pump voltage to 3.2 V */ +#define LCD_CPVOl_3_3V ((uint32_t) 0x00000700) /*!< Set charge pump voltage to 3.3 V */ + +#define LCD_FCPRESC_DIV1 ((uint32_t) 0x00000000) /*!< Set pre-scale divider value to 1 */ +#define LCD_FCPRESC_DIV2 ((uint32_t) 0x00000004) /*!< Set pre-scale divider value to 2 */ +#define LCD_FCPRESC_DIV4 ((uint32_t) 0x00000008) /*!< Set pre-scale divider value to 4 */ +#define LCD_FCPRESC_DIV8 ((uint32_t) 0x0000000C) /*!< Set pre-scale divider value to 8 */ + +#define LCD_FRAMECOUNT_INT ((uint32_t) 0x00000001) /*!< Indicate frame count interrupt */ +#define LCD_POWERDOWN_INT ((uint32_t) 0x00000002) /*!< Indicate power down interrupt */ +#define LCD_ALL_INT ((uint32_t) 0x00000003) /*!< Indicate frame count & power down interrupt */ + +#define ERR_LCD_CAL_BLINK_FAIL 0xFFFF0000 /*!< Specifies that overflow to calculate the blinking frequency */ + +/*@}*/ /* end of group NANO100_LCD_EXPORTED_CONSTANTS */ + + +/** @addtogroup NANO100_LCD_EXPORTED_STRUCTS LCD Exported Structs + @{ +*/ +typedef enum { + LCD_C_TYPE = 0, /*!< Select LCD C-Type */ + LCD_EXTERNAL_R_TYPE = 1, /*!< Select LCD External R-Type */ + LCD_INTERNAL_R_TYPE = 2, /*!< Select LCD Internal R-Type */ + LCD_EXTERNAL_C_TYPE = 3 /*!< Select LCD External C-Type */ +} LCD_PanelType; + +/*@}*/ /* end of group NANO100_LCD_EXPORTED_STRUCTS */ + + +/** @addtogroup NANO100_LCD_EXPORTED_FUNCTIONS LCD Exported Functions + @{ +*/ + +/** + * @brief Get LCD Power Down interrupt flag. + * + * @param None + * + * @return LCD Power Down interrupt Flag. + */ +#define LCD_GET_PD_INT_FLAG() ((LCD->FCSTS & LCD_FCSTS_PDSTS_Msk) >> LCD_FCSTS_PDSTS_Pos) + +/** + * @brief Clear LCD Power Down interrupt flag. + * + * @param None + * + * @return None. + */ +#define LCD_CLR_PD_INT_FLAG() (LCD->FCSTS = LCD_FCSTS_PDSTS_Msk) + +/** + * @brief Get LCD Frame Count interrupt flag. + * + * @param None + * + * @return LCD Frame Count interrupt Flag. + */ +#define LCD_GET_FRAME_CNT_INT_FLAG() ((LCD->FCSTS & LCD_FCSTS_FCSTS_Msk) >> LCD_FCSTS_FCSTS_Pos) + +/** + * @brief Clear LCD Frame Count interrupt flag. + * + * @param None + * + * @return None. + */ +#define LCD_CLR_FRAME_CNT_INT_FLAG() (LCD->FCSTS = LCD_FCSTS_FCSTS_Msk) + +/** + * @brief Enable LCD Power Down Display function. + * + * @param None + * + * @return None. + */ +#define LCD_ENABLE_PD_DISPLAY() (LCD->CTL |= LCD_CTL_PDDISP_EN_Msk) + +/** + * @brief Disable LCD Power Down Display function. + * + * @param None + * + * @return None. + */ +#define LCD_DISABLE_PD_DISPLAY() (LCD->CTL &= ~LCD_CTL_PDDISP_EN_Msk) + +uint32_t LCD_EnableFrameCounter(uint32_t u32Count); +void LCD_DisableFrameCounter(void); +uint32_t LCD_EnableBlink(uint32_t u32ms); +void LCD_DisableBlink(void); +void LCD_EnableInt(uint32_t IntSrc); +void LCD_DisableInt(uint32_t IntSrc); +uint32_t LCD_Open(uint32_t u32DrivingType, uint32_t u32ComNum, uint32_t u32BiasLevel, uint32_t u32FramerateDiv, uint32_t u32DrivingVol); +void LCD_SetPixel(uint32_t u32Com, uint32_t u32Seg, uint32_t u32OnFlag); +void LCD_SetAllPixels(uint32_t u32OnOff); +void LCD_Close(void); + +/** + * @brief Enable LCD controller + * + * @param None + * + * @return None + * + */ +static __INLINE void LCD_EnableDisplay(void) +{ + /* Enable LCD */ + LCD->CTL |= LCD_CTL_EN_Msk; +} + +/** + * @brief Disable LCD controller + * + * @param None + * + * @return None + * + */ +static __INLINE void LCD_DisableDisplay(void) +{ + /* Enable LCD */ + LCD->CTL &= ~LCD_CTL_EN_Msk; +} + + + +/*@}*/ /* end of group NANO100_LCD_EXPORTED_FUNCTIONS */ + + +/*@}*/ /* end of group NANO100_LCD_Driver */ + +/*@}*/ /* end of group NANO100_Device_Driver */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __LCD_H__ */ + + + +/*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/ + +