mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
446038fd36
update setting for all project file respectively
229 lines
7.2 KiB
C
229 lines
7.2 KiB
C
/**********************************************************************
|
||
* $Id$ lpc43xx_lcd.h 2011-06-02
|
||
*//**
|
||
* @file lpc43xx_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.
|
||
* Permission to use, copy, modify, and distribute this software and its
|
||
* documentation is hereby granted, under NXP Semiconductors<72>
|
||
* relevant copyright in the software, without fee, provided that it
|
||
* is used in conjunction with NXP Semiconductors microcontrollers. This
|
||
* copyright, permission, and disclaimer notice must appear in all copies of
|
||
* this code.
|
||
**********************************************************************/
|
||
|
||
/* Peripheral group ----------------------------------------------------------- */
|
||
/** @defgroup LCD LCD
|
||
* @ingroup LPC4300CMSIS_FwLib_Drivers
|
||
* @{
|
||
*/
|
||
|
||
#ifndef __lpc43xx_LCD_H_
|
||
#define __lpc43xx_LCD_H_
|
||
|
||
/* Includes ------------------------------------------------------------------- */
|
||
#include "LPC43xx.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 corlor_format; /* BGR or RGB */
|
||
Bool dual_panel; /* Dual panel, TRUE = dual panel display */
|
||
} 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 /* __lpc43xx_LCD_H_ */
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/* --------------------------------- End Of File ------------------------------ */
|