打印
[STM32F4]

HAL_I2C_Master_Transmit与HAL_I2C_Slave_Transmit的区别

[复制链接]
2276|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函数,主机设备可以将数据发送给从机设备。该函数的原型如下:
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函数,从机设备可以将数据发送给主机设备。该函数的原型如下:
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 | 只看该作者
一个是主机到从机,一个是从机到主机

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

179

主题

3074

帖子

2

粉丝