24c02 写问题。单片机使用4Mhz晶振都正常,但用20Mhz晶振时,写入数据都变成1了。

24c02 写问题。单片机使用4Mhz晶振都正常,但用20Mhz晶振时,写入数据都变成1了。请问哪里需要注意?

20MHZ和4Mhz相差了5倍,EEPROM有最小写入时间,一般是5~10ms,假如你程序是需要延迟10ms,在4MHZ下是对的,但换成20Mhz后就变成了2ms,肯定就不能正确写入。

另外,在波形发送的过程中,对上升沿和下降沿都是有要求的,按照标准的IIC标准,低速IIC的速度是100KHZ,高速是400Khz,超过了这个速度就可能导致操作失败,24C02有很多厂家都在供应,不知道你选是哪家的,你要对应看看你20Mhz的时候这个速度是不是已经超过芯片允许的速度。

所以,你要在20Mhz下正常使用就两个地方需注意和修改:1是写入数据后的延迟时间,必须满足芯片手册上给出的参数(5~10ms),2是在端口操作时将端口电平改变语句后加两句NOP语句,以降低操作频率,如果是采用硬件IIC的话就修改你的波特率来实现。

为了让程序的兼容性更好,可以在头文件中将晶振参数定义为一个常量,在程序中判断这个常量来执行不同的设置,以达到最佳的性能优化。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-20
写入数据速度太快了 读取也太快了 24c02反应不过来吧