这两天在学习stm32f103的I2C总线,查看之前关于I2C总线代码,发现代码中未开启I2C的外设时钟,但是实际的电路中有使用到I2C总线器件,这让我很疑惑。自己查看了程序代码发现代码并未使用stm32的硬件I2C模块,而是使用了GPIO模拟了I2C接口使用。于是我在网上搜索了关于stm32的I2C使用才发现stm32f101x和stm32f103x系列的I2C的确使用中有BUG,而且ST官方也发布了勘误手册。
下图为ST官方关于I2C外设的勘误:
综上,才会有如此多的开发者不使用ST的硬件I2C,而是使用IO口模拟I2C功能。