OpenEdv-开源电子网

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

at24c1024 地址超出65536怎么写

[复制链接]

7

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-10-11
在线时间
43 小时
发表于 2016-11-28 14:13:54 | 显示全部楼层 |阅读模式
10金钱
现在小弟的用的[size=17.1429px] [size=17.1429px]DataAdd 65535以内的数据都正常,,,[size=17.1429px] [size=17.1429px]DataAdd超出65535,,想用17位的存储,这边出错,,,有没有大神搞过




static uint8_t I2C_Wite_Byte(uint8_t cmd,uint32_t DataAdd,uint8_t Data)   //17
{
        I2C_Start();
        I2C_Write((cmd & 0xfe)|0x02); //02 17位
       
        DataAdd=DataAdd & 0x0001FFFF; //17位的地址
       
        if(!I2C_Check_Ack())
        {
                return 0;
        }
        I2C_Write((uint8_t)(DataAdd >>8));
        if(!I2C_Check_Ack())
        {
                return 0;
        }
        I2C_Write((uint8_t)(DataAdd % 256));
        if(!I2C_Check_Ack())
        {
                return 0;
        }
        I2C_Write(Data);
        if(!I2C_Check_Ack())
        {
                return 0;
        }
        I2C_Stop();
        IIC_Delay(10 * DELAY_TIME );
        return 1;
}

最佳答案

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

只需把I2C通信的第一个字节的bit-1(即P0)改为1,你就打开了一片新天地,可以访问另外的65536字节啦 参考建议如下: [mw_shl_code=c,true]static uint8_t I2C_Wite_Byte(uint8_t cmd,uint32_t DataAdd,uint8_t Data) //17 { I2C_Start(); I2C_Write((cmd&0xfe) | (DataAdd&0x10000?0x2:0x0)); //bit[16] DataAdd=DataAdd & 0xFFFF; //bit[15:0] if(!I2C_Che ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-11-28 14:13:55 | 显示全部楼层
只需把I2C通信的第一个字节的bit-1(即P0)改为1,你就打开了一片新天地,可以访问另外的65536字节啦

2.png

参考建议如下:

[mw_shl_code=c,true]static uint8_t I2C_Wite_Byte(uint8_t cmd,uint32_t DataAdd,uint8_t Data)   //17
{
        I2C_Start();
        I2C_Write((cmd&0xfe) | (DataAdd&0x10000?0x2:0x0)); //bit[16]
        
        DataAdd=DataAdd & 0xFFFF; //bit[15:0]
        
        if(!I2C_Check_Ack())
        {
                return 0;
        }
        
        ......
        [/mw_shl_code]
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-22
在线时间
8 小时
发表于 2017-3-24 14:25:31 | 显示全部楼层
xkwy 发表于 2016-11-28 15:50
只需把I2C通信的第一个字节的bit-1(即P0)改为1,你就打开了一片新天地,可以访问另外的65536字节啦

大神啊
回复

使用道具 举报

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-22
在线时间
8 小时
发表于 2017-3-24 14:35:03 | 显示全部楼层


那请问如果是AT24CM02(AT24C2048)呢
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2019-2-16
在线时间
1 小时
发表于 2020-6-7 07:15:25 | 显示全部楼层
591681656@qq.co 发表于 2017-3-24 14:35
那请问如果是AT24CM02(AT24C2048)呢

查手册吧,再修改例程
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 12:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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