OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3177|回复: 6

AT24CXX 读数据问题

[复制链接]

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-8-25
在线时间
8 小时
发表于 2016-8-25 20:45:44 | 显示全部楼层 |阅读模式
1金钱
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{                                 
        u8 temp=0;                                                                                                                                                               
    IIC_Start();  
        if(EE_TYPE>AT24C16)
        {
                IIC_Send_Byte(0XA0);         
                IIC_Wait_Ack();
                IIC_Send_Byte(ReadAddr>>8);
                IIC_Wait_Ack();                 
        }else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));

        IIC_Wait_Ack();
    IIC_Send_Byte(ReadAddr%256);  
        IIC_Wait_Ack();            
        IIC_Start();                     
        IIC_Send_Byte(0XA1);           //进入接收模式  
        IIC_Wait_Ack();         
    temp=IIC_Read_Byte(0);                  
    IIC_Stop();   
        return temp;
}

请问,上面红色字体,进入接收模式,为什么不用进行02/04/08/16/32等类型的判断的
应该对于04/08/16类型的发的字节不一定是0xA1吧。是不是应该进行下面这样的判断???
if(EE_TYPE>AT24C16)
{
      IIC_Send_Byte(0XA1);
}else IIC_Send_Byte(0XA1+((ReadAddr/256)<<1));

最佳答案

查看完整内容[请看2#楼]

无需判断,这里都是一样
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-8-25 20:45:45 | 显示全部楼层
无需判断,这里都是一样
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-5-14
在线时间
17 小时
发表于 2016-8-25 21:33:10 | 显示全部楼层
今天才在调试AT24C256, 发现原子战舰的固件库例程不能正确读写。读到的都是0.或许是楼主发现的问题呢
回复

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-8-25
在线时间
8 小时
 楼主| 发表于 2016-8-26 20:27:01 | 显示全部楼层
aseeman 发表于 2016-8-25 21:33
今天才在调试AT24C256, 发现原子战舰的固件库例程不能正确读写。读到的都是0.或许是楼主发现的问题呢

但是AT24C256是大于AT24C16的,应该也是发0xA1的吧,只有C01/02/04/08/16发的可能不一样,纯属我个人理解。
回复

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-8-25
在线时间
8 小时
 楼主| 发表于 2016-9-1 20:59:39 | 显示全部楼层
但是08/16/32不是有a1,a2,a3的存在吗,然后他们的值不是有可能就不为0,然后就不一定是0xA1了吗,还是说所有的进入接收模式,都是0xA1,对于只有一个存储器时。
回复

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-8-25
在线时间
8 小时
 楼主| 发表于 2016-9-1 21:00:29 | 显示全部楼层
正点原子 发表于 2016-8-25 20:45
无需判断,这里都是一样

但是08/16/32不是有a1,a2,a3的存在吗,然后他们的值不是有可能就不为0,然后就不一定是0xA1了吗,还是说所有的进入接收模式,都是0xA1,对于只有一个存储器时。
回复

使用道具 举报

5

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2016-6-2
在线时间
46 小时
发表于 2016-9-14 11:04:23 | 显示全部楼层
LanceHu 发表于 2016-9-1 21:00
但是08/16/32不是有a1,a2,a3的存在吗,然后他们的值不是有可能就不为0,然后就不一定是0xA1了吗,还是 ...

视频里面有讲解,正点原子开发板在硬件上设置了A2=A1=A0=0;
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 15:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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