最近在做一个东西想吧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[0] = RX[0]; RX_t[1] = RX[1]; HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)RX, 2); // RX[0] = 0xaa; // HAL_I2C_Slave_Transmit(&hi2c1, (uint8_t*)RX, 1,0xff); // HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)RX, 1); } 有大佬做过从机吗,有代码借我参考参考吗, |
I2C.zip
下载17.27 MB, 下载次数: 66, 下载积分: ST金币 -1
不知道有没有帮助,自己看吧。
评分
查看全部评分
好的,谢谢啦,我先看看