20MHZ和4Mhz相差了5倍,EEPROM有最小写入时间,一般是5~10ms,假如你程序是需要延迟10ms,在4MHZ下是对的,但换成20Mhz后就变成了2ms,肯定就不能正确写入。
另外,在波形发送的过程中,对上升沿和下降沿都是有要求的,按照标准的IIC标准,低速IIC的速度是100KHZ,高速是400Khz,超过了这个速度就可能导致操作失败,24C02有很多厂家都在供应,不知道你选是哪家的,你要对应看看你20Mhz的时候这个速度是不是已经超过芯片允许的速度。
所以,你要在20Mhz下正常使用就两个地方需注意和修改:1是写入数据后的延迟时间,必须满足芯片手册上给出的参数(5~10ms),2是在端口操作时将端口电平改变语句后加两句NOP语句,以降低操作频率,如果是采用硬件IIC的话就修改你的波特率来实现。
为了让程序的兼容性更好,可以在头文件中将晶振参数定义为一个常量,在程序中判断这个常量来执行不同的设置,以达到最佳的性能优化。
温馨提示:答案为网友推荐,仅供参考