本I2C专题涉及I2C主模式和从模式,并以STM32F407系列MCU做为示例。我们首先总结I2C从模式编程时遇到的各种各样的问题及解决办法,欢迎大家持续关注。
I2C外设工作在从模式下,主机启动接收的最后一个字节时,从机发送完成后,从机依然期待着主机ACK应答,但主机因为是最后一个接收字节,其并不会发送ACK信号,而是以NACK信号填充这个时间逻辑位。这时从机如果使能了ITERREN寄存器——我们在编程时,一定会打开这个中断,则是会进入该中断,并标记AF位。所以我们必须在错误中断请求函数里面专门处理,不然其会影响到I2C的正常通讯。
挺有意思的事,本来这就是协议规定的通讯流程,为啥还会进入一个错误中断呀!反正我当时没有处理,发现第一次通讯正常,但通讯就处于异常状态了!