在早期stm32的i2c确实有问题,据听说是官方库有bug,后来修复了,这已经是好几年前的事情了,自我毕业用的库都是没问题的
用模拟i2c有主要几个原因
1.很多程序员都是51过来的,51没有i2c,再说协议很好写,资料满天飞,习惯难改,
2.stm32的i2c有局限,传输的位数有限制,而像mpu6050之类的姿态等难以匹配,要想用,要修改stm32的i2c库,比较墨迹。模拟i2c比较灵活,传输位数随便改。好用
3.当年stm32的i2c坑了很多人,工程中必须严谨,比较害怕,再加上i模拟i2c只是比stm32自带的慢一点而已,复制一个现成的写好的i2c.c文件,一调也很方便,所以产品用模拟的比较多
STM32的硬件I2C其实是没问题的,只是标准库里面的库函数有问题,如果操作寄存器是完全没问题的,只是比较麻烦
新版的HAL库已经修复这个BUG了