k60驱动代码学习(10)

//IIC
#ifndef __IIC_H
#define __IIC_H
#include "common.h" 
#include "MK60_GPIO.h"

#define IIC_SCL_PIN  PTC10 //模拟IIC的SCL信号  1.修改引脚即可修改IIC接口
#define IIC_SDA_PIN  PTC11 //模拟IIC的SDA信号

#define SDA_IN()  GPIO_PinSetDir(IIC_SDA_PIN, 0);	//输入
#define SDA_OUT() GPIO_PinSetDir(IIC_SDA_PIN, 1);	//输出

	 
#define IIC_SCL    PTC10_OUT  //SCL            2.修改引脚即可修改IIC接口    
#define IIC_SDA    PTC11_OUT  //SDA	 
#define READ_SDA   PTC11_IN   //输入SDA  


/*---------------------------------------------------------------
            IIC内部函数
----------------------------------------------------------------*/		 
void IIC_Start(void);			        //发送IIC开始信号
void IIC_Stop(void);	  	            //发送IIC停止信号
void IIC_Ack(void);					//IIC发送ACK信号
void IIC_NAck(void);				    //IIC不发送ACK信号
uint8_t IIC_WaitAck(void); 		        //IIC等待ACK信号
void IIC_SendByte(uint8_t data);        //IIC发送一个字节
uint8_t IIC_ReadByte(uint8_t ack);       //IIC读取一个字节


/*---------------------------------------------------------------
            IIC用户函数
----------------------------------------------------------------*/
void IIC_Init(void);                    //初始化IIC的IO口   

/******************************************************************************
*函  数:uint8_t IIC_ReadByteFromSlave(uint8_t I2C_Addr,uint8_t addr)
*功 能:读取指定设备 指定寄存器的一个值
*参  数:I2C_Addr  目标设备地址
reg	     寄存器地址
*buf      读取数据要存储的地址    
*返回值:返回 1失败 0成功
*备  注:无
******************************************************************************/
uint8_t IIC_ReadByteFromSlave(uint8_t I2C_Addr,uint8_t reg,uint8_t *buf);

/******************************************************************************
*函  数:uint8_t IIC_ReadMultByteFromSlave(uint8_t dev, uint8_t reg, uint8_t length, uint8_t *data)
*功 能:读取指定设备 指定寄存器的 length个值
*参  数:dev     目标设备地址
reg	   寄存器地址
length  要读的字节数
*data   读出的数据将要存放的指针
*返回值:1成功 0失败
*备  注:无
*******************************************************************************/
uint8_t IIC_ReadMultByteFromSlave(uint8_t dev, uint8_t reg, uint8_t length, uint8_t *data);


/******************************************************************************
*函  数:uint8_t IIC_WriteByteToSlave(uint8_t I2C_Addr,uint8_t addr,uint8_t buf))
*功 能:写入指定设备 指定寄存器的一个值
*参  数:I2C_Addr  目标设备地址
reg	     寄存器地址
buf       要写入的数据
*返回值:1 失败 0成功
*备  注:无
****************************************************************************/
uint8_t IIC_WriteByteToSlave(uint8_t I2C_Addr,uint8_t reg,uint8_t buf);

/******************************************************************************
*函  数:uint8_t IIC_WriteMultByteToSlave(uint8_t dev, uint8_t reg, uint8_t length, uint8_t* data)
*功 能:将多个字节写入指定设备 指定寄存器
*参  数:dev     目标设备地址
reg	   寄存器地址
length  要写的字节数
*data   要写入的数据将要存放的指针
*返回值:1成功 0失败
*备  注:无
*******************************************************************************/
uint8_t IIC_WriteMultByteToSlave(uint8_t dev, uint8_t reg, uint8_t length, uint8_t* data);



#endif
发布了69 篇原创文章 · 获赞 28 · 访问量 9905

猜你喜欢

转载自blog.csdn.net/weixin_44146373/article/details/104213479