EEPROM数据存储模块

            目录

1 概述
2 Specification
3 设置
4 地址真相表
5 示例代码

概述
Arduino自身带了少量的数据存储空间,但想存大量数据怎么办?这里我们推荐EEPROM数据存储模块。EEPROM存储模块使用I2C总线来与Arduino进行连接,并且采用可插拔的芯片,用户可以根据情况更换存储容量大的芯片。与interface shield接口扩展板和I2C专用连接线配合使用,即插即用。EEPROM储模块上使用的是24C系列的EEPROM芯片,容量为256Kbit,即32K字节。

Specification
电压:+5V
电流:<10mA
接口:IIC/I2C/TWI
容量:32k bytes
重量:10g

设置
地址:0x50的
从0x50-0x57通过的swither调整

DFR0117 Diagram.jpg
地址真相表
Address Configuration Truth Table‎
示例代码

/*

  • Use the I2C bus with EEPROM 24LC64
  • Sketch: eeprom.pde
  • Author: hkhijhe
  • Date: 01/10/2010

*/

#include <Wire.h> //I2C library

void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
int rdata = data;
Wire.beginTransmission(deviceaddress);
Wire.send((int)(eeaddress >> 8)); // MSB
Wire.send((int)(eeaddress & 0xFF)); // LSB
Wire.send(rdata);
Wire.endTransmission();
}

// WARNING: address is a page address, 6-bit end will wrap around
// also, data can be maximum of about 30 bytes, because the Wire library has a buffer of 32 bytes
void i2c_eeprom_write_page( int deviceaddress, unsigned int eeaddresspage, byte* data, byte length ) {
Wire.beginTransmission(deviceaddress);
Wire.send((int)(eeaddresspage >> 8)); // MSB
Wire.send((int)(eeaddresspage & 0xFF)); // LSB
byte c;
for ( c = 0; c < length; c++)
Wire.send(data[c]);
Wire.endTransmission();
}

byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.send((int)(eeaddress >> 8)); // MSB
Wire.send((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress,1);
if (Wire.available()) rdata = Wire.receive();
return rdata;
}

// maybe let's not read more than 30 or 32 bytes at a time!
void i2c_eeprom_read_buffer( int deviceaddress, unsigned int eeaddress, byte *buffer, int length ) {
Wire.beginTransmission(deviceaddress);
Wire.send((int)(eeaddress >> 8)); // MSB
Wire.send((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress,length);
int c = 0;
for ( c = 0; c < length; c++ )
if (Wire.available()) buffer[c] = Wire.receive();
}

void setup()
{
char somedata[] = "this is data from the eeprom"; // data to write
Wire.begin(); // initialise the connection
Serial.begin(9600);
i2c_eeprom_write_page(0x50, 0, (byte *)somedata, sizeof(somedata)); // write to EEPROM

delay(10); //add a small delay

Serial.println(&quot;Memory written&quot;);

}

void loop()
{
int addr=0; //first address
byte b = i2c_eeprom_read_byte(0x50, 0); // access the first address from the memory

while (b!=0) 
{
  Serial.print((char)b); //print content to serial port
  addr++; //increase address
  b = i2c_eeprom_read_byte(0x50, addr); //access an address from the memory
}
Serial.println(&quot; &quot;);
delay(2000);

}

Nextredirectltr.png购买 EEPROM Data Storage Module For Arduino (SKU:DFR0117)

标签: Arduino传感器