[STM32F4] HAL_I2C_Master_Transmit与HAL_I2C_Slave_Transmit的区别

[复制链接]
3825|2
 楼主| 玛尼玛尼哄 发表于 2023-6-15 18:29 | 显示全部楼层 |阅读模式
在STM32的HAL库中,HAL_I2C_Master_Transmit和HAL_I2C_Slave_Transmit是两个用于I2C通信的函数,用于主机和从机之间的数据传输。它们的区别如下:

HAL_I2C_Master_Transmit: 这个函数用于主机设备(通常是单片机)向从机设备发送数据。主机设备负责控制I2C总线并发起通信。通过调用HAL_I2C_Master_Transmit函数,主机设备可以将数据发送给从机设备。该函数的原型如下:
  1. HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
其中,hi2c是I2C总线句柄,DevAddress是从机设备的地址,pData是要发送的数据缓冲区,Size是要发送的数据长度,Timeout是传输超时时间。

HAL_I2C_Slave_Transmit: 这个函数用于从机设备向主机设备发送数据。从机设备被动地等待主机设备的请求,并根据主机设备的请求发送数据。通过调用HAL_I2C_Slave_Transmit函数,从机设备可以将数据发送给主机设备。该函数的原型如下:
  1. HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);
其中,hi2c是I2C总线句柄,pData是要发送的数据缓冲区,Size是要发送的数据长度,Timeout是传输超时时间。

总结起来,HAL_I2C_Master_Transmit函数用于主机设备主动发送数据给从机设备,而HAL_I2C_Slave_Transmit函数用于从机设备被动发送数据给主机设备。

 楼主| 玛尼玛尼哄 发表于 2023-6-15 18:32 | 显示全部楼层
不过作为从机,不需要提供什么地址,就可以跟主机通信吗,或者说什么时候给主机发送数据呢?有没有大佬知道,如果主机没有发起读请求,也可以发送数据给主机吗
Bowclad 发表于 2023-6-15 23:22 | 显示全部楼层
一个是主机到从机,一个是从机到主机
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

3261

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部