因为过去生产的EE,其电压范围为4.5~5.5V,MCU系统也是5V系统,当去电再上电的话,在MCU复位的时候,EE也能跟着复位,即使没有同步复位,发生的概率极小极小,所以,过去的很多设计都没有注意这个问题。<br /><br />后来随着3V系统的推广,EE都能支持低电压工作了,有的甚至到1.8V还能工作,此时就比较容易发生电压跌落到1.8~4.5之间时,EE不被电源复位,而MCU却被BOD复位的现象,这就是产生问题的地方。<br /><br />SCL/SDA被挂死的问题,不管谁家的EE都是一样,这和CHIP无关,这是IIC协议确定的,在IIC协议里另有一个规定,不管SCL/SDA处于什么状态,如果连续发送9个CLK,都能让CHIP强制复位。<br /><br />所以,建议的做法:在MCU启动后,第一次读写EE的时候,先发送9个CLK防止SCL/SDA被挂死,然后进行START/STOP/READ/WRITE等操作。<br /><br />另一个解决的办法是用MCU拿出一个IO出来控制EE电源,当MCU被复位后,强制POWER DOWN一次EE的电源,这样也肯定能解开被挂死的EE。<br /><br />
|