EEPROM 代表电子可擦除可编程只读存储器。它允许在使用很少的功率的情况下长时间写入和存储值。大多数微控制器甚至在其电路中直接具有 EEPROM,例如 ATmega328P(Arduino Uno 芯片),它有 1KB。但如果这还不够呢?SD 卡具有更大的存储容量,但也更复杂、体积更大且耗电量更大。在本教程中,我将展示使用 24C02 EEPROM IC 向项目添加另一个 2KB 非易失性存储器是多么容易。
我选择的芯片有多种封装,但因为我需要将它们安装在 PCB 上,所以我选择了 SOIC-8 封装,这是一种表面贴装变体。首先,我将 EEPROM IC 部件添加到 Eagle 中,以及用于 ADDR 引脚的 3 针接头和用于其他引脚的 5 针接头。然后我简单地在引脚之间路由网段以连接它们。
接下来,我首先放置 IC,然后在两侧放置接头,将其全部布置在 PCB 上。我确保它们直接排成一行,因为穿过路径会增加很多不必要的复杂性。
我使用 Chilipeppr 为我的 CNC 路由器生成 Gcode,我用它来铣削板上的痕迹。然后只需将所有东西焊接在一起即可。
将 EEPROM 芯片连接到 Arduino Uno 板很简单。以下是连接列表:
AT24C02 | Uno
GND | GND
VCC | 5v
SDA | SDA
SCL | SCL
WP | GND (Connect to VCC to disable writing)
只有在使用多个 EEPROM 芯片时才需要地址引脚。如果是这种情况,只需增加每个新芯片的三位地址值。例如,第三个 IC 将连接这些引脚:
A0 | A1 | A2
0 | 1 | 0
要写入数据,首先确保 WP(写保护)引脚连接到 GND。设备地址首先发送一个介于0x50
和之间的值0x57
。然后必须在最后添加一个八位,以便在读取或写入之间切换。要写入,它被设置为 0。为了演示,作为写入操作的第一个 IC 的地址字节将是1010000
。
接下来,为要写入的数据指定一个地址,然后是要写入的字节。使用 Wire 库,这看起来像:
Wire.beginTransmission(0x50);
Wire.write(address);
Wire.write(data);
Wire.endTransmission(); // stop transmitting
从芯片读取数据以类似的方式完成。首先,必须选择目标存储地址。这是通过发送虚拟写入命令以加载目标地址来完成的。接下来,发送一个包含设备地址和读/写位为 1 的字节。EEPROM 芯片随后发送一个字节的数据作为回报。这看起来像:
Wire.beginTransmission(0x50);
Wire.send(targetAddress);
Wire.endTransmission();
Wire.requestFrom(0x50, 1);
If(Wire.available()){
byte data = Wire.receive();
}
Wire.endTransmission();
通过使用 EEPROM 芯片代替 SD 卡,您可以节省空间、功耗和复杂性。如果您的项目需要存储游戏的初始值或具有保存状态,那么 EEPROM 芯片是完美的选择。即使在主微控制器断电后,它也允许存储值。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !