OpenEdv-开源电子网

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

24C02改为24C08 怎么改这段代码

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-8-25
在线时间
2 小时
发表于 2016-11-1 14:44:54 | 显示全部楼层 |阅读模式
1金钱

//在AT24CXX指定地址读出一个数据

//ReadAddr:开始读数的地址  
//返回值 :读到的数据
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);//发送高地址            
        }else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据           
        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;
}

问题:硬件改为24C08 ,这段代码要不要改动呢



最佳答案

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

24cxx 头文件有宏定义,修改就能用
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

125

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2016-5-13
在线时间
76 小时
发表于 2016-11-1 14:44:55 来自手机 | 显示全部楼层
24cxx  头文件有宏定义,修改就能用
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-8-25
在线时间
2 小时
 楼主| 发表于 2016-11-1 14:57:37 | 显示全部楼层
不用改其他的吗;但是我为什么只能读到0-255的数据啊?
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-8-25
在线时间
2 小时
 楼主| 发表于 2016-11-1 14:59:53 | 显示全部楼层
而且很奇怪,读地址272和读16的数据是一样的
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-8-25
在线时间
2 小时
 楼主| 发表于 2016-11-1 15:07:47 | 显示全部楼层
比如读地址800的数据结果和读地址16的数据也同样
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2016-11-1 17:21:12 | 显示全部楼层
24C08 容量8K BIT  也就是1K BYTE ,地址宽度10BIT.高两位写在 AX 里.    1010ABBW(H)  ,A设备地址引脚电平(低电平为0,高电平为1)  B地址高位 W读写位.
回复

使用道具 举报

13

主题

109

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2015-9-26
在线时间
359 小时
发表于 2016-11-3 16:21:06 | 显示全部楼层
IIC_Send_Byte(0XA1+((ReadAddr/256)<<1));           //进入接收模式       

回复

使用道具 举报

1

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2019-3-5
在线时间
42 小时
发表于 2019-8-9 23:34:33 | 显示全部楼层
xqn2012 发表于 2016-11-3 16:21
IIC_Send_Byte(0XA1+((ReadAddr/256)

有用,解决了,谢谢 我之前网上看了好多文献 ,当时看懂翻页的时候,以为第二次发送地址就不需要再次把块地址加在上面,没想到是这里出了问题,谢谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 15:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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