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

📄 i2c.h

📁 标准 C语言 I2C程序
💻 H
字号:
#ifndef _I2C_H_
#define _I2C_H_

#ifdef _I2C_C_
  #define _I2CDEC_
#else
  #define _I2CDEC_ extern
#endif

#include	"com.h"
#include	"cpu8052.h"
#include	"main.h"


#define	EEPROM        	0xAC		//;24C04 000-255字节
#define	EEPROM_TV  	0xAE		//;24C04 256-511字节
#define	PCF8563	0xA2	 	//;写地址(时钟)
#define	M52795		    0x90	//;AV开关芯片地址
#define	PT2313		    0x88		//;音频处理IC地址
#define	XC2028		    0xC2		//;电视调谐器地址
#define	MST726A	0x6E		//;MST726A ADDR
#define	TSC2003	0x90  

#define	_Nop()  _nop_()


//	;EEPROM前256字节定义
//	;==============================

#define	EEPROM_NEW_OLD_ID	2		//;存储器新旧标志

#define	BRI_STORE		4		//;存储亮度
#define	CON_STORE		5		//;存储
#define	COL_STORE		6		//;存储亮度
#define	VIDEO_BRI_MODE_STORE	8		//;视频模式存储位置

#define	VOLUME_STORE		9		//;音量
#define	BASS_STORE		       10		//;低音
#define	TREBLE_STORE		11		//;高音
#define	BALBANCE_STORE	12		//;左右平衡
#define	FADER_STORE		13		//;前后平衡
#define	EQ_STORE		        14		//;EQ值

#define	      LANG_STORE			16		//;语言存储位置

#define	VCOM_DC			       17		//;VCOM DC(A0)
#define	VCOM_AC			       18		//;VCOM AC(80)

#define	IN_STATION_STORE	20

//#define	LCD_MIN_POSTION		22		//;显示器最小角度
//#define	LCD_MAX_POSTION		23		//;显示器最大角度
#define LCD_OFF_POSTION		24		//;显示器OFF角度值存储位置
#define LCD_EJECT_POSTION   	25		//;显示器DVD EJECT角度值存储位置


//	FM1   0x1E---0x2E    共8个频道
#define	FM1_STORE_0CH_H	 	30		//1EH
#define	FM1_STORE_0CH_L	 	31

//	FM2    ;FM1   0x2E---0x3E    共8个频道
#define	FM2_STORE_0CH_H	 	46		//2EH
#define	FM2_STORE_0CH_L	 	47

//	AM1   ;FM1   0x70---0x89    共8个频道
#define	AM_STORE_0CH_H	 	62		//16H
#define	AM_STORE_0CH_L	 	63

#define	Steer_EErom_ID         80		//方向盘设置标志
#define	Steer_AD_value   	 81		//方向盘AD设置值

#define	AM_STEP_SIZE_STORE	90		//N参考频率1K,AM步进=09K(有些国家步进10K)
#define	AM_MIN_DATA_L_STORE	91
#define	AM_MAX_DATA_L_STORE	92
#define	TV_MAX_CHANNEL_STORE 	93		//;电视自动存储节目数量
#define	END_TV_CHENNEL		94		//;关机时所在频道
#define	END_TV_TUNE_DATA_H	95		//;电视关机存储调谐数据高字节
#define	END_TV_TUNE_DATA_L	96		//;电视关机存储调谐数据低字节
#define	TV_SOUND_SYSTEM_STORE	97		//;电视声音制式存储
#define	TV_COLOR_SYSTEM_STORE	98		//;电视彩色制式存储

	//;上次关机时的电台频道
#define	BAND_STATION_STORE	100		//;波段状态(0=FM1,1=FM2,2=AM)
#define	CLOSE_FM1_CHENNEL	101		//;关机时FM所在频道
#define	END_STORE_FM1_CHANNEL_H		102
#define	END_STORE_FM1_CHANNEL_L		103
#define	CLOSE_FM2_CHENNEL		       104		//;关机时FM所在频道
#define	END_STORE_FM2_CHANNEL_H		105
#define	END_STORE_FM2_CHANNEL_L		106
#define	CLOSE_AM_CHENNEL		107		//;关机时FM所在频道
#define	END_STORE_AM_CHANNEL_H		108
#define	END_STORE_AM_CHANNEL_L		109


#define		BUZZER_ID_ADD          110    //按键声开关
#define	       GPS_MODE_STORE 	  111   //GPS播放模式
#define		AM_TYPE	                112   //=0 9K  =1 10K
#define		CCFL_BRIGHT_ADD       113
#define		BRAKE_ID_ADDR           114
#define		CLOCK_ID_ADDR           115
#define		GPS_CVBS_ADDR           116
#define		LCD_COLOR_ADDR         117
#define		LAMP_COLOR_ADDR       118
#define		NIGHT_MODE_ADDR       119
#define		SD_SETUP_ADDR            120


#define		K_XOS   	    124  //触摸屏校正
#define		XOFFSET    125	
#define		K_POS        126
#define		YFFSET       127







	//;只初始化到127

	//;EEPROM后256字节定义
	//;001-200电视节目存储(存储节目数共100个频道,200个字节)
#define	TV_STORE_SATRT_ADDR_H		1
#define	TV_STORE_SATRT_ADDR_L		2

_I2CDEC_ Byte   Buff[24]; 		// IIC发送缓存

typedef enum i2c_Type
{ Normal_I2c,
  Tsc2003_I2c
} I2C_Type;

typedef enum i2c_direction
{ I2C_WRITE,
  I2C_READ
} I2C_Direction;

#define I2C_ACKNOWLEDGE        _LOW
#define I2C_NON_ACKNOWLEDGE    _HIGH
#define I2C_CHECK_PIN_DUMMY  1000   //us

#define I2C_DEVICE_ADR_WRITE(slave_adr)   (slave_adr & ~_BIT0)
#define I2C_DEVICE_ADR_READ(slave_adr)    (slave_adr | _BIT0)
#define I2C_ACCESS_DUMMY_TIME   		 10  //tjiger

#define i2cSetSCL(is_hl)  	P_SCL=is_hl
#define i2cSetSDA(is_hl)	P_SDA=is_hl

#define i2cSCL_PIN_STATUS()	P_SCL
#define i2cSDA_PIN_STATUS() P_SDA

#define i2cSetSCL_Tsc2003(is_hl)  	P_SCL=is_hl
#define i2cSetSDA_Tsc2003(is_hl)	P_Touch_SDA=is_hl

#define i2cSCL_PIN_Status_Tsc2003()		P_SCL
#define i2cSDA_PIN_STATUS_Tsc2003() 	P_Touch_SDA

_I2CDEC_ void Eeprom_Init(void);
_I2CDEC_ void Send_EEprom_Data(Byte ucSlaveAdr,Byte ucSubAdr, Byte *pBuf, Byte ucBufLen);



_I2CDEC_ bit i2c_Start();
_I2CDEC_ bit i2c_SendByte(Byte ucVal);
_I2CDEC_ void i2c_Stop();
_I2CDEC_ Byte i2c_ReceiveByte(bit bAck);

_I2CDEC_ void i2cBurstCurrent_Write(Byte ucSlaveAdr, Byte *pBuf, Byte ucBufLen);
_I2CDEC_ void i2cBurstCurrent_Read(Byte ucSlaveAdr, Byte *pBuf, Byte ucBufLen);

_I2CDEC_ void i2c_WriteTBL(Byte deviceID, Word addr, Byte *buffer, Byte count);
_I2CDEC_ void i2cWriteByte(Byte deviceID, Byte addr, Byte value);
_I2CDEC_ void i2cBurstReadBytes(Byte ucSlaveAdr, Byte ucSubAdr, Byte *pBuf, Byte ucBufLen);
_I2CDEC_ void i2cBurstWriteBytes(Byte ucSlaveAdr, Byte ucSubAdr, Byte *pBuf, Byte ucBufLen);
_I2CDEC_ bit i2c_AccessStart(Byte ucSlaveAdr, I2C_Direction trans_t);


_I2CDEC_ void i2cSetSCL_Chk_Tsc2003(bit bSet);
_I2CDEC_ void i2cSetSDA_Chk_Tsc2003(bit bSet);
_I2CDEC_ void i2c_Delay_Tsc2003(void);
_I2CDEC_ bit i2c_Start_Tsc2003();
_I2CDEC_ void i2c_Stop_Tsc2003();
_I2CDEC_ bit i2c_SendByte_Tsc2003(uchar ucVal);
_I2CDEC_ uchar ii2c_ReceiveByte_Tsc2003(bit bAck);
_I2CDEC_ bit i2c_AccessStart_Tsc2003(uchar ucSlaveAdr, I2C_Direction trans_t);
_I2CDEC_ void i2cBurstCurrent_Write_Tsc2003(uchar ucSlaveAdr, uchar *pBuf, uchar ucBufLen);
_I2CDEC_ void i2cBurstCurrent_Read_Tsc2003(uchar ucSlaveAdr, uchar *pBuf, uchar ucBufLen);
_I2CDEC_ void i2cBurstCurrent_Write_Tsc2003(uchar ucSlaveAdr, uchar *pBuf, uchar ucBufLen);
_I2CDEC_ void i2cBurstCurrent_Read_Tsc2003(uchar ucSlaveAdr, uchar *pBuf, uchar ucBufLen);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -