要特别注意的两个问题是:1)24C04有一个约10ms的片内写周期。在这个周期内,24C04是不对外界的操作作出反应的。2)在发送数据的过程中,要确保当SCL为高电平时,SDA保持稳定。<br /> 解决第一个问题的常见方法有两个,其一为采用延时等待,确保在写过程中,在一个字节完成发送了停止位之后,微处理器等待足够的时间,通常应该超过10ms,再送下一个字节,这段时间用来等待EEPROM完成片内写周期。另一个是采用轮询的方式,判断EEPROM是否完成了片内写周期。这种方式的主导思想是,当向EEPROM发送写标志后,正常情况下,EEPROM应该有ACK应答。但是当EEPROM在进行片内写周期的时候,则不会产生这样的应答。程序据此判断,EEPROM是否完成了片内的写周期程序。如果完成,则可以继续写入下一个要写的内容,否则继续等待。<br /> 第一种方法编程较为简单,但是会浪费大量的机器时间,并且程序的延时时间不好确定。第二种方法的优点在于,虽然编程较为复杂,但是较为快速,对其余的程序模块影响较少,便于完成程序的模块化设计。<br /> 对于在发送数据的过程中,要确保当SCK为高电平时,SDA必须保持稳定,应该在程序中利用软件给予保证。<br /> 如果可以很好的解决以上两个问题,数据的写入和读出是方便快捷和可靠的。<br /><br />替代延时10ms程序指的是采用上面第二种方法的程序???<br />
|