Arduino与Proteus仿真实例-M24C01串行(I2C)EEPROM数据存取驱动仿真

M24C01串行(I2C)EEPROM数据存取驱动仿真

EEPROM(电可擦除可编程只读存储器)是用户可修改的只读存储器(ROM),可以通过施加高于正常电压的电压反复擦除和重新编程(写入)。 与 EPROM 芯片不同,EEPROM 不需要从计算机中取出即可进行修改。 但是,EEPROM 芯片必须整体擦除和重新编程,而不是选择性地擦除和重新编程。 它还具有有限的寿命——也就是说,它可以重新编程的次数被限制在数万或数十万次。 在计算机使用过程中经常重新编程的 EEPROM 中,EEPROM 的寿命可能是一个重要的设计考虑因素。

一种特殊形式的 EEPROM 是闪存,它使用正常的 PC 电压进行擦除和重新编程。

M24C01C 是一款 1K 位串行电可擦除 PROM,电压范围为 4.5V 至 5.5V。 该器件被组织为具有 2 线串行接口的 128 x 8 位存储器的单个块。 低电流设计允许最大运行。 待机电流和活动电流分别仅为 5 µA 和 1 mA。 该器件具有最多 16 字节数据的页面写入能力,并且字节和页面写入的快速写入周期时间仅为 1 ms。 功能地址线允许在同一总线上连接多达 8 个 24C01C 设备,以实现多达 8K 位的连续 EEPROM 存储器。 该器件采用标准 8 引脚 PDIP、8 引脚 SOIC(3.90 毫米)、8 引脚 2x3 DFN 和 TDFN、8 引脚 MSOP 和 TSSOP 封装。

在前面的文章中,对24C01也做了详细的介绍,请参考:

1、仿真电路原理

在这里插入图片描述

2、仿真代码实现

本次实例使用的到的开源库如下:

演示代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <Eeprom24C01\_02.h>
#define EEPROM\_ADDRESS 0x50
int readPin = 2;
int writePin = 3;
int counts = 1;
byte readState;
byte writeState;


static Eeprom24C01_02 eeprom(EEPROM_ADDRESS);

void read\_interrupt(){
readState = 1;
}

void write\_interrupt(){
writeState = 1;
}

void setup(){
pinMode(readPin,INPUT);
pinMode(writePin,INPUT);
// 绑定中断
attachInterrupt(digitalPinToInterrupt(readPin),read_interrupt,RISING);
attachInterrupt(digitalPinToInterrupt(writePin),write_interrupt,RISING);

Serial.begin(9600);

// Wire.begin();
eeprom.initialize(); // 初始化
Serial.println("\*\*\*\*EEPROM 24C01 \*\*\*\*");
}

void loop(){
if(readState){
int value = eeprom.readByte(0); // 读数据
Serial.print("read:");
Serial.print(value);
Serial.println();
readState = 0;
}

if(writeState){
Serial.print("write:");
Serial.print(counts);
Serial.println();
eeprom.writeByte(0, counts); // 写数据
counts++;
writeState = 0;
}
}

3、仿真结果

在这里插入图片描述

文章来源: https://iotsmart.blog.csdn.net/article/details/121023702