STM32HAL I2C函数

发布于:2025-02-11 ⋅ 阅读:(78) ⋅ 点赞:(0)

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)

网站公告

今日签到

点亮在社区的每一天
去签到