diff --git a/common/iic/iic.c b/common/iic/iic.c new file mode 100644 index 0000000000000000000000000000000000000000..dd635514a4681b9224af4aa827cb6e31ee7826ce --- /dev/null +++ b/common/iic/iic.c @@ -0,0 +1,13 @@ +#include "I2C.h" + +void HAL_I2C_WriteCmd(uint8_t* hi2cx,uint16_t adr,uint8_t* TxData,uint8_t len,uint16_t timeout) +{ + HAL_I2C_Master_Transmit(&hi2cx,adr,(uint8_t*)TxData,len,timeout); +} + +void HAL_I2C_ReadCmd(uint8_t* hi2cx,uint16_t adr,uint8_t* RxData,uint8_t len,uint16_t timeout) +{ + HAL_I2C_Master_Receive(&hi2cx,adr,(uint8_t*)RxData,len,timeout); +} + +return; diff --git a/common/iic/iic.h b/common/iic/iic.h new file mode 100644 index 0000000000000000000000000000000000000000..722d8f931fd2d49201422388af4fb5bd8fae9c18 --- /dev/null +++ b/common/iic/iic.h @@ -0,0 +1,36 @@ +#ifndef __I2C_H +#define __I2C_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "stm32f1xx_hal.h" + +/** + * @brief 通过 I2C 接口写入命令数据 + * @param hi2cx: 指向 I2C 句柄的指针,用于指定使用的 I2C 总线实例 + * @param adr: 目标设备的 I2C 地址,标识要与之通信的从设备 + * @param TxData: 指向待发送数据的指针,包含了要写入 I2C 设备的命令或数据内容 + * @param len: 要发送数据的长度,即 TxData 中数据的字节数 + * @param timeout: 操作超时时间,若在该时间内操作未完成,则操作失败,单位取决于具体实现 + * @retval 无 + */ + void HAL_I2C_WriteCmd(uint8_t* hi2cx,uint16_t adr,uint8_t* TxData,uint8_t len,uint16_t timeout) + + /** + * @brief 通过 I2C 接口读取命令响应数据 + * @param hi2cx: 指向 I2C 句柄的指针,用于指定使用的 I2C 总线实例 + * @param adr: 目标设备的 I2C 地址,标识要与之通信的从设备 + * @param RxData: 指向用于存储接收到数据的缓冲区的指针,读取到的数据会存于此 + * @param len: 要读取数据的长度,即期望从 I2C 设备读取的字节数 + * @param timeout: 操作超时时间,若在该时间内操作未完成,则操作失败,单位取决于具体实现 + * @retval 无 + */ + void HAL_I2C_ReadCmd(uint8_t* hi2cx,uint16_t adr,uint8_t* RxData,uint8_t len,uint16_t timeout) + +#ifdef __cplusplus +} +#endif + +#endif /* __I2C_H */