// // Created by lydxh on 2024/5/9. // #ifndef HW_LIB_IIC_H #define HW_LIB_IIC_H #include #define HIGH 1 #define LOW 0 #define IN 1 #define OUT 0 #define NOP() ; #define DELAY1US() NOP() /** * @brief IIC设备结构体 **/ typedef struct { uint8_t (*CLK_SET)(uint8_t); // 设置时钟引脚状态的函数指针 uint8_t (*SDA_SET)(uint8_t); // 设置数据引脚状态的函数指针 uint8_t (*SDA); // 读取数据引脚状态的函数指针 uint8_t (*SDA_MODE)(uint8_t); // 设置数据引脚模式的函数指针 uint8_t ADD; // IIC设备地址 } HW_Dev_IIC; /** * @brief 向 IIC 设备写入数据流 * @param Dev: [输入] IIC设备结构体 * @param InternalAddress: [输入] 内部地址 * @param Write_Data: [输入] 要写入的数据流指针 * @param Len: [输入] 数据流长度 * @return void **/ void HW_IIC_WL(HW_Dev_IIC Dev, uint8_t InternalAddress, uint8_t *Write_Data, uint32_t Len); /** * @brief 从 IIC 设备读取数据流 * @param Dev: [输入] IIC设备结构体 * @param InternalAddress: [输入] 内部地址 * @param Read_Data: [输出] 存储读取数据的缓冲区指针 * @param Len: [输入] 读取数据流长度 * @param Ack: [输入] 确认应答位 * @return void **/ void HW_IIC_RL(HW_Dev_IIC Dev, uint8_t InternalAddress, uint8_t *Read_Data, uint32_t Len, uint8_t Ack); #endif //HW_LIB_IIC_H