#ifndef __I2C_BSP_H #define __I2C_BSP_H #include "stm32f10x.h" /*=========================================================================== * I2C BSP — Board Support Layer for I2C communication * * Provides generic I2C read/write primitives used by BQ25756 driver. * Default: I2C1 (PB6=SCL, PB7=SDA) *===========================================================================*/ /** * @brief Initialize I2C1 for BQ25756. * PB6(SCL), PB7(SDA), 400kHz. */ void I2C_BSP_Init(void); /** * @brief Write a buffer to an I2C slave. * @param slave_addr: 7-bit I2C slave address * @param pdata: data buffer to write * @param len: number of bytes * @return 0=OK, -1=error */ int I2C_BSP_Write(uint8_t slave_addr, const uint8_t *pdata, uint16_t len); /** * @brief Read from an I2C slave with register address first. * Sends reg_addr, then repeated-start + read. * @param slave_addr: 7-bit I2C slave address * @param reg_addr: register address byte to send first * @param pbuf: receive buffer * @param len: number of bytes to read * @return 0=OK, -1=error */ int I2C_BSP_Read(uint8_t slave_addr, uint8_t reg_addr, uint8_t *pbuf, uint16_t len); #endif /* __I2C_BSP_H */