OpenEdv-开源电子网

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

IIC实验中把硬件AT24C02换成AT24C128

[复制链接]

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-12-3
在线时间
8 小时
发表于 2016-2-26 16:47:47 | 显示全部楼层 |阅读模式
IIC实验中把硬件AT24C02换成AT24C128后,除了改动下面的还需要改动什么。我试验了总是检查失败!!!
u8 AT24CXX_Check(void)
{
        u8 temp;
        temp=AT24CXX_ReadOneByte(16383);   
        if(temp==0X55)return 0;                  
        else
        {
                AT24CXX_WriteOneByte(16383,0X55);
            temp=AT24CXX_ReadOneByte(16383);          
                if(temp==0X55)return 0;
        }
        return 1;                                                                                          
}




#define EE_TYPE AT24C128
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1822
金钱
1822
注册时间
2014-6-27
在线时间
978 小时
发表于 2016-2-26 17:13:21 | 显示全部楼层
还要考虑页大小,保证跨页写数据正确性问题。
回复 支持 反对

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11537
金钱
11537
注册时间
2014-4-1
在线时间
1314 小时
发表于 2016-2-26 17:16:18 | 显示全部楼层

128的地址已经超范围了,要增加一个字节。

回复 支持 反对

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-12-3
在线时间
8 小时
 楼主| 发表于 2016-2-26 17:20:52 | 显示全部楼层
xuande 发表于 2016-2-26 17:16
128的地址已经超范围了,要增加一个字节。

#define AT24C01                127
#define AT24C02                255
#define AT24C04                511
#define AT24C08                1023
#define AT24C16                2047
#define AT24C32                4095
#define AT24C64            8191
#define AT24C128        16383
#define AT24C256        32767
我是按照这个来的,怎么增加啊
回复 支持 反对

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-12-3
在线时间
8 小时
 楼主| 发表于 2016-2-26 17:21:13 | 显示全部楼层
TinyBoy 发表于 2016-2-26 17:13
还要考虑页大小,保证跨页写数据正确性问题。

怎么弄啊
回复 支持 反对

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1822
金钱
1822
注册时间
2014-6-27
在线时间
978 小时
发表于 2016-2-26 17:29:58 | 显示全部楼层

/*********************************************************************
写数据,考虑跨页问题,只需要关心写入起始地址即可
返回:0,操作失败,1操作成功
*********************************************************************/
u8 AT24CXX_PageWrite(u16 WriteAddr, u8 *buf, u16 Len)
{
        u8 wr_page,wr_offset,x;
        wr_offset=I2C_PageSize-WriteAddr%I2C_PageSize;//起始地址所在的页还可以写入数据的个数
        if(Len>wr_offset)//需要跨页写,如果wr_offset为I2C_PageSize,刚好是一个页的开始
        {
                x=AT24CXX_WriteLenByte(WriteAddr, buf, wr_offset);//x=0,操作IIC失败,下面操作没必要了
                if(x)
                {
                        Len-=wr_offset;buf+=wr_offset;WriteAddr+=wr_offset;//重新定位
                        wr_page=Len/I2C_PageSize;//重新计算要写入的页数量
                        wr_offset=Len%I2C_PageSize;//重新计算页偏移量?
                        while(wr_page)//写入整页数据
                        {
                                AT24CXX_WriteLenByte(WriteAddr, buf, I2C_PageSize);
                                buf+=I2C_PageSize;
                                WriteAddr+=I2C_PageSize;
                                wr_page--;
                               
                        }
                        if(wr_offset)//不够一页的数据
                        {
                                AT24CXX_WriteLenByte(WriteAddr, buf, wr_offset);
                        }
                               
                }
               
        }
        else//可以在当前起始地址所在的页写入
        {
                x=AT24CXX_WriteLenByte(WriteAddr, buf, Len);
        }
        return x;   
}
最近用到24LC256,写了一个写数据函数,你可以看下。
回复 支持 反对

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1822
金钱
1822
注册时间
2014-6-27
在线时间
978 小时
发表于 2016-2-26 17:30:41 | 显示全部楼层
TinyBoy 发表于 2016-2-26 17:29
/*********************************************************************
写数据,考虑跨页问题,只需 ...

你把页大小改成你的就行了
回复 支持 反对

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2019-9-11
在线时间
37 小时
发表于 2019-11-12 17:33:55 | 显示全部楼层
我也没有看懂,可不可以请大佬讲解一下,我是用的硬件iic做的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 05:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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