M24M02的存储器读写程序
时间: 2023-09-28 16:10:47 浏览: 331
以下是M24M02存储器的读写程序示例:
#include <Wire.h>
#define DEVICE_ADDRESS 0x50 //M24M02存储器的I2C地址
#define PAGE_SIZE 64 //一页的大小
#define MEMORY_SIZE 256 //存储器的大小
void setup() {
Wire.begin();
Serial.begin(9600);
}
void loop() {
byte data[PAGE_SIZE]; //存储读取的数据
int address = 0; //存储器的地址
//写入数据
for(int i=0; i<PAGE_SIZE; i++) {
data[i] = i; //写入0-63的数字
}
int pageNumber = address / PAGE_SIZE; //计算页码
int pageOffset = address % PAGE_SIZE; //计算页内偏移量
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(pageNumber >> 8); //写入页码的高字节
Wire.write(pageNumber & 0xFF); //写入页码的低字节
Wire.write(pageOffset); //写入页内偏移量
Wire.write(data, PAGE_SIZE); //写入数据
Wire.endTransmission();
delay(10); //等待写入完成
//读取数据
pageNumber = address / PAGE_SIZE; //计算页码
pageOffset = address % PAGE_SIZE; //计算页内偏移量
Wire.beginTransmission(DEVICE_ADDRESS);
Wire.write(pageNumber >> 8); //写入页码的高字节
Wire.write(pageNumber & 0xFF); //写入页码的低字节
Wire.write(pageOffset); //写入页内偏移量
Wire.endTransmission();
Wire.requestFrom(DEVICE_ADDRESS, PAGE_SIZE); //请求读取数据
while(Wire.available()) {
byte value = Wire.read(); //读取数据
Serial.print(value); //输出数据
Serial.print(" ");
}
Serial.println();
address += PAGE_SIZE; //移动到下一页
if(address >= MEMORY_SIZE) { //如果已经读取到最后一页
address = 0; //回到第一页
}
delay(1000); //等待一秒钟
}
阅读全文