找回密码
 注册
关于网站域名变更的通知
查看: 633|回复: 4
打印 上一主题 下一主题

关于AT24C02的写入读取问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-1-5 13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这两天在学习AT24C02, 晶振11.0592MHz 写了一段代码, 首先向24C02 0-15地址写入0-15, 再读取出来显示在1602上, 结果发现, 奇数位是正确的, 偶数位错误.经排查发现时写入错误, 即本应写入0123456789abcdef, 实际写入0520456084ace, 困扰我很久. 今天早上突发奇想, 是不是写的太快了, 加延时试试看.问题解决....  z" i; N3 @- x/ K5 b: H2 {
总结:! I) y' `! ~! G3 B) v6 n; V0 [# f3 R
24C02在逐位写入数据时, 必须加延时, 否则器件处理不过来导致偶数位写入失败. 手头的这颗料, 需要加1毫秒延时才能保证写入正确.
! t, o" Y! ]7 P6 D) [读取时, 不加延时也能正确读取到,(可能器件的读取速度快), 保险起见, 建议加上延时.
3 p. U+ p0 ~0 r1 `: @# W' X( \: C5 g7 ~, q

; U, A! B- F$ S( ^* z        for(i=0; i<16; i++). z& u' `9 L5 L/ c
        {
7 E8 L6 _' Z/ i7 K0 d9 z! O                at2402_write(i,i);+ Q$ b9 c' O& t% G; d$ |# C# \/ D) d3 U
                delayms(1);
) `# I6 ]' R; k4 d  Y( A        }& r4 N+ W3 l3 U5 n
        $ @. M  l9 G* e
        for(i=0; i<16; i++)
! P0 W2 P. t7 j' n( `9 L9 |5 |        {, f4 h4 p1 g1 J' r
                lcdwritechar(2,i,num2str(at2402_read(i)));
- ?% n. l) q8 v        }1 R$ C1 J- W7 U
+ ^+ i0 x0 E8 @$ I
$ D2 B  Q8 T9 F+ G' o

该用户从未签到

2#
发表于 2021-1-5 16:04 | 只看该作者
仔细看看 AT24C02 的资料哦。

该用户从未签到

3#
发表于 2021-1-5 16:06 | 只看该作者
本帖最后由 行者~ABC 于 2021-1-5 16:07 编辑   a# z# h' m0 g9 \) d9 K9 {

+ ~% s1 O) h2 j5 e1 p, k7 K! m, D还有就是读写的时候需要加延时

点评

我记得at24c02 写周期最长是5ms,数据手册上有的, 你这个延时1ms也是有风险的;at24c02具有8字节写模式,连续写8字节后,需要延时5ms的;字节写模式也需要等待5ms是比较安全的;如果不等待5ms,再写下一字节是需要  详情 回复 发表于 2021-1-5 16:10
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2021-1-5 16:10 | 只看该作者
    行者~ABC 发表于 2021-1-5 16:065 W, @- L, g6 M8 F# G# W
    还有就是读写的时候需要家延时
    ' x% b5 \9 P! a  t% D$ J
    我记得at24c02 写周期最长是5ms,数据手册上有的, 你这个延时1ms也是有风险的;at24c02具有8字节写模式,连续写8字节后,需要延时5ms的;字节写模式也需要等待5ms是比较安全的;如果不等待5ms,再写下一字节是需要判段应答位的,应答位不对,等待再重新发写命令才可以的。
    " E0 }. c6 |# ^( h4 k
  • TA的每日心情

    1684134877
  • 签到天数: 1 天

    5#
    发表于 2021-1-5 17:30 | 只看该作者
    只能说搂主对I2C的工作规范不了解,其对脉宽时延是有明确的要求的,其实不光是I2C,所有串行通信都对时序有着比较严格的要求,编程时必须按照时序规范要求写,移植代码时也要做到心里有数,否则在低速低频的单片机上工作正常的代码用到高速高频的单片机就会出错
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-21 05:51 , Processed in 0.140625 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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