答案转自:https://www.zhihu.com/question/30835089
听说为了规避菲利普专利问题,设计的特别复杂,导致特别容易错过反馈信号,一中断反馈信号没了…整个程序就崩溃了。现在hal库应该是解决了这个问题…解决方法是关闭所有中断……
大家对ST的IIC褒贬不一,其实IIC是一个非常庞大的协议,ST已经尽力将协议做进去了,但是出来的效果很差,很多用户感觉非常难用(在库文件时代和寄存器时代),所以大家就都喜欢使用模拟IIC,后来库文件和CubeMx逐渐把IIC的软件配置完善了,但是这个说法仍然被继承下来。
现在澄清下,ST的IIC挺齐全的。
他们说有问题,我是没去深究,一直用的模拟IIC,也不知道硬件IIC问题究竟在哪。
IIC的速率有限,就算用硬件IIC单片机也没减轻什么负担,用模拟的还自己自己想怎么写就怎么写,只要时序对,写出花来都行。
其实功能上面都差不多的,只是以前的stm32库函数不完善,会有些bug,因此大家都习惯用模拟的iic
硬件iic实现请参考http://www.stmcu.org/module/forum/thread-609223-1-3.html