最近在研究STM32的I2C协议,决定用GPIO模拟I2C,在网上找的例子,大多很简单(因为大多程序似乎都是一条线执行,中间没有中断打断)。
》》问题是这样的,在实际的应用中,大多工程用的中断比较多,如果采用了GPIO模拟I2C的话,必须考虑模拟I2C被外界中断打断的问题。
第一,如果模拟I2C被外界中断打断,会产生什么影响?
我在百度百科里查了I2C协议,如果模拟I2C的stm作为主机的话,SCL线是完全控制在stm手里啊,
那么就算模拟I2C被打断了,在被打断期间、SCL要么一直为高,或者为低电平,对模拟I2C时序没影响啊?
网上说的产生了影响,难道是因为,从机 自认为 主机 的SCL由于在被打断期间,一直被拉着,时间长没反应,于是从机把自己锁造成的?
(也就是说,是从机自己对SCL敏感,而造成的模拟I2C被中断打断的话,会引发通信失败?)
第二,如果上诉结论成立的话,那么解决这种困境的最好方法,是不是把中断函数执行时间尽可能的短小,以至于对SCL影响不大?
》》请问那位高手遇到过这种情况,还恳请您的指教,万分感谢! |