📄 i2c.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 + -