8.5 使用IIC协议读写EEPROM 硬件方式实现 (HAL库)
**HAL_I2C_Mem_Write() :这种方法可以写1个或者多个字节 **
/**
* @brief 以阻塞模式向指定的内存地址写入数据
* @param hi2c 指向 I2C_HandleTypeDef 结构体的指针,包含指定 I2C 的配置信息
* @param DevAddress 目标设备地址:设备在数据手册中的 7 位地址值
* 在调用该接口之前必须向左移一位
* @param MemAddress 内部存储器地址
* @param MemAddSize 内部存储器地址的大小
* @param pData 指向数据缓冲区的指针
* @param Size 要发送的数据量
* @param Timeout 超时时间
* @retval HAL 状态
*/
HAL_StatusTypeDef HAL_I2C_Mem_Write(
I2C_HandleTypeDef *hi2c,
uint16_t DevAddress,
uint16_t MemAddress,
uint16_t MemAddSize,
uint8_t *pData,
uint16_t Size,
uint32_t Timeout
)
**HAL_I2C_Mem_Read() : 这种方法可以读1个或者多个字节 **
/**
* @brief 以阻塞模式从指定的内存地址读取数据
* @param hi2c 指向 I2C_HandleTypeDef 结构体的指针,包含指定 I2C 的配置信息
* @param DevAddress 目标设备地址:设备在数据手册中的 7 位地址值
* 在调用该接口之前必须向左移一位
* @param MemAddress 内部存储器地址
* @param MemAddSize 内部存储器地址的大小
* @param pData 指向数据缓冲区的指针
* @param Size 要读取的数据量
* @param Timeout 超时时间
* @retval HAL 状态
*/
HAL_StatusTypeDef HAL_I2C_Mem_Read(
I2C_HandleTypeDef *hi2c,
uint16_t DevAddress,
uint16_t MemAddress,
uint16_t MemAddSize,
uint8_t *pData,
uint16_t Size,
uint32_t Timeout
);
使用HAL_I2C_Master_Receive(),字内地址要自己发
/**
* @brief Receives in master mode an amount of data in blocking mode.
* @param hi2c Pointer to a I2C_HandleTypeDef structure that contains
* the configuration information for the specified I2C.
* @param DevAddress Target device address: The device 7 bits address value
* in datasheet must be shifted to the left before calling the interface
* @param pData Pointer to data buffer
* @param Size Amount of data to be sent
* @param Timeout Timeout duration
* @retval HAL status
*/
HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)