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记录单片机上电次数