极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10578|回复: 1

mega2560外部EEPROM地址出错

[复制链接]
发表于 2014-9-1 09:53:48 | 显示全部楼层 |阅读模式
#include <Wire.h>

void setup()
{
  Serial.begin(9600);  
  delay(10);
  Wire.begin();
}

byte val = 0;
int index = 0;
void loop()
{
  byte a0 = 0x00;
  byte b0 = 0x00;
  write_data(0x50 ,0x00 ,0xbb);
  //write_data(0x57 ,0x00 ,0x22);

  a0 = read_data(0x50 ,0x00);
  //byte b0 = read_data(0x57 ,0x00);

  Serial.print("a=");delay(10);
  Serial.println(a0,HEX);delay(10);
  Serial.print("b=");delay(10);
  Serial.println(b0,HEX);delay(10);
  delay(2000);
}

void write_data(byte num ,byte add ,byte data)
{
  // write
  Wire.beginTransmission(int(num));
  Wire.write(add);            // send  address   ww
  Wire.write(data);            // send  data ww
  Wire.endTransmission();     //
  delay(10);  //very import ww
}

byte read_data(byte num ,byte add)
{
  // read
  Wire.beginTransmission(int(num));
  Wire.write(add);            // send  address
  Wire.endTransmission();     //

  Wire.requestFrom(int(num), 1);    // request 2 bytes from slave device #112
  if(1 <= Wire.available())
  {
      val = Wire.read();  // receive high byte (overwrites previous reading)
  }
  delay(10);
  return val;
}

我用AT24C02作为外部EEPROM,板子是mega2560,(SDA为Pin20,SCL为Pin21——这没错吧?)错误如下:
不管AT24C02硬件地址(A0A1A2)为多少,数据照样写入AT24C02中~
即:
write_data(0x50,0x00,0xaa);
write_data(0x57,0x00,0x11);
接着读取数据时
read_data(0x50,0x00)的值为0x11;
read_data(0x57,0x00)的值也为0x11~
我AT24C02的硬件地址为0x50~
求各位大神指教

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-9-1 23:25:18 | 显示全部楼层
http://baike.baidu.com/view/1837975.htm?fr=aladdin
看下A0、A1、A2接法是否正确
另外 后面还有寻址方式,这货寻址要用页面的
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 20:19 , Processed in 0.035026 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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