210 lines
7.7 KiB
C
210 lines
7.7 KiB
C
/*****************************************************************************
|
|
* | File : EPD_IT8951.h
|
|
* | Author : Waveshare team
|
|
* | Function : IT8951 Common driver
|
|
* | Info :
|
|
*----------------
|
|
* | This version: V1.0
|
|
* | Date : 2019-09-17
|
|
* | Info :
|
|
* -----------------------------------------------------------------------------
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
# of this software and associated documnetation files (the "Software"), to deal
|
|
# in the Software without restriction, including without limitation the rights
|
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
# copies of the Software, and to permit persons to whom the Software is
|
|
# furished to do so, subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be included in
|
|
# all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
# THE SOFTWARE.
|
|
#
|
|
******************************************************************************/
|
|
#ifndef __EPD_IT8951_H_
|
|
#define __EPD_IT8951_H_
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "../Config/DEV_Config.h"
|
|
|
|
|
|
// INIT mode, for every init or some time after A2 mode refresh
|
|
extern UBYTE INIT_Mode;
|
|
// GC16 mode, for every time to display 16 grayscale image
|
|
extern UBYTE GC16_Mode;
|
|
// A2 mode, for fast refresh without flash
|
|
extern UBYTE A2_Mode;
|
|
|
|
|
|
typedef struct IT8951_Load_Img_Info
|
|
{
|
|
UWORD Endian_Type; //little or Big Endian
|
|
UWORD Pixel_Format; //bpp
|
|
UWORD Rotate; //Rotate mode
|
|
UDOUBLE Source_Buffer_Addr; //Start address of source Frame buffer
|
|
UDOUBLE Target_Memory_Addr; //Base address of target image buffer
|
|
}IT8951_Load_Img_Info;
|
|
|
|
typedef struct IT8951_Area_Img_Info
|
|
{
|
|
UWORD Area_X;
|
|
UWORD Area_Y;
|
|
UWORD Area_W;
|
|
UWORD Area_H;
|
|
}IT8951_Area_Img_Info;
|
|
|
|
typedef struct IT8951_Dev_Info
|
|
{
|
|
UWORD Panel_W;
|
|
UWORD Panel_H;
|
|
UWORD Memory_Addr_L;
|
|
UWORD Memory_Addr_H;
|
|
UWORD FW_Version[8];
|
|
UWORD LUT_Version[8];
|
|
}IT8951_Dev_Info;
|
|
|
|
/*-----------------------------------------------------------------------
|
|
IT8951 Command defines
|
|
------------------------------------------------------------------------*/
|
|
|
|
//Built in I80 Command Code
|
|
#define IT8951_TCON_SYS_RUN 0x0001
|
|
#define IT8951_TCON_STANDBY 0x0002
|
|
#define IT8951_TCON_SLEEP 0x0003
|
|
#define IT8951_TCON_REG_RD 0x0010
|
|
#define IT8951_TCON_REG_WR 0x0011
|
|
|
|
#define IT8951_TCON_MEM_BST_RD_T 0x0012
|
|
#define IT8951_TCON_MEM_BST_RD_S 0x0013
|
|
#define IT8951_TCON_MEM_BST_WR 0x0014
|
|
#define IT8951_TCON_MEM_BST_END 0x0015
|
|
|
|
#define IT8951_TCON_LD_IMG 0x0020
|
|
#define IT8951_TCON_LD_IMG_AREA 0x0021
|
|
#define IT8951_TCON_LD_IMG_END 0x0022
|
|
|
|
//I80 User defined command code
|
|
#define USDEF_I80_CMD_DPY_AREA 0x0034
|
|
#define USDEF_I80_CMD_GET_DEV_INFO 0x0302
|
|
#define USDEF_I80_CMD_DPY_BUF_AREA 0x0037
|
|
#define USDEF_I80_CMD_VCOM 0x0039
|
|
|
|
/*-----------------------------------------------------------------------
|
|
IT8951 Mode defines
|
|
------------------------------------------------------------------------*/
|
|
|
|
//Rotate mode
|
|
#define IT8951_ROTATE_0 0
|
|
#define IT8951_ROTATE_90 1
|
|
#define IT8951_ROTATE_180 2
|
|
#define IT8951_ROTATE_270 3
|
|
|
|
//Pixel mode (Bit per Pixel)
|
|
#define IT8951_2BPP 0
|
|
#define IT8951_3BPP 1
|
|
#define IT8951_4BPP 2
|
|
#define IT8951_8BPP 3
|
|
|
|
//Endian Type
|
|
#define IT8951_LDIMG_L_ENDIAN 0
|
|
#define IT8951_LDIMG_B_ENDIAN 1
|
|
|
|
/*-----------------------------------------------------------------------
|
|
IT8951 Registers defines
|
|
------------------------------------------------------------------------*/
|
|
//Register Base Address
|
|
#define DISPLAY_REG_BASE 0x1000 //Register RW access
|
|
|
|
//Base Address of Basic LUT Registers
|
|
#define LUT0EWHR (DISPLAY_REG_BASE + 0x00) //LUT0 Engine Width Height Reg
|
|
#define LUT0XYR (DISPLAY_REG_BASE + 0x40) //LUT0 XY Reg
|
|
#define LUT0BADDR (DISPLAY_REG_BASE + 0x80) //LUT0 Base Address Reg
|
|
#define LUT0MFN (DISPLAY_REG_BASE + 0xC0) //LUT0 Mode and Frame number Reg
|
|
#define LUT01AF (DISPLAY_REG_BASE + 0x114) //LUT0 and LUT1 Active Flag Reg
|
|
|
|
//Update Parameter Setting Register
|
|
#define UP0SR (DISPLAY_REG_BASE + 0x134) //Update Parameter0 Setting Reg
|
|
#define UP1SR (DISPLAY_REG_BASE + 0x138) //Update Parameter1 Setting Reg
|
|
#define LUT0ABFRV (DISPLAY_REG_BASE + 0x13C) //LUT0 Alpha blend and Fill rectangle Value
|
|
#define UPBBADDR (DISPLAY_REG_BASE + 0x17C) //Update Buffer Base Address
|
|
#define LUT0IMXY (DISPLAY_REG_BASE + 0x180) //LUT0 Image buffer X/Y offset Reg
|
|
#define LUTAFSR (DISPLAY_REG_BASE + 0x224) //LUT Status Reg (status of All LUT Engines)
|
|
#define BGVR (DISPLAY_REG_BASE + 0x250) //Bitmap (1bpp) image color table
|
|
|
|
//System Registers
|
|
#define SYS_REG_BASE 0x0000
|
|
|
|
//Address of System Registers
|
|
#define I80CPCR (SYS_REG_BASE + 0x04)
|
|
|
|
//Memory Converter Registers
|
|
#define MCSR_BASE_ADDR 0x0200
|
|
#define MCSR (MCSR_BASE_ADDR + 0x0000)
|
|
#define LISAR (MCSR_BASE_ADDR + 0x0008)
|
|
|
|
|
|
/*
|
|
void EPD_IT8951_SystemRun();
|
|
void EPD_IT8951_Standby();
|
|
void EPD_IT8951_Sleep();
|
|
|
|
UWORD EPD_IT8951_ReadReg(UWORD Reg_Address);
|
|
void EPD_IT8951_WriteReg(UWORD Reg_Address,UWORD Reg_Value);
|
|
UWORD EPD_IT8951_GetVCOM(void);
|
|
void EPD_IT8951_SetVCOM(UWORD VCOM);
|
|
|
|
void EPD_IT8951_LoadImgStart( IT8951_Load_Img_Info* Load_Img_Info );
|
|
void EPD_IT8951_LoadImgAreaStart( IT8951_Load_Img_Info* Load_Img_Info, IT8951_Area_Img_Info* Area_Img_Info );
|
|
void EPD_IT8951_LoadImgEnd(void);
|
|
|
|
void EPD_IT8951_GetSystemInfo(void* Buf);
|
|
void EPD_IT8951_SetTargetMemoryAddr(UDOUBLE Target_Memory_Addr);
|
|
void EPD_IT8951_WaitForDisplayReady(void);
|
|
|
|
|
|
void EPD_IT8951_HostAreaPackedPixelWrite_8bp(IT8951_Load_Img_Info*Load_Img_Info,IT8951_Area_Img_Info*Area_Img_Info);
|
|
|
|
void EPD_IT8951_HostAreaPackedPixelWrite_1bp(IT8951_Load_Img_Info*Load_Img_Info,IT8951_Area_Img_Info*Area_Img_Info, bool Packed_Write);
|
|
|
|
void EPD_IT8951_HostAreaPackedPixelWrite_2bp(IT8951_Load_Img_Info*Load_Img_Info,IT8951_Area_Img_Info*Area_Img_Info, bool Packed_Write);
|
|
|
|
void EPD_IT8951_Display_Area(UWORD X,UWORD Y,UWORD W,UWORD H,UWORD Mode);
|
|
void EPD_IT8951_Display_AreaBuf(UWORD X,UWORD Y,UWORD W,UWORD H,UWORD Mode, UDOUBLE Target_Memory_Addr);
|
|
|
|
void EPD_IT8951_Display_1bp(UWORD X, UWORD Y, UWORD W, UWORD H, UWORD Mode,UDOUBLE Target_Memory_Addr, UBYTE Front_Gray_Val, UBYTE Back_Gray_Val);
|
|
*/
|
|
|
|
void Enhance_Driving_Capability(void);
|
|
|
|
void EPD_IT8951_SystemRun(void);
|
|
|
|
void EPD_IT8951_Standby(void);
|
|
|
|
void EPD_IT8951_Sleep(void);
|
|
|
|
IT8951_Dev_Info EPD_IT8951_Init(UWORD VCOM);
|
|
|
|
void EPD_IT8951_Clear_Refresh(IT8951_Dev_Info Dev_Info,UDOUBLE Target_Memory_Addr, UWORD Mode);
|
|
|
|
void EPD_IT8951_1bp_Refresh(UBYTE* Frame_Buf, UWORD X, UWORD Y, UWORD W, UWORD H, UBYTE Mode, UDOUBLE Target_Memory_Addr, bool Packed_Write);
|
|
void EPD_IT8951_1bp_Multi_Frame_Write(UBYTE* Frame_Buf, UWORD X, UWORD Y, UWORD W, UWORD H,UDOUBLE Target_Memory_Addr, bool Packed_Write);
|
|
void EPD_IT8951_1bp_Multi_Frame_Refresh(UWORD X, UWORD Y, UWORD W, UWORD H,UDOUBLE Target_Memory_Addr);
|
|
|
|
void EPD_IT8951_2bp_Refresh(UBYTE* Frame_Buf, UWORD X, UWORD Y, UWORD W, UWORD H, bool Hold, UDOUBLE Target_Memory_Addr, bool Packed_Write);
|
|
|
|
void EPD_IT8951_4bp_Refresh(UBYTE* Frame_Buf, UWORD X, UWORD Y, UWORD W, UWORD H, bool Hold, UDOUBLE Target_Memory_Addr, bool Packed_Write);
|
|
|
|
void EPD_IT8951_8bp_Refresh(UBYTE *Frame_Buf, UWORD X, UWORD Y, UWORD W, UWORD H, bool Hold, UDOUBLE Target_Memory_Addr);
|
|
|
|
|
|
|
|
#endif
|