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

📄 i2c.h

📁 基于lpc2103的arm7代码
💻 H
字号:
/*********************************************************************************************************
**文件名称:I2CINT.c
**功能说明:硬件I2C中断方式软件包头文件。
**使用说明:软件包采用中断方式进行操作。
********************************************************************************************************/
#ifndef	I2CINT_H
#define	I2CINT_H

/*子地址结构*/
#define	ONE_BYTE_SUBA	1
#define	TWO_BYTE_SUBA	2
#define	X_ADD_8_SUBA	3

//LM75
#define LM75A_ADDR      0x90

//24C256
typedef enum 
{
	EEPROM_ERROR_NONE, 
        EEPROM_ERROR_READ, 
        EEPROM_ERROR_WRITE, 
        EEPROM_ERROR_VERIFY
} eeprom_error_t;

#define EEPROM_ADDR     0xA0

#define EEPROM_TYPE        02 // 24C02
#define EEPROM_BLOCK_SIZE  64
#define EEPROM_Kbits       EEPROM_TYPE
#define EEPROM_Kbytes      (EEPROM_Kbits / 8)
#define EEPROM_SIZE        (unsigned int)(EEPROM_Kbytes * 1024)

#define EEPROM_FIRST_BYTE  0x0000
#define EEPROM_LAST_BYTE   ((unsigned int)EEPROM_SIZE - 1)
#define EEPROM_WRITE       0x00  //24c256操作协议,地址最后一位表示读写
#define EEPROM_READ        0x01

//I2C 通用例程
#define I2CONSET_I2EN		0x00000040  /* I2C Control Set Register */
#define I2CONSET_AA		0x00000004
#define I2CONSET_SI		0x00000008
#define I2CONSET_STO		0x00000010
#define I2CONSET_STA		0x00000020

#define I2CONCLR_AAC		0x00000004  /* I2C Control clear Register */
#define I2CONCLR_SIC		0x00000008
#define I2CONCLR_STAC		0x00000020
#define I2CONCLR_I2ENC		0x00000040

#define I2DAT_I2C		0x00000000  /* I2C Data Reg */
#define I2ADR_I2C		0x00000000  /* I2C Slave Address Reg */
#define I2SCLH_SCLH		0x00000080  /* I2C SCL Duty Cycle High Reg */
#define I2SCLL_SCLL		0x00000080  /* I2C SCL Duty Cycle Low Reg */


/*********************************************************************************************************
** 函数名称: void	I2C_Init(BYTE	n,BYTE	MODE,DWORD	Fi2c,BYTE	Adr,BYTE	slot)
** 功能描述: 初始化I2C接口
** 输 入: 	n		:I2C接口号,0--I2C0,1--I2C1
**          MODE	:工作模式,0--从模式,1--主模式
**			Fi2c	:I2C通信速率,0~400K,如果超过400K,则会强制设置为400KHz,如果设置为从机,该参数无效
**			Adr		:当设置为从模式时,Adr表示从地址,在主模式下,该参数是无效
**			slot	:由于I2C采用IRQ中断方式,所以需要指定对应的通道,0~15
** 输 出:	1--接口初始化成功,0--接口初始化失败
** 调用模块: 初始化函数会将I2Cn的中断设置为IRQ中断,并分为slot
********************************************************************************************************/
extern BYTE I2C_Init(BYTE MODE, DWORD Fi2c, BYTE Adr);

/*********************************************************************************************************
** 函数名称: BYTE	I2C_SendByte(BYTE	n,BYTE sla,BYTE dat)
** 功能描述: 向无子地址器件发送1字节数据
** 输 入: 	n	接口号0,1
**			sla	器件地址	
**          dat	要发送的数据
** 输 出:	返回值为0时表示出错,为1时表示操作正确
** 调用模块: 使用前要初始化好I2C引脚功能和I2C中断,并已使能I2C主模式,程序死等待操作完成
********************************************************************************************************/
extern BYTE I2C_SendByte(BYTE sla, BYTE dat);


/*********************************************************************************************************
** 函数名称: BYTE	I2C_RcvByte(BYTE	n,BYTE sla,BYTE *dat)
** 功能描述: 从无子地址器件读取1字节数据
** 输 入: 	n	接口号0,1
**			sla	器件地址	
**          dat	接受数据的指针变量
** 输 出:	返回值为0时表示出错,为1时表示操作正确
** 调用模块: 使用前要初始化好I2C引脚功能和I2C中断,并已使能I2C主模式,程序死等待操作完成
********************************************************************************************************/
extern BYTE I2C_RcvByte(BYTE sla, BYTE *dat);


/*********************************************************************************************************
** 函数名称: BYTE	I2C_ReadNByte(BYTE	n,BYTE sla,DWORD suba_type,DWORD suba,BYTE *s,DWORD num)
** 功能描述: 从有子地址器件任意地址开始读取N字节数据
** 输 入: 	n			接口号0,1
**			sla			器件从地址	
**			suba_type	子地址结构	1-单字节地址,2-双字节地址,3-8+X结构
**			suba		器件子地址
**			*s			数据接收缓冲区指针
**			num			读取的个数
** 输 出:	1			操作成功
**			0			操作失败
** 调用模块: 程序死等待操作完成
********************************************************************************************************/
extern BYTE I2C_ReadNByte(BYTE sla, DWORD suba_type, DWORD suba,BYTE *s,DWORD num);


/*********************************************************************************************************
** 函数名称: BYTE	I2C_WriteNByte(BYTE	n,BYTE sla,DWORD suba_type,DWORD suba,BYTE *s,DWORD num)
** 功能描述: 向有子地址器件写入N字节数据
** 输 入: 	n			接口号0,1
**			sla			器件从地址	
**			suba_type	子地址结构	1-单字节地址,2-双字节地址,3-8+X结构
**			suba		器件子地址
**			*s			数据发送缓冲区指针
**			num			要写入的数据的个数
** 输 出:	1			操作成功
**			0			操作失败
** 调用模块: 程序死等待操作完成
********************************************************************************************************/
extern BYTE I2C_WriteNByte(BYTE sla, BYTE suba_type, DWORD suba,BYTE *s,DWORD num);

extern int Read_Temp(void);  // 读取当前温度

extern BYTE EEPROM_Write(const WORD start_address, BYTE user_data);
extern BYTE EEPROM_Read(const WORD start_address, BYTE *user_data);

#endif

⌨️ 快捷键说明

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