| /********************************************************************** | |
| * $Id$ lpc18xx_lcd.h 2011-06-02 | |
| *//** | |
| * @file lpc18xx_lcd.h | |
| * @brief Contains all macro definitions and function prototypes | |
| * support for LCD Driver | |
| * @version 1.0 | |
| * @date 02. June. 2011 | |
| * @author NXP MCU SW Application Team | |
| * | |
| * Copyright(C) 2011, NXP Semiconductor | |
| * All rights reserved. | |
| * | |
| *********************************************************************** | |
| * Software that is described herein is for illustrative purposes only | |
| * which provides customers with programming information regarding the | |
| * products. This software is supplied "AS IS" without any warranties. | |
| * NXP Semiconductors assumes no responsibility or liability for the | |
| * use of the software, conveys no license or title under any patent, | |
| * copyright, or mask work right to the product. NXP Semiconductors | |
| * reserves the right to make changes in the software without | |
| * notification. NXP Semiconductors also make no representation or | |
| * warranty that such application will be suitable for the specified | |
| * use without further testing or modification. | |
| **********************************************************************/ | |
| /* Peripheral group ----------------------------------------------------------- */ | |
| /** @defgroup LCD LCD | |
| * @ingroup LPC1800CMSIS_FwLib_Drivers | |
| * @{ | |
| */ | |
| #ifndef __LPC18XX_LCD_H_ | |
| #define __LPC18XX_LCD_H_ | |
| /* Includes ------------------------------------------------------------------- */ | |
| #include "LPC18xx.h" | |
| #include "lpc_types.h" | |
| #ifdef __cplusplus | |
| extern "C" | |
| { | |
| #endif | |
| /* Private Macros ------------------------------------------------------------- */ | |
| /** @defgroup LCD_Private_Macros LCD Private Macros | |
| * @{ | |
| */ | |
| /* --------------------- BIT DEFINITIONS -------------------------------------- */ | |
| /* LCD control enable bit */ | |
| #define CLCDC_LCDCTRL_ENABLE _BIT(0) | |
| /* LCD control power enable bit */ | |
| #define CLCDC_LCDCTRL_PWR _BIT(11) | |
| /** | |
| * @} | |
| */ | |
| /* Public Types --------------------------------------------------------------- */ | |
| /** @defgroup LCD_Public_Types LCD Public Types | |
| * @{ | |
| */ | |
| /*********************************************************************//** | |
| * @brief LCD enumeration | |
| **********************************************************************/ | |
| /** @brief LCD Interrupt Source */ | |
| typedef enum{ | |
| LCD_INT_FUF = _BIT(1), /* FIFO underflow bit */ | |
| LCD_INT_LNBU = _BIT(2), /* LCD next base address update bit */ | |
| LCD_INT_VCOMP = _BIT(3), /* vertical compare bit */ | |
| LCD_INT_BER = _BIT(4) /* AHB master error interrupt bit */ | |
| } LCD_INT_SRC; | |
| /** @brief LCD signal polarity */ | |
| typedef enum { | |
| LCD_SIGNAL_ACTIVE_HIGH = 0, | |
| LCD_SIGNAL_ACTIVE_LOW = 1 | |
| } LCD_SIGNAL_POLARITY_OPT; | |
| /** @brief LCD clock edge polarity */ | |
| typedef enum { | |
| LCD_CLK_RISING = 0, | |
| LCD_CLK_FALLING= 1 | |
| } LCD_CLK_EDGE_OPT; | |
| /** @brief LCD bits per pixel and pixel format */ | |
| typedef enum { | |
| LCD_BPP1 = 0, | |
| LCD_BPP2, | |
| LCD_BPP4, | |
| LCD_BPP8, | |
| LCD_BPP16, | |
| LCD_BPP24, | |
| LCD_BPP16_565, | |
| LCD_BPP12_444 | |
| }LCD_PIXEL_FORMAT_OPT; | |
| /** @brief LCD color format */ | |
| typedef enum { | |
| LCD_COLOR_FORMAT_RGB = 0, | |
| LCD_COLOR_FORMAT_BGR | |
| }LCD_COLOR_FORMAT_OPT; | |
| /*********************************************************************//** | |
| * @brief LCD structure definitions | |
| **********************************************************************/ | |
| /** @brief LCD Palette entry format */ | |
| typedef struct | |
| { | |
| uint32_t Rl:5; | |
| uint32_t Gl:5; | |
| uint32_t Bl:5; | |
| uint32_t Il:1; | |
| uint32_t Ru:5; | |
| uint32_t Gu:5; | |
| uint32_t Bu:5; | |
| uint32_t Iu:1; | |
| } LCD_PALETTE_ENTRY_Type; | |
| /** @brief LCD cursor format in 1 byte LBBP */ | |
| typedef struct | |
| { | |
| uint8_t Pixel3:2; | |
| uint8_t Pixel2:2; | |
| uint8_t Pixel1:2; | |
| uint8_t Pixel0:2; | |
| } LCD_CURSOR_PIXEL_Type; | |
| /** @brief LCD cursor size */ | |
| typedef enum | |
| { | |
| LCD_CURSOR_32x32 = 0, | |
| LCD_CURSOR_64x64 | |
| } LCD_CURSOR_SIZE_OPT; | |
| /** @brief LCD panel type */ | |
| typedef enum | |
| { | |
| LCD_TFT = 0x02, /* standard TFT */ | |
| LCD_MONO_4 = 0x01, /* 4-bit STN mono */ | |
| LCD_MONO_8 = 0x05, /* 8-bit STN mono */ | |
| LCD_CSTN = 0x00 /* color STN */ | |
| } LCD_PANEL_OPT; | |
| /** @brief LCD porch configuration structure */ | |
| typedef struct { | |
| uint16_t front; /* front porch setting in clocks */ | |
| uint16_t back; /* back porch setting in clocks */ | |
| }LCD_PORCHCFG_Type; | |
| /** @brief LCD configuration structure */ | |
| typedef struct { | |
| uint16_t screen_width; /* Pixels per line */ | |
| uint16_t screen_height; /* Lines per panel */ | |
| LCD_PORCHCFG_Type horizontal_porch; /* porch setting for horizontal */ | |
| LCD_PORCHCFG_Type vertical_porch; /* porch setting for vertical */ | |
| uint16_t HSync_pulse_width; /* HSYNC pulse width in clocks */ | |
| uint16_t VSync_pulse_width; /* VSYNC pulse width in clocks */ | |
| uint8_t ac_bias_frequency; /* AC bias frequency in clocks */ | |
| LCD_SIGNAL_POLARITY_OPT HSync_pol; /* HSYNC polarity */ | |
| LCD_SIGNAL_POLARITY_OPT VSync_pol; /* VSYNC polarity */ | |
| LCD_CLK_EDGE_OPT panel_clk_edge; /* Panel Clock Edge Polarity */ | |
| LCD_SIGNAL_POLARITY_OPT OE_pol; /* Output Enable polarity */ | |
| uint32_t line_end_delay; /* 0 if not use */ | |
| LCD_PIXEL_FORMAT_OPT bits_per_pixel; /* Maximum bits per pixel the display supports */ | |
| LCD_PANEL_OPT lcd_panel_type; /* LCD panel type */ | |
| LCD_COLOR_FORMAT_OPT color_format; /* BGR or RGB */ | |
| Bool dual_panel; /* Dual panel, TRUE = dual panel display */ | |
| uint16_t pcd; | |
| } LCD_CFG_Type; | |
| /** | |
| * @} | |
| */ | |
| /* Public Functions ----------------------------------------------------------- */ | |
| /** @defgroup LCD_Public_Functions LCD Public Functions | |
| * @{ | |
| */ | |
| void LCD_Init(LPC_LCD_Type *LCDx, LCD_CFG_Type *LCD_ConfigStruct); | |
| void LCD_DeInit(LPC_LCD_Type *LCDx); | |
| void LCD_Power(LPC_LCD_Type *LCDx, FunctionalState OnOff); | |
| void LCD_Enable(LPC_LCD_Type *LCDx, FunctionalState EnDis); | |
| void LCD_SetFrameBuffer(LPC_LCD_Type *LCDx, void* buffer); | |
| void LCD_SetLPFrameBuffer(LPC_LCD_Type *LCDx, void* buffer); | |
| void LCD_LoadPalette(LPC_LCD_Type *LCDx, void* palette); | |
| void LCD_SetInterrupt(LPC_LCD_Type *LCDx, LCD_INT_SRC Int); | |
| void LCD_ClrInterrupt(LPC_LCD_Type *LCDx, LCD_INT_SRC Int); | |
| LCD_INT_SRC LCD_GetInterrupt(LPC_LCD_Type *LCDx); | |
| void LCD_Cursor_Config(LPC_LCD_Type *LCDx, LCD_CURSOR_SIZE_OPT cursor_size, Bool sync); | |
| void LCD_Cursor_WriteImage(LPC_LCD_Type *LCDx, uint8_t cursor_num, void* Image); | |
| void* LCD_Cursor_GetImageBufferAddress(LPC_LCD_Type *LCDx, uint8_t cursor_num); | |
| void LCD_Cursor_Enable(LPC_LCD_Type *LCDx, uint8_t cursor_num, FunctionalState OnOff); | |
| void LCD_Cursor_LoadPalette0(LPC_LCD_Type *LCDx, uint32_t palette_color); | |
| void LCD_Cursor_LoadPalette1(LPC_LCD_Type *LCDx, uint32_t palette_color); | |
| void LCD_Cursor_SetInterrupt(LPC_LCD_Type *LCDx); | |
| void LCD_Cursor_ClrInterrupt(LPC_LCD_Type *LCDx); | |
| void LCD_Cursor_SetPos(LPC_LCD_Type *LCDx, uint16_t x, uint16_t y); | |
| void LCD_Cursor_SetClipPos(LPC_LCD_Type *LCDx, uint16_t x, uint16_t y); | |
| /** | |
| * @} | |
| */ | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* __LPC18XX_LCD_H_ */ | |
| /** | |
| * @} | |
| */ | |
| /* --------------------------------- End Of File ------------------------------ */ | |