📄 i2c_api.h
字号:
/******************************************************************************
* Filename : I2C_api.h *
* Start date : *
* By : S.C.Kwon *
* Contact : *
* Description : low level api headers.(for only high level api) *
* *
******************************************************************************
*/
#ifndef __I2C_H__
#define __I2C_H__
#ifdef __cplusplus
extern "C" {
#endif
#define EEPROM_ADDRESS 0xA0
#define EEPROM_SIZE 0x80
/* Added by tj to support EEPROM page write/read in 06.16.04 */
#if _SUPPORT_EEPROM_PAGE_ACCESS
extern volatile UCHAR gEeprom_dump[];
#define EEPROM_DUMP_ADDR_GLOBAL 0x00
#define EEPROM_DUMP_NUM_GLOBAL 2
#define EEPROM_DUMP_ADDR_APPL 0x20
#define EEPROM_DUMP_NUM_APPL 5
#define EEPROM_DUMP_ADDR_CHECK 0x70
#define EEPROM_DUMP_NUM_CHECK 1
#endif
/*
* To control EEPROM
*/
#define EEPROM_ADDRESS_OFFSET 0x05 /* this is for safety */
#define EEPROM_ADDRESS_OPEN_CMD 0x7E /* This is for _DVS_TRINO_ */
#define EEPROM_ADDRESS_PARK 0x7F
/***********************************************************/
#if DOUBLE_LOGO_IIC//by May 060417
#define EEPROM_2LOGO_FLAG 127 //9
#endif
/***********************************************************/
#if MAY_POWER_RESUME//maymeng 051011 added
//++++++++++++++++++++++++++++++++++++++++++++++/
//must not modify location
//any location which customer want define must >=8
#define EEPROM_DISCTYPE EEPROM_ADDRESS_OFFSET + 0//0
#define EEPROM_TOTAL_TRK EEPROM_DISCTYPE +1 //1
#define EEPROM_TOTAL_MIN EEPROM_TOTAL_TRK +1//2
#define EEPROM_TOTAL_SEC EEPROM_TOTAL_MIN +1//3
#define EEPROM_PLAY_TRK EEPROM_TOTAL_SEC +1//4
#define EEPROM_PLAY_MIN EEPROM_PLAY_TRK +1//5
#define EEPROM_PLAY_SEC EEPROM_PLAY_MIN +1//6
#define EEPROM_PLAY_FRM EEPROM_PLAY_SEC +1//7
#define EEPROM_NORMAL_STOP EEPROM_PLAY_FRM +1//8
#define EEPROM_MP3FILE_CNT EEPROM_TOTAL_TRK//1
#define EEPROM_MP3DIR_CNT EEPROM_TOTAL_MIN//2
#define EEPROM_MP3DIR_NOW EEPROM_PLAY_MIN
#define EEPROM_MP3TRK_NOW EEPROM_PLAY_SEC
#define EEPROM_MP3NORMAL_STOP EEPROM_NORMAL_STOP//8
//++++++++++++++++++++++++++++++++++++++++++++++
//***********************************************************/
#ifdef SUPPORT_REC_MANY_DISC
#define RECORD_MAXVCD_NUM 3
#define RECORD_MAXCD_NUM 3
#define RECORD_MP3_START (RECORD_MAXVCD_NUM+RECORD_MAXCD_NUM)
#define RECORD_MAXMP3_NUM 1
#define VCD_RECED_NUM_LOC (RECORD_MP3_START+RECORD_MAXMP3_NUM)*8
#define CDDA_RECED_NUM_LOC VCD_RECED_NUM_LOC+1
#define MP3_RECED_NUM_LOC CDDA_RECED_NUM_LOC+1
#endif
//#ifdef USE_DOUBLE_LOGO
//#define DOUBLE_LOGO_LOC 126
//#endif
//#ifdef SUPPORT_STORE_VOLUME
//#define EEPROM_VOLUME_LOC 127
#else
#define ROM_ADDR_GLOBAL EEPROM_ADDRESS_OFFSET + 0
#define ROM_ADDR_COUNTRY ROM_ADDR_GLOBAL + 1
#define ROM_ADDR_LANG_SETUP ROM_ADDR_COUNTRY + 2
#define ROM_ADDR_LANG_MENU ROM_ADDR_LANG_SETUP + 2
#define ROM_ADDR_LANG_AUDIO ROM_ADDR_LANG_MENU + 2
#define ROM_ADDR_LANG_SUBTITLE ROM_ADDR_LANG_AUDIO + 2
#define ROM_ADDR_AUDIO_OUT ROM_ADDR_LANG_SUBTITLE + 2
#define ROM_ADDR_DISPLAY_TYPE ROM_ADDR_AUDIO_OUT + 2
#define ROM_ADDR_REGION_CODE ROM_ADDR_DISPLAY_TYPE + 2
#define ROM_ADDR_ADULT_INFO ROM_ADDR_REGION_CODE + 1
#define ROM_ADDR_LANG_EXT_AUDIO ROM_ADDR_ADULT_INFO + 4
#define ROM_ADDR_LANG_EXT_SP ROM_ADDR_LANG_EXT_AUDIO + 1 /* 1byte */
#define ROM_ADDR_VIDEO_SET ROM_ADDR_LANG_EXT_SP + 1 // 25~26(19~1a)
#define ROM_ADDR_APPL_RESUME 0x1E
#define ROM_ADDR_RESUME_FLAG ROM_ADDR_APPL_RESUME + 0
/* For DVD Video case */
#define ROM_ADDR_DVD_HLBT ROM_ADDR_RESUME_FLAG + 1 /* Highlight btn*/
#define ROM_ADDR_DVD_NVPCK ROM_ADDR_DVD_HLBT + 1 /* NV pack */
#define ROM_ADDR_DVD_CN ROM_ADDR_DVD_NVPCK + 4 /* Cell # */
#define ROM_ADDR_DVD_PGCN ROM_ADDR_DVD_CN + 1
#define ROM_ADDR_DVD_FPGCN ROM_ADDR_DVD_PGCN + 2 /* First PGCN */
#define ROM_ADDR_DVD_TTN ROM_ADDR_DVD_FPGCN + 2 /* Title # */
#define ROM_ADDR_DVD_ANGLE ROM_ADDR_DVD_TTN + 1 /* 1 byte */
#define ROM_ADDR_DVD_GPRM ROM_ADDR_DVD_ANGLE + 1
#define ROM_ADDR_DVD_NV_TIMER ROM_ADDR_DVD_GPRM + 32
#define ROM_ADDR_DVD_NV_PGCN ROM_ADDR_DVD_NV_TIMER + 2
#define ROM_ADDR_DVD_AUDIO_ID ROM_ADDR_DVD_NV_PGCN + 2
#define ROM_ADDR_DVD_GPRM_MODE ROM_ADDR_DVD_AUDIO_ID + 1
#define ROM_ADDR_DVD_SUBTITLE_ID ROM_ADDR_DVD_GPRM_MODE + 1
/* For xVCD case */
#define ROM_ADDR_XVCD_START_MIN ROM_ADDR_RESUME_FLAG + 1 /* Start MSF */
#define ROM_ADDR_XVCD_START_SEC ROM_ADDR_XVCD_START_MIN + 1
#define ROM_ADDR_XVCD_START_FRAME ROM_ADDR_XVCD_START_SEC + 1
#define ROM_ADDR_XVCD_TRACK_NUM ROM_ADDR_XVCD_START_FRAME + 1 /* 4 byte */
#define ROM_ADDR_XVCD_ITEM ROM_ADDR_XVCD_TRACK_NUM + 4
#define ROM_ADDR_XVCD_STATE ROM_ADDR_XVCD_ITEM + 1
#define ROM_ADDR_XVCD_PSD_OFFSET ROM_ADDR_XVCD_STATE + 1 /* 4 byte */
#define ROM_ADDR_XVCD_SEQ_HOR ROM_ADDR_XVCD_PSD_OFFSET + 4 /* Horizontal */
#define ROM_ADDR_XVCD_SEQ_VER ROM_ADDR_XVCD_SEQ_HOR + 4 /* Vertical */
#define ROM_ADDR_XVCD_SEQ_EXT ROM_ADDR_XVCD_SEQ_VER + 4 /* Extension */
#define ROM_ADDR_XVCD_SEQ_MODE ROM_ADDR_XVCD_SEQ_EXT + 4 /* MPEG mode 1byte */
/* for CD-DA case */
#define ROM_ADDR_CDDA_TRACK_NUM ROM_ADDR_RESUME_FLAG + 1
#define ROM_ADDR_CDDA_START_MIN ROM_ADDR_CDDA_TRACK_NUM + 1
#define ROM_ADDR_CDDA_START_SEC ROM_ADDR_CDDA_START_MIN + 1
#define ROM_ADDR_CDDA_START_FRAME ROM_ADDR_CDDA_START_SEC + 1 /* 1 byte */
#endif//end of maymeng 051011 power resume
#define EEPROM_ADDRESS_VALID_CHECK 0x60//0x70
#define EEPROM_VALID_CHECK_COUNT 10
/*
* data types
*/
#define EEPROM_VALID_DATA_CHECK 0x5A /* EEPROM data check */
/*********************************************
* Data types
*********************************************/
typedef enum {
I2C_SlaveRx,
I2C_SlaveTx,
I2C_MasterRx,
I2C_MasterTx
}I2C_Mode_t;
typedef enum {
I2C_CmdSTOP,
I2C_CmdSTART
}I2C_Cmd_t;
/*********************************************
* Define
*********************************************/
#define I2C_ACK 7
#define I2C_512CK 6
#define I2C_PENDING (1<<4)
#define I2C_PRESCALE 0x2//0xf /* PCLK/512/4
#define I2C_BusBusy (1<<5)
#define I2C_Enable (1<<4)
#define I2C_AckFlag 0
#define I2C_SLAVE 1 /* S5H5002 Slave address */
/*********************************************
* Functions Define
*********************************************/
void I2C_Initilize(void);
void I2C_Stop(void);
void I2C_SlaveAddress(UCHAR device_address, UCHAR word_address);
void I2C_WriteByte(UCHAR data);
UCHAR I2C_ReadByte(void);
void I2C_ReadMode(UCHAR word_address);
void I2C_RandomByteWrite(UCHAR slave_add, UCHAR word_add, UCHAR data);
void I2C_PageWrite(UCHAR slave_add, UCHAR word_add, UCHAR write_num, UCHAR *data_ptr);
void I2C_PageRead(UCHAR slave_add, UCHAR word_add, UCHAR read_num, UCHAR *data_ptr);
UCHAR I2C_RandomByteRead(UCHAR slave_add, UCHAR word_add);
UCHAR I2C_CurrentRead(UCHAR slave_add);
void I2C_SequentialRead(UCHAR slave_add, UCHAR read_num, UCHAR *data_ptr);
void I2C_CheckComplete(void); //added by steven 2004.7.2
//maymeng 051011 added
UCHAR SL_readEepromByte( UCHAR addr );
void SL_writeEepromByte( UCHAR addr, UCHAR data );
/*------------------------------------------------------------------------------*/
#if DOUBLE_LOGO_IIC//By May 060417
#define SL9908_Save_Logoa() SL_writeEepromByte(EEPROM_2LOGO_FLAG, 0xba)
#define SL9908_Save_Logoa1() SL_writeEepromByte(EEPROM_2LOGO_FLAG, 0xab)
#define SL9908_Load_LogoFlag() SL_readEepromByte(EEPROM_2LOGO_FLAG)
#endif
#ifdef __cplusplus
}
#endif
#endif /*__I2C_H__*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -