/****************************************************************************** * @file hal_i2c.h * @copyright Nehemis SARL reserves all rights even in the event of industrial * property rights. We reserve all rights of disposal such as * copying and passing on to third parties. * * @brief STM HAL layer wrapper class for I2C. * ******************************************************************************/ #ifndef HAL_I2C_H #define HAL_I2C_H /****************************************************************************** * Include Header Files ******************************************************************************/ #include "map_hal.h" #include "nms_types.h" #include "stdint.h" #include "i2c.h" /****************************************************************************** * Function Prototypes ******************************************************************************/ /** * @brief Initializes the I2C hardware interface. * This function configures the necessary resources and sets up the * I2C hardware to prepare it for use. * * @return Error code: 0 if successful, nonzero otherwise. */ uint32 HalI2CInit(void); /** * @brief Reads data from a specific memory address on an I2C device. * This function sends a memory read request to the I2C device and * stores the received data in a provided buffer. * * @param module_en The I2C module to be used (depends on the system configuration). * devAddr_u16 The 7-bit address of the I2C device. * memAddr_u16 The memory address within the I2C device to read from. * memAddrSize_u16 The size of the memory address (e.g., 8-bit, 16-bit). * pData_pu8 Pointer to the buffer where the read data will be stored. * size_u16 Number of bytes to read. * * @return Error code: 0 if successful, nonzero otherwise. */ uint32 HalI2CRead(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint16 memAddr_u16, uint16 memAddrSize_u16, uint8 *pData_pu8, uint16 size_u16); /** * @brief Writes data to a specific memory address on an I2C device. * This function sends a memory write request to the I2C device to * write data from the provided buffer to the device's memory. * * @param module_en The I2C module to be used (depends on the system configuration). * devAddr_u16 The 7-bit address of the I2C device. * memAddr_u16 The memory address within the I2C device to read from. * memAddrSize_u16 The size of the memory address (e.g., 8-bit, 16-bit). * pData_pu8 Pointer to the buffer where the read data will be stored. * size_u16 Number of bytes to write. * * @return Error code: 0 if successful, nonzero otherwise. */ uint32 HalI2CWrite(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint16 memAddr_u16, uint16 memAddrSize_u16, uint8 *pData_pu8, uint16 size_u16); /** * @brief Transmits in master mode an amount of data in blocking mode. * * @param module_en The I2C module to be used (depends on the system configuration). * devAddr_u16 The 7-bit address of the I2C device. * pData_pu8 Pointer to the buffer where the read data will be stored. * size_u16 Number of bytes to write. * * @return Error code: 0 if successful, nonzero otherwise. */ uint32 HalI2CMasterTransmit(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint8 *pData_pu8, uint16 size_u16); #endif /* HAL_I2C_H */