找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4022|回复: 6
打印 上一主题 下一主题
收起左侧

对于AT24C02的大问题

  [复制链接]
跳转到指定楼层
楼主
ID:86926 发表于 2016-12-13 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
搞了个IIC协议的24C02.但是发现我在写器件地址时低三位不对也能写入数据。比如0xa6.已知24C02的三只地址引脚全部接地。而高四位是固定的a。低三位是任何数都可以写。很奇怪。而且用了例程来改了器件地址也是一样。流程如下:起始信号>写器件地址>读应答信号>写寄存器地址>读应答信号>写数据>写应答>停止信号             主要是在第一个写器件地址的时候写入0xa6也能收到应答信号。实在不明。请大神赐教!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-1-6 23:22 | 只看该作者
把你的程序帖出来看看
回复

使用道具 举报

板凳
ID:149988 发表于 2017-1-7 08:14 | 只看该作者

RE: 对于AT24C02的大问题

你说的对,确实是这样,改成a6、ac照样存入和取出。我想是否因为开发板上只有一只器件所致,如果多接几只情况是否不是这样。
回复

使用道具 举报

地板
ID:164046 发表于 2017-2-9 17:23 | 只看该作者
我也遇到过这样的现象,实在是不明白是什么原因造成的。你后来有怎么解诀的吗?
回复

使用道具 举报

5#
ID:162622 发表于 2017-2-9 19:52 | 只看该作者
理论上说可以连8片,没有实验过这个器件地址,改天我也试试,
回复

使用道具 举报

6#
ID:222214 发表于 2017-9-9 21:14 | 只看该作者
请问这个问题你解决了没有?我也遇到同样问题,现在的结果就是AT24C02干扰总线上其他IIC器件。
回复

使用道具 举报

7#
ID:469932 发表于 2019-1-29 01:10 | 只看该作者
你们这理解有错误
看下面例子

void  main()
{
        uchar temp=0;
        SDA=1;   //对两功能引脚进行初始化
        SCL=1;
        iic_Put(0xa0,0x00,0x55);
        delay(50);                       
        //此延时非常重要,数据写进EEPROM后要延迟一段时间才能进行读。
        temp=iic_Rev(0xa0,0x00);
        while(1)
        {               
                P0 = temp;
        }
}

0xa0是器件之间的区别地址,他决定了你数据要放入哪一个24C02,因为都是单总线,所以有一个区分号(器件地址),这个错了读与写都进行不了。0x00才是存放数据的地址,也就是说0x55要放到他那里去。
因此这个器件在写数据时是要写两种地址的

评分

参与人数 6黑币 +102 收起 理由
jinsheng7533967 + 35 赞一个!
#include51.h + 15 绝世好帖!
Trump1438 + 12 回帖助人的奖励!
areyouok + 15 回帖助人的奖励!
yoxi + 15 回帖助人的奖励!
zhengchong60 + 10 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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