⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c_api.h

📁 三星ic 9980的源代码. 718版.
💻 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 + -