|||
针对STM32F103的I2C总线,在网上有很多问题,这些问题表明,ST的工程师们可能也没有搞清楚I2C的协议吧,所以才导致非常多的人在测试或应用它的I2C时,出现这样那样的反正通不过的测试。而它的勘误表中也提到了I2C的问题,最终说明,STM32的I2C总线不可能通过查询状态的方法实现应用。
我在开始测试时,实际上也遇到了这样的问题,搞了两天,就去看它的那个什么表,最后直接用DMA来操作I2C总线了。且使用DMA操作时,只有一个字节还是要出错的,通不过,因此在它的3.5的库中,它是这样处理的:多字节通讯时,使用DMA通讯,只有一字节时,使用中断。但绝对没有使用查询的方式。还有一点需要说明,在初始化I2C后,一定需要清除一次全部标志。
因此为STM32的I2C总线的应用,总结为以下三种方式是可行的:
1、查询标志的过程直接延时等待跳过
2、用中断
3、用DMA
绝对不能使用的方法:
软件查询标志状态位。