找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2436|回复: 9
收起左侧

关于24c02程序问题,一个读写过后多长时间才再次写入

[复制链接]
回帖奖励 20 黑币 回复本帖可获得 20 黑币奖励! 每人限 1 次
ID:861260 发表于 2021-6-29 12:05 | 显示全部楼层 |阅读模式
就是一个读写过后多长时间才再次写入.               
                Eeprom_Write(0x72,20);
                delayms(1);
                abc=Eeprom_Read(0x72);
                sprintf(str,"%02d",(int)abc);
                LCD_PutString2(240-24,50,str,RED,WHITE);
                delayms(100);
               
                Eeprom_Write(0x73,21);
                delayms(1);
                abc=Eeprom_Read(0x73);
                sprintf(str,"%02d",(int)abc);
                LCD_PutString2(240-24*4,50,str,RED,WHITE);

这是代码 第一个可以正常的读写 读完以后总线也给空闲了 但是第二个就写不进去 读出来的是255.请问这是为什么啊
回复

使用道具 举报

ID:123289 发表于 2021-6-29 14:13 | 显示全部楼层
学会查手册,这是基本常识。
回复

使用道具 举报

ID:861260 发表于 2021-6-29 14:18 | 显示全部楼层
yzwzfyz 发表于 2021-6-29 14:13
学会查手册,这是基本常识。

手册上两次间隔几毫秒就都了,但是试了从小到大一直到100ms都不行
回复

使用道具 举报

ID:915071 发表于 2021-6-29 15:15 | 显示全部楼层
你要不试试把写入之后的延时增加看看能不能行
回复

使用道具 举报

ID:405850 发表于 2021-6-29 16:51 | 显示全部楼层
你这个只执行一次还是执行多次,如果是多次上一次最后一次读完到下一次写入时间间隔会很小
回复

使用道具 举报

ID:887202 发表于 2021-6-29 19:00 | 显示全部楼层
读出来的是255,转换为16进制其实是0xFF,说明SDA线根本就没变化,建议逻辑分析仪抓一下读写时的波形,观察规律,是否总是在第一次读写后发生异常,如果是那就可能是第一次读写后没有把SDA线复位的原因
回复

使用道具 举报

ID:838994 发表于 2021-6-29 21:12 | 显示全部楼层
加大一下延迟?要不就写成一个函数处理?
回复

使用道具 举报

ID:861260 发表于 2021-6-30 08:35 | 显示全部楼层
sadv 发表于 2021-6-29 19:00
读出来的是255,转换为16进制其实是0xFF,说明SDA线根本就没变化,建议逻辑分析仪抓一下读写时的波形,观察 ...

进行在下次开始的写的时候就和scl一起拉高给总线空闲了
回复

使用道具 举报

ID:861260 发表于 2021-6-30 08:35 | 显示全部楼层
wangzhen667 发表于 2021-6-29 21:12
加大一下延迟?要不就写成一个函数处理?

都有试过 还是不行
回复

使用道具 举报

ID:81196 发表于 2021-6-30 08:48 | 显示全部楼层
这应该不是24C02的间隔问题,应该是你底层驱动程序的时序造成的吧,你先从底层时序开始查找,上边的包装函数一般不会出问题。如果实在找不到,那就用原子哥的例程改一下试试。当然,你的芯片寻址地址是最先检查的,其次就是写入地址的范围,然后是时序(包括启用的IO模式,速率等),在最后才是你的外层封装函数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表