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

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

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

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

AT24C128/256 提供 131,072/262,144 位串行电可擦除可编程只读存储器 (EEPROM),组织为 16,384/32,768 个字,每个字为 8 位。 该设备的级联功能允许多达 4 个设备共享一个公共的两线总线。 该器件针对许多工业和商业应用进行了优化,在这些应用中,低功率和低电压操作是必不可少的。 这些器件采用节省空间的 8 引线 JEDEC PDIP、8 引线 JEDEC SOIC、8 引线 EIAJSOIC、8 引线 MAP (24C128)、8 引线 TSSOP、8 引线 SOIC 阵列封装和 8 焊球 dBGA2 封装 . 此外,整个系列提供 2.7V(2.7V 至 5.5V)和 1.8V(1.8V 至 3.6V)版本。

在这里插入图片描述

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
#include <AT24Cxx.h>
#define EEPROM\_ADDRESS 0x50
int readPin = 2;
int writePin = 3;
int counts = 1;
byte readState;
byte writeState;

static AT24Cxx eeprom(EEPROM_ADDRESS,256); // 256Kb

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();
Serial.println("\*\*\*\*EEPROM AT24C256 \*\*\*\*");
}

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

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

3、仿真结果

在这里插入图片描述

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