你若安好_清风徐来 发表于 2020-1-6 17:25:11

HAL库硬件I2C从机发送与接收

最近在做一个东西想吧STM32F030F4 作为一个I2C设备使用,就写了一个I2C从机,我想用的和传感器一样一个发送一个寄存器然后读或者写,但是我发现HAL库不好实现。I2C是使用中断读取的 ,实验发现I2C读取时候只发送一个字节(发送寄存器然后发送一个数据给主机),在写的时候是两个字节(主机发送两个数据一个寄存器一个数据),这就有问题了 函数
HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
我字节长度到底是设置1还是2呢,设置2时候在读时候无法触发中断,进入不了函数
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c);
设置1个时候发现可以读取到两个数据,但是无法再读取到任何数据,也没有进入错误中断,在多次发送就直接一直进入I2C中断,中断出来又马上进入了,
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
{
        RX_t = RX;
        RX_t = RX;
        HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)RX, 2);
//        RX = 0xaa;
//        HAL_I2C_Slave_Transmit(&hi2c1, (uint8_t*)RX, 1,0xff);
//        HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)RX, 1);
}

有大佬做过从机吗,有代码借我参考参考吗,


奏奏奏 发表于 2020-1-6 21:22:43

https://www.stmcu.org.cn/module/forum/thread-610058-1-1.html
不知道有没有帮助,自己看吧。

你若安好_清风徐来 发表于 2020-1-7 10:40:35

奏奏奏 发表于 2020-1-6 21:22
https://www.stmcu.org.cn/module/forum/thread-610058-1-1.html
不知道有没有帮助,自己看吧。 ...

好的,谢谢啦,我先看看
页: [1]
查看完整版本: HAL库硬件I2C从机发送与接收