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

📄 i2c.h

📁 easyarm 的主要程序
💻 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

/*定义用于和I2C中断传送信息的全局变量*/
extern		uint8	slarv;			//子地址接收标志,为1时表示已接收从机子地址
extern		uint32	adrpoint;		//定义从机缓冲区读写操作指针
extern		uint8	I2C_n;			//I2C器件顺序号
extern		uint8	I2C_sla;		//I2C器件从地址
extern		uint32	I2C_suba;		//I2C器件的内部子地址
extern		uint8	I2C_suba_num;	//I2C子地址字节数
extern		uint8	*I2C_buf;		//I2C数据缓冲区指针
extern		uint32	I2C_num;		//要读取/写入的数据个数
extern		uint8	I2C_end;		//I2C总线结束标志:结束总线是置1
extern		uint8	I2C_suba_en;	/*	子地址控制
										0-子地址已经处理或者不需要子地址
										1-读取操作
										2-写操作
									*/	



/*********************************************************************************************************
** 函数名称: void	I2C_Init(uint8	n,uint8	MODE,uint32	Fi2c,uint8	Adr,uint8	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	uint8	I2C_Init(uint8	n,uint8	MODE,uint32	Fi2c,uint8	Adr,uint8	slot);


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


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


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


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

#endif

⌨️ 快捷键说明

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