24c02_drive.ino
#include <Wire.h> #define EEPROM_ADDRESS 0x50 // 24C02的I2C地址 void setup() { Wire.begin(); // 初始化I2C总线 Serial.begin(9600); // 初始化串口通信 Serial.println("24C02 EEPROM 测试程序"); // 写入测试数据 writeEEPROM(0, 'H'); writeEEPROM(1, 'e'); writeEEPROM(2, 'l'); writeEEPROM(3, 'l'); writeEEPROM(4, 'o'); delay(10); // 等待写入完成 // 读取并显示数据 Serial.print("从EEPROM读取的内容: "); for (int i = 0; i < 5; i++) { char c = readEEPROM(i); Serial.print(c); } Serial.println(); } void loop() { // 主循环可以留空,因为我们只在setup()中执行一次读写测试 } // 向EEPROM写入一个字节的数据 void writeEEPROM(int address, byte data) { Wire.beginTransmission(EEPROM_ADDRESS); Wire.write((int)(address >> 8)); // 发送高地址字节 Wire.write((int)(address & 0xFF)); // 发送低地址字节 Wire.write(data); // 发送数据 Wire.endTransmission(); // 结束传输 delay(5); // 等待写入完成(24C02的写入周期约为5ms) } // 从EEPROM读取一个字节的数据 byte readEEPROM(int address) { byte data = 0xFF; Wire.beginTransmission(EEPROM_ADDRESS); Wire.write((int)(address >> 8)); // 发送高地址字节 Wire.write((int)(address & 0xFF)); // 发送低地址字节 Wire.endTransmission(); Wire.requestFrom(EEPROM_ADDRESS, 1); // 请求1个字节的数据 if (Wire.available()) { data = Wire.read(); // 读取数据 } return data; }
上面是一个用于Arduino驱动24C02芯片进行数据读写的程序。这个程序提供了基本的初始化、写入和读取功能,你可以根据需要修改或扩展它。 这个程序的工作原理如下:
在`setup()`函数中初始化I2C总线和串口通信,然后写入测试数据并读取显示。
`writeEEPROM()`函数通过I2C发送数据到指定地址,并在发送后延时等待写入完成。
`readEEPROM()`函数通过I2C从指定地址读取数据。 使用时需要注意:
(1),24C02的I2C地址可能需要根据实际连接调整(默认是0x50)。
(2),确保Arduino的SDA和SCL引脚正确连接到24C02的对应引脚。
(3),写入操作后需要适当延时(至少5ms),确保数据成功写入。