STM32硬件i2c 通信,HAL_I2C_Slave_Receive_IT()从机接收数据长度怎么设置?

2019-07-20 07:41发布

现在调试STM32硬件i2c,主机和从机通信, 从机接收数据的时候,调用HAL_I2C_Slave_Receive_IT()函数,  

但是从机在没有接收到之前是不知道会接收到多长的数据(不知道主机会发送多长的数据), 那么这个函数中的数据接收长度怎么设置?
这个接收数据长度是我提前知道主机发送的长度吗?

哪位大侠,帮忙指导一下,谢谢了
if(HAL_I2C_Slave_Receive_IT(&I2cHandle, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)   //从机 RXBUFFERSIZE, 数据接收长度怎么设置?

{
      /* Transfer error in reception process */
      Error_Handler();        
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
FairyStaek
1楼-- · 2019-07-21 01:15
你好,关于从机I2C,HAL_I2C_Slave_Receive_IT(&I2cHandle, (uint8_t *)aRxBuffer, RXBUFFERSIZE)里,要怎么判断主机发送的寄存器地址呢?
是I2CxHandle.Instance->CR1;吗?   但是又有定义着CR2。
现在我用其他主机向这个从机请求,都不会回应ACK,不知道该怎么解决,没什么头绪。。。
kirkgong
2楼-- · 2019-07-21 05:57
可以不要使用这个函数,使用HAL库中的LL驱动,函数比较多,可以参照以前标准库的做法使用LL库进行函数替换即可。
amazing
3楼-- · 2019-07-21 07:58
 精彩回答 2  元偷偷看……

一周热门 更多>