simtrace2/sam3s_example/atmel_softpack_libraries/libboard_sam3s-ek/include/ili9325.h

183 lines
8.8 KiB
C

/* ----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support
* ----------------------------------------------------------------------------
* Copyright (c) 2009, Atmel Corporation
*
* 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 disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL 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
*
* Interface of ILI9325 driver.
*
*/
#ifndef _ILI9325_
#define _ILI9325_
/*----------------------------------------------------------------------------
* Headers
*----------------------------------------------------------------------------*/
#include "board.h"
#include <stdint.h>
typedef uint32_t LcdColor_t ;
/*----------------------------------------------------------------------------
* Definitions
*----------------------------------------------------------------------------*/
/* ILI9325 ID code */
#define ILI9325_DEVICE_CODE 0x9325
/* ILI9325 LCD Registers */
#define ILI9325_R00H 0x00 /* Driver Code Read */
#define ILI9325_R01H 0x01 /* Driver Output Control 1 */
#define ILI9325_R01H_SS ((uint16_t)0x0100)
#define ILI9325_R01H_SM ((uint16_t)0x0400)
#define ILI9325_R02H 0x02 /* LCD Driving Control */
#define ILI9325_R03H 0x03 /* Entry Mode */
#define ILI9325_R03H_AM ((uint16_t)0x0008) /* AM Control the GRAM update direction */
#define ILI9325_R03H_ID0 ((uint16_t)0x0010) /* I/D[1:0] Control the address counter */
#define ILI9325_R03H_ID1 ((uint16_t)0x0020)
#define ILI9325_R03H_ORG ((uint16_t)0x0080)
#define ILI9325_R03H_HWM ((uint16_t)0x0200)
#define ILI9325_R03H_BGR ((uint16_t)0x1000)
#define ILI9325_R03H_DFM ((uint16_t)0x4000)
#define ILI9325_R03H_TRI ((uint16_t)0x8000)
#define ILI9325_R04H 0x04 /* Resize Control */
#define ILI9325_R07H 0x07 /* Display Control 1 */
#define ILI9325_R07H_D0 ((uint16_t)0x0001)
#define ILI9325_R07H_D1 ((uint16_t)0x0002)
#define ILI9325_R07H_CL ((uint16_t)0x0008)
#define ILI9325_R07H_DTE ((uint16_t)0x0010)
#define ILI9325_R07H_GON ((uint16_t)0x0020)
#define ILI9325_R07H_BASEE ((uint16_t)0x0100)
#define ILI9325_R07H_PTDE0 ((uint16_t)0x1000)
#define ILI9325_R07H_PTDE1 ((uint16_t)0x2000)
#define ILI9325_R08H 0x08 /* Display Control 2 */
#define ILI9325_R09H 0x09 /* Display Control 3 */
#define ILI9325_R0AH 0x0A /* Display Control 4 */
#define ILI9325_R0CH 0x0C /* RGB Display Interface Control 1 */
#define ILI9325_R0DH 0x0D /* Frame Maker Position */
#define ILI9325_R0FH 0x0F /* RGB Display Interface Control 2 */
#define ILI9325_R10H 0x10 /* Power Control 1 */
#define ILI9325_R11H 0x11 /* Power Control 2 */
#define ILI9325_R12H 0x12 /* Power Control 3 */
#define ILI9325_R13H 0x13 /* Power Control 4 */
#define ILI9325_R20H 0x20 /* Horizontal GRAM Address Set */
#define ILI9325_R21H 0x21 /* Vertical GRAM Address Set */
#define ILI9325_R22H 0x22 /* Write Data to GRAM */
#define ILI9325_R29H 0x29 /* Power Control 7 */
#define ILI9325_R2BH 0x2B /* Frame Rate and Color Control */
#define ILI9325_R30H 0x30 /* Gamma Control 1 */
#define ILI9325_R31H 0x31 /* Gamma Control 2 */
#define ILI9325_R32H 0x32 /* Gamma Control 3 */
#define ILI9325_R35H 0x35 /* Gamma Control 4 */
#define ILI9325_R36H 0x36 /* Gamma Control 5 */
#define ILI9325_R37H 0x37 /* Gamma Control 6 */
#define ILI9325_R38H 0x38 /* Gamma Control 7 */
#define ILI9325_R39H 0x39 /* Gamma Control 8 */
#define ILI9325_R3CH 0x3C /* Gamma Control 9 */
#define ILI9325_R3DH 0x3D /* Gamma Control 10 */
#define ILI9325_R50H 0x50 /* Horizontal Address Start Position */
#define ILI9325_R51H 0x51 /* Horizontal Address End Position */
#define ILI9325_R52H 0x52 /* Vertical Address Start Position */
#define ILI9325_R53H 0x53 /* Vertical Address End Position */
#define ILI9325_R60H 0x60 /* Driver Output Control 2 */
#define ILI9325_R60H_GS ((uint16_t)0x8000)
#define ILI9325_R61H 0x61 /* Base Image Display Control */
#define ILI9325_R6AH 0x6A /* Vertical Scroll Control */
#define ILI9325_R80H 0x80 /* Partial Image 1 Display Position */
#define ILI9325_R81H 0x81 /* Partial Image 1 Area (Start Line) */
#define ILI9325_R82H 0x82 /* Partial Image 1 Area (End Line) */
#define ILI9325_R83H 0x83 /* Partial Image 2 Display Position */
#define ILI9325_R84H 0x84 /* Partial Image 2 Area (Start Line) */
#define ILI9325_R85H 0x85 /* Partial Image 2 Area (End Line) */
#define ILI9325_R90H 0x90 /* Panel Interface Control 1 */
#define ILI9325_R92H 0x92 /* Panel Interface Control 2 */
#define ILI9325_R95H 0x95 /* Panel Interface Control 4 */
#define ILI9325_RA1H 0xA1 /* OTP VCM Programming Control */
#define ILI9325_RA2H 0xA2 /* OTP VCM Status and Enable */
#define ILI9325_RA5H 0xA5 /* OTP Programming ID Key */
/*----------------------------------------------------------------------------
* Types
*----------------------------------------------------------------------------*/
typedef volatile uint8_t REG8;
/*----------------------------------------------------------------------------
* Marcos
*----------------------------------------------------------------------------*/
/** LCD index register address */
#define LCD_IR() (*((REG8 *)(BOARD_LCD_BASE)))
/** LCD status register address */
#define LCD_SR() (*((REG8 *)(BOARD_LCD_BASE)))
/** LCD data address */
#define LCD_D() (*((REG8 *)((uint32_t)(BOARD_LCD_BASE) + BOARD_LCD_RS)))
/*----------------------------------------------------------------------------
* Exported functions
*----------------------------------------------------------------------------*/
extern void LCD_WriteRAM_Prepare( void );
extern void LCD_WriteRAM( LcdColor_t dwColor );
extern void LCD_ReadRAM_Prepare( void );
extern uint32_t LCD_ReadRAM( void );
extern uint32_t LCD_Initialize( void );
extern void LCD_On( void );
extern void LCD_Off( void );
extern void LCD_PowerDown( void );
extern uint32_t LCD_SetColor(uint32_t dwRgb24Bits);
extern void LCD_SetCursor( uint16_t x, uint16_t y );
extern void LCD_SetWindow( uint32_t dwX, uint32_t dwY, uint32_t dwWidth, uint32_t dwHeight );
extern void LCD_SetDisplayLandscape( uint32_t dwRGB );
extern void LCD_SetDisplayPortrait( uint32_t dwRGB );
extern void LCD_VerticalScroll( uint16_t wY );
extern void LCD_SetPartialImage1( uint32_t dwDisplayPos, uint32_t dwStart, uint32_t dwEnd );
extern void LCD_SetPartialImage2( uint32_t dwDisplayPos, uint32_t dwStart, uint32_t dwEnd );
extern uint32_t LCD_DrawPixel( uint32_t x, uint32_t y );
extern void LCD_TestPattern( uint32_t dwRGB );
extern uint32_t LCD_DrawFilledRectangle( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2 );
extern uint32_t LCD_DrawPicture( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2, const LcdColor_t *pBuffer );
extern uint32_t LCD_DrawLine ( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2 );
extern uint32_t LCD_DrawCircle( uint32_t dwX, uint32_t dwY, uint32_t dwR );
extern uint32_t LCD_DrawFilledCircle( uint32_t dwX, uint32_t dwY, uint32_t dwRadius);
extern uint32_t LCD_DrawRectangle( uint32_t dwX1, uint32_t dwY1, uint32_t dwX2, uint32_t dwY2 );
extern void LCD_SetBacklight (uint32_t level);
#endif /* #ifndef ILI9325 */