/* @文件:AbsSoftIIC.h @作者:你遇了我 @联系:321640253@qq.com @描述:软件IIC,请在配置区按照自己的情况改动 @版本:v0.1.2 */ #ifndef _ABS_SOFT_I2C_H_ #define _ABS_SOFT_I2C_H_ #include #include #define ABS_SOFT_IIC_ON 0 //启动整个软件IIC #if(ABS_SOFT_IIC_ON) /****************************配置区(BEGIN)****************************************/ /*------导入你需要的头文件(BEGIN)------*/ #include "main.h" /*------导入你需要的头文件(END)--------*/ #define ABS_IIC_DELAY_TIME 10 #define ABS_IIC_Wait_OUTTime 2000 /*1、按选择自己的需求定义SDA线和SCL线的函数,建议用推挽输出*/ #define ABS_IIC_SDA_Set() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET) //定义你的SDA引脚设置高电平函数 #define ABS_IIC_SDA_Reset() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET) //定义你的SDA引脚设置低电平函数 #define ABS_IIC_SCL_Set() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET) //定义你的SCL引脚设置高电平函数 #define ABS_IIC_SCL_Reset() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET) //定义你的SCL引脚设置低电平函数 #define ABS_IIC_SDA_READ() HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_8) /*2、到抽象实现区实现SDA引脚的输入输出模式的改变函数*/ /****************************配置区(END)******************************************/ typedef enum _ABS_sotfiic_state{ ABS_IIC_STATE_ACK = 0U, ABS_IIC_STATE_NACK = 1U, ABS_SOFT_IIC_TIMEOUT = 2U, ABS_SOFT_IIC_SUCCESS = 3U, ABS_SOFT_IIC_ERROR = 4U, } ABS_SOFT_IIC_STATE; /****************************函数声明区(BEGIN)************************************/ ABS_SOFT_IIC_STATE ABS_I2C_WR_Byte(uint8_t address,uint8_t dat); //发送一个字节数据 ABS_SOFT_IIC_STATE ABS_I2C_WR_Bytes(uint8_t address,uint8_t *dat,uint8_t num); //发送多个字节数据 ABS_SOFT_IIC_STATE ABS_I2C_RD_Bytes(uint8_t address,uint8_t *dat,uint8_t num); /****************************函数声明区(END)**************************************/ #endif //ABS_SOFT_IIC_ONL #endif