|
- /*
- 【Arduino】66種傳感器模塊系列實(shí)驗(yàn)(69)
- 實(shí)驗(yàn)六十九: AT24C256 I2C接口 EEPROM 存儲(chǔ)模塊
- 程序之二
- */
- #include <Wire.h>
- #define EEPROM_ADDR 0x50
-
- void setup()
- {
- Wire.begin();
- Serial.begin(9600);
- // TESTS FOR EACH FUNCTION BEGIN HERE
- Serial.println("Writing Test:");
- for (int i=0; i<20; i++){
- i2c_eeprom_write_byte(EEPROM_ADDR,i,i+65);
- Serial.print(". ");
- delay(10);
- }
- Serial.println("");
- delay(500);
- Serial.println("Reading Test:");
- for (int i=0; i<20; i++){
- Serial.write(i2c_eeprom_read_byte(EEPROM_ADDR, i));
- Serial.print(" ");
- }
- byte PageData[30];
- byte PageRead[30];
- for (int i=0; i<30; i++){
- PageData[i] = 0;
- PageRead[i] = 0;
- }
- Serial.println("");
- for (int i=0; i<30; i++) PageData[i] = i+33;
- Serial.println("Writing Page Test:");
- i2c_eeprom_write_page(EEPROM_ADDR, 100, PageData, 28 );
- Serial.println("Reading Page Test:");
- i2c_eeprom_read_buffer( EEPROM_ADDR, 100, PageRead, 28);
- for (int i=0; i<28; i++){
- Serial.write(PageRead[i]);
- Serial.print(" ");
- }
- }
- void loop()
- {
- }
- void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data )
- {
- int rdata = data;
- Wire.beginTransmission(deviceaddress);
- Wire.write((int)(eeaddress >> 8));
- Wire.write((int)(eeaddress & 0xFF));
- Wire.write(rdata);
- Wire.endTransmission();
- }
- void i2c_eeprom_write_page
- ( int deviceaddress, unsigned int eeaddresspage, byte* data, byte length )
- {
- Wire.beginTransmission(deviceaddress);
- Wire.write((int)(eeaddresspage >> 8));
- Wire.write((int)(eeaddresspage & 0xFF));
- byte c;
- for ( c = 0; c < length; c++)
- Wire.write(data[c]);
- Wire.endTransmission();
- delay(10);
- }
- byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress )
- {
- byte rdata = 0xFF;
- Wire.beginTransmission(deviceaddress);
- Wire.write((int)(eeaddress >> 8));
- Wire.write((int)(eeaddress & 0xFF));
- Wire.endTransmission();
- Wire.requestFrom(deviceaddress,1);
- if (Wire.available()) rdata = Wire.read();
- return rdata;
- }
- void i2c_eeprom_read_buffer( int deviceaddress, unsigned int eeaddress, byte *buffer, int length )
- {
- Wire.beginTransmission(deviceaddress);
- Wire.write((int)(eeaddress >> 8));
- Wire.write((int)(eeaddress & 0xFF));
- Wire.endTransmission();
- Wire.requestFrom(deviceaddress,length);
-
- for ( int c = 0; c < length; c++ )
- if (Wire.available()) buffer[c] = Wire.read();
- }
復(fù)制代碼
|
|