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

📄 i2c.h

📁 周立功 《μCOS-II微小内核分析与程序设计-基于LPC2300》配套例程源码
💻 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 + -