往AT24C02(EEPROM)的指定地址写入“Hello World”,重启开发板后读取保存的内容,并将读到的内容通过uart输出至PC,在串口调试助手上查看内容是否发生改变
时间: 2024-02-27 18:54:45 浏览: 230
好的,您可以参考以下代码实现:
```c
#include <Wire.h> //I2C通信库
#include <SoftwareSerial.h> //串口通信库
#define EEPROM_ADDR 0x50 //EEPROM的I2C地址
#define EEPROM_SIZE 256 //EEPROM的存储容量
#define UART_RX 2 //串口RX引脚
#define UART_TX 3 //串口TX引脚
SoftwareSerial mySerial(UART_RX, UART_TX); //创建软串口对象
void writeEEPROM(int addr, String data){
Wire.beginTransmission(EEPROM_ADDR); //开始I2C通信
Wire.write((int)(addr >> 8)); //写入地址高位
Wire.write((int)(addr & 0xFF)); //写入地址低位
Wire.write(data.c_str()); //写入数据
Wire.endTransmission(); //结束I2C通信
}
String readEEPROM(int addr, int len){
String data = "";
Wire.beginTransmission(EEPROM_ADDR); //开始I2C通信
Wire.write((int)(addr >> 8)); //写入地址高位
Wire.write((int)(addr & 0xFF)); //写入地址低位
Wire.endTransmission(); //结束I2C通信
Wire.requestFrom(EEPROM_ADDR, len); //请求读取数据
while(Wire.available()){ //读取数据
char c = Wire.read();
data += c;
}
return data;
}
void setup() {
//初始化I2C总线和串口
Wire.begin();
mySerial.begin(9600);
//将"Hello World"写入EEPROM地址0x0000
writeEEPROM(0x0000, "Hello World");
}
void loop() {
//读取EEPROM地址0x0000开始的字符串
String data = readEEPROM(0x0000, 11);
//通过串口输出读取到的数据
mySerial.println(data);
//延时1秒,等待下一次读取
delay(1000);
}
```
在上述代码中,我们通过 `writeEEPROM()` 函数向EEPROM中指定地址写入数据,通过 `readEEPROM()` 函数从EEPROM中指定地址读取数据。在 `setup()` 函数中,我们将字符串 "Hello World" 写入EEPROM地址0x0000。在 `loop()` 函数中,我们不断读取EEPROM地址0x0000开始的字符串,并通过串口输出读取到的数据。您只需要将开发板连接到PC,打开串口调试助手,即可查看串口输出的内容。
阅读全文