heart33k 2017-01-16 16:15 采纳率: 0%
浏览 2219

AT24Cxx 读写问题 写出现不明白的问题

我用的是AT24C512来存储数据,但写地址的时候,写完16位的地址,然后再写一个8位数据;
在读出来的时候,读到的是高8位地址所指向的地址的数据,且数据等于地址的低8位,怎么也读不到16位地址所指向地址的数据。
//向指定地址写一个字节数据
Write_IIC(0x00,0x00,0x10); //向0x0000地址写数据0x10
Delay(5);
Write_IIC(0x01,0x01,0x11); //向0x0101地址写数据0x11
Delay(5);
Write_IIC(0x02,0x02,0x12); //向0x0202地址写数据0x12
Delay(5);
Write_IIC(0x03,0x03,0x13); //向0x0303地址写数据0x13
Delay(5);
Write_IIC(0x04,0x04,0x14); //向0x0404地址写数据0x14
Delay(5);
//读指定地址的数据
Send_Data(Read_ICC(0x00,0x00)); //读0x0000地址的数据
Delay(1);
Send_Data(Read_ICC(0x01,0x01)); //读0x0101地址的数据

Delay(1);
Send_Data(Read_ICC(0x02,0x02)); //读0x0202地址的数据
Delay(1);
Send_Data(Read_ICC(0x03,0x03)); //读0x0303地址的数据
Delay(1);
Send_Data(Read_ICC(0x04,0x04)); //读0x0404地址的数据
Delay(1);

我是从串口接收数据,读出来的数据为:
01 02 03 04 14
证明只有最后一次写,才把0x14写到0x0404里面;或者最后一次是往地址0x04写了一次0x04,然后再写0x14,0x14把0x04覆盖了。
第一次往0x0000写0x10不成功,第二次把地址的低8位0x01写到高8位地址0x01里去了,第三次,第四次与第二次一样。
为什么会这样

uchar Read_ICC(uchar ADD_H,uchar ADD_L)
{
uchar dat;
I2C_Start();
Send_Byte(0xa0); //发器件地址,并通知准备发送地址
Response(); //应答
Send_Byte(ADD_H); //发器件内部存储器地址高位
Response(); //应答
Send_Byte(ADD_L); //发器件内部存储器地址低位
Response(); //应答
I2C_Start();
Send_Byte(0xa1); //发器件地址,并通知准备读取数据
Response(); //应答
dat=Rcv_Byte(); //读取数据
I2C_Stop(); //停止I2C总线
return (dat);

}

void Write_ICC(uchar ADD_H,uchar ADD_L,uchar dat)
{
I2C_Start();
Send_Byte(0xa0); //发器件地址,并通知准备发送地址,要对应芯片地址
Response(); //应答
Send_Byte(ADD_H); //发器件内部存储器地址高位
Response(); //应答
Send_Byte(ADD_L); //发器件内部存储器地址低位
Response(); //应答
Send_Byte(dat); //写入数据
Response(); //应答
I2C_Stop(); //停止I2C总线
}

  • 写回答

3条回答

  • ThinkHero 2017-01-17 00:56
    关注

    AT24C512是8位的存储器, 它的16位地址并不是常规16位存储器的地址.
    你注意看其规格书的第3页: Memory Organization的描述. 它的16位地址包含2个部分,高9位是页地址, 低7位是页内偏址. 共512页,每页存储128字节.

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条