53 lines
2.3 KiB
C
53 lines
2.3 KiB
C
/*
|
||
@文件:AbsSoftIIC.h
|
||
@作者:你遇了我
|
||
@联系:321640253@qq.com
|
||
@描述:软件IIC,请在配置区按照自己的情况改动
|
||
@版本:v0.1.2
|
||
*/
|
||
|
||
#ifndef _ABS_SOFT_I2C_H_
|
||
#define _ABS_SOFT_I2C_H_
|
||
|
||
#include <stdint.h>
|
||
#include <stdbool.h>
|
||
#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
|