📄 i2c.h
字号:
/***********************************************Copyright (c)*********************************************
** Guangzou ZLG-MCU Development Co.,LTD.
**
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: I2C.h
** Last modified Date: 2007-10-15
** Last Version: 1.0
** Descriptions: I2C头文件
**
**--------------------------------------------------------------------------------------------------------
** Created by: lixiaocheng
** Created date: 2007-10-15
** Version: 1.0
** Descriptions:
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
#ifndef __IIC_H
#define __IIC_H
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************************************************
定义I2C工作状态
*********************************************************************************************************/
#define I2C_OK 1 /* 操作成功 */
#define I2C_NOK 0 /* 操作失败 */
/*********************************************************************************************************
定义I2C工作状态
*********************************************************************************************************/
#define I2C_BUSY 0x10
#define I2C_IDLE 0x11
#define I2C_WRITE_END 0x12
#define I2C_READ_END 0x13
#define I2C_ERR 0xff
/*********************************************************************************************************
定义I2C从机子地址类型,该驱动暂时不支持3+X结构
*********************************************************************************************************/
#define I2C_ONE_BYTE 0x01 /* 从机子地址是单字节 */
#define I2C_TWO_BYTE 0x02 /* 从机子地址是双字节 */
#define I2C_THREE_BYTE 0x03 /* 从机子地址是3+X */
/*********************************************************************************************************
** Function name: i2cInit
** Descriptions: I2c初始化程序,如果设置参数的速度超过400K则设置标准速度100K
** Input parameters: ID 器件子设备号,例如ID=0,表示初始化的是I2C0
** arg 设置参数的字符串,该函数暂时只设置I2C速度
** 例如要设置的速度为200K,则字符串为"Speed=200000"
** Rsv 保留参数
** Output parameters: NONE
** Returned value: PIN_ERR 管脚配置错误
** OPERATE_FAIL 初始化失败,ID错误
** OPERATE_SUCCESS 初始化成功
*********************************************************************************************************/
int32 i2cInit(uint32 ID,
char *arg,
void *Rsv);
/*********************************************************************************************************
** Function name: i2cSetMode
** Descriptions: 设置I2C速度,主要用在初始化后用户想改变I2C参数,暂时该函数只开放设置速度。
** 如果写入速度大于400K,则设置成系统默认的100K
** Input parameters: ID 器件子设备号,例如ID=0,表示操作的设备是I2C0
** arg 设置参数的字符串,该函数暂时只设置I2C速度
** 例如要设置的速度为200K,则字符串为"Speed=200000"
** Rsv 保留参数
** Output parameters: NONE
** Returned value: OPERATE_FAIL 设置失败
** OPERATE_SUCCESS 设置成功
*********************************************************************************************************/
int32 i2cSetMode( uint32 ID,
char *arg,
void *Rsv );
/*********************************************************************************************************
** Function name: i2cRead
** Descriptions: I2c读数据函数
** Input parameters: ID : I2C设备标识
** Addr : 从机地址
** Ret : 指向返回数据存储位置的指针
** Sub_Addr : 从机内部子地址
** Sub_Addr_NByte : 从机内部子地址类型 ---- 1: 单字节地址; 2: 双字节地址;
** ReadNbyte : 需要读数据个数
** Output parameters: NONE
** Returned value: 操作成功 : OPERATE_SUCCESS
** 操作失败 : OPERATE_FAIL
*********************************************************************************************************/
int32 i2cRead(uint32 ID,
uint8 Addr,
uint8 *Ret,
uint16 Sub_Addr,
uint8 Sub_Addr_NByte,
uint16 ReadNbyte);
/*********************************************************************************************************
** Function name: i2cWrite
** Descriptions: I2c写数据函数
** Input parameters: ID : I2C设备标识
** Addr : 从机地址
** Buf : 指向写入数据存储位置的指针
** Sub_Addr : 从机内部子地址
** Sub_Addr_NByte : 从机内部子地址类型
** 0: 无内部子地址;
** 1: 单字节地址;
** 2: 双字节地址;
** Nbyte : 写入数据长度
** Output parameters: NONE
** Returned value: 操作成功 : OPERATE_SUCCESS
** 操作失败 : OPERATE_FAIL
*********************************************************************************************************/
int32 i2cWrite(uint32 ID,
uint8 Addr,
uint8 *Buf,
uint16 Sub_Addr,
uint8 Sub_Addr_NByte,
uint16 Nbyte);
/*********************************************************************************************************
** Function name: i2cGetFlag
** Descriptions: 返回I2C器件当前状态如果通信失败,则表示上次总线操作失败,
** 但是现在总线仍然是空闲的,空闲表示上次通信成功或没有进行过通信
** 现在总线是空闲的,可以启动总线通信
** Input parameters: ID : I2C设备标识
** Output parameters: NONE
** Returned value: 操作成功 : 返回当前I2C总线状态
** I2C_IDLE: 表示总线空闲
** I2C_WRITE_END:表示写操作成功
** I2C_READ_END:表示读操作成功
** I2C_ERR:表示总线操作失败
** I2C_BUSY:表示总线正在工作中
** 操作失败 : OPERATE_FAIL
*********************************************************************************************************/
int32 i2cGetFlag(uint8 ID);
/*********************************************************************************************************
** Function name: i2cGetRemainBytes
** Descriptions: 返回I2C器件还有多少字节数据没有发送完毕
** Input parameters: ID : I2C设备标识
** Output parameters: NONE
** Returned value: 操作成功 : 返回当前还剩没有发送的字节数
** 操作失败 : OPERATE_FAIL
*********************************************************************************************************/
uint32 i2cGetRemainBytes(uint8 ID);
/*********************************************************************************************************
** Function name: I2C0IRQ
** Descriptions: 库函数默认的中断服务函数,进行I2C中断处理,该函数挂接了钩子函数可处理用户任务
** Input parameters: NONE
** Output parameters: NONE
** Returned value: NONE
*********************************************************************************************************/
void i2c0IRQ( void );
/*********************************************************************************************************
** Function name: I2C1IRQ
** Descriptions: 库函数默认的中断服务函数,进行I2C中断处理,该函数挂接了钩子函数可处理用户任务
** Input parameters: NONE
** Output parameters: NONE
** Returned value: NONE
*********************************************************************************************************/
void i2c1IRQ( void );
/*********************************************************************************************************
** Function name: I2C2IRQ
** Descriptions: 库函数默认的中断服务函数,进行I2C中断处理,该函数挂接了钩子函数可处理用户任务
** Input parameters: NONE
** Output parameters: NONE
** Returned value: NONE
*********************************************************************************************************/
void i2c2IRQ( void );
#ifdef __cplusplus
}
#endif
#endif /* __IIC_H */
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -