//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
来源:CSDN
作者:他 不懂
链接:https://blog.csdn.net/weixin_44146373/article/details/104213479