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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的话就修改你的波特率来实现。

为了让程序的兼容性更好,可以在头文件中将晶振参数定义为一个常量,在程序中判断这个常量来执行不同的设置,以达到最佳的性能优化。
参考技术A 写入数据速度太快了 读取也太快了 24c02反应不过来吧

关于STM32-CubeMx工程中串口无法正常发送/接收的问题解决

最近翻船了,万万在第一时间没想到串口无法正常发送数据竟然是因为CubeMX软件设置的问题。

在最近一个项目中由于物料不足,导致一批板子使用了24Mhz和8Mh两种参数的晶振,写程序时也没多想,调试阶段使用的是焊接24Mhz晶振的板子,一切功能OK,可是在将时钟配置24修改未8之后,在8Mhz的板子上竟然出现了BUG,串口无法正常发送/接收数据,首先想到的是波特率,其实也就是时钟,可是没想到竟然是使用CubeMx建立工程的问题,最后还是拿出了之前建立的8MHz的模板来解决的问题。

由于时间问题,尚未去排查具体是哪里设置未正确修改造成的问题,不过还是要提醒一句,越是简单的工具,有可能会造成不可思议的bug。

以上是关于24c02 写问题。单片机使用4Mhz晶振都正常,但用20Mhz晶振时,写入数据都变成1了。的主要内容,如果未能解决你的问题,请参考以下文章

STC15F2K60S2单片机利用24C02记录单片机上电次数

为啥这样写还是读不出来500数值,芯片是 24c02?

单片机是ATmega48的,写了个24C02的程序,但是程序一直没能进去,麻烦大侠们帮忙看看哪里出了问题。

单片机入门基础

单片机24c02程序求助

51单片机 24C02器件读写+Proteus仿真