• 1
  • 2
  • 3
  • 4

首页 / 行业

怎样用Arduino读取和写入外部EEPROM的数据

2019-07-30 11:32:00

您需要的东西

EEPROM - 24LC512

ATmega328P-PU

16 MHz Crystal

面包板

电阻器4.7k Ohmx 2

电容器22 pFx 2

故事

EEPROM 代表 E lectrically E rasable P 可编程 R ead- O nly M emory。

EEPROM非常重要且有用,因为它是一种非易失性的内存形式。这意味着即使电路板断电,EEPROM芯片仍然保留写入的程序。因此,当您关闭电路板然后重新打开电源时,可以运行写入EEPROM的程序。所以基本上,无论如何,EEPROM都存储并运行程序。这意味着您可以关闭设备,将其关闭3天,然后返回并打开设备,它仍然可以运行其中编程的程序。这就是大多数消费电子设备的工作方式。

该项目由LCSC赞助。我一直在使用LCSC.com的电子元件。 LCSC致力于以最优惠的价格提供各种真正的高品质电子元件,并通过遍布200多个国家的全球运输网络。

EEPROM也非常高效传统EEPROM中的各个字节可以独立读取,擦除和重写。在大多数其他类型的非易失性存储器中,这是不可能做到的。

像Microchip 24系列EEPROM这样的串行EEPROM器件允许您为任何可以说I²C的器件添加更多存储器。

EEPROM基础知识

Microchip 24LC2512芯片可以采用8引脚DIP封装。 24LC512上的引脚非常直接,包括电源(8),GND(4),写保护(7),SCL/SDA(6,5)和三个地址引脚(1,2,3)。

ROM的简史

早期的“存储程序”类型的计算机 - 例如桌面计算器和键盘解释器 - 开始以二极管矩阵ROM的形式使用ROM。这是一个由分散的半导体二极管组成的存储器,放置在特殊组织的PCB上。随着集成电路的出现,这让位于Mask ROM。掩模ROM很像二极管矩阵ROM,只是它的实现规模要小得多。然而,这意味着你不能只用烙铁移动几个二极管并重新编程。掩模ROM必须由制造商编程,此后不可更改。

不幸的是,Mask ROM价格昂贵并且需要很长时间才能生产,因为每个新程序都需要一个由铸造厂生产的全新设备。然而,在1956年,这个问题通过PROM(可编程ROM)的发明得以解决,PROM允许开发人员自己编写芯片。这意味着制造商可以生产数百万个相同的未编程设备,使其更便宜,更实用。但是,PROM只能使用高压编程设备写入一次。在编程PROM器件之后,无法将器件恢复到未编程状态。

1971年随着EPROM(可擦除可编程ROM)的发明而改变了 - 除了在首字母缩写词中添加另一个字母 - 带有擦除设备的能力,并使用强大的紫外光源将其恢复到“空白”状态。那是对的,你必须在IC上发出明亮的光线才能重新编程,这有多酷?好吧,事实证明它非常酷,除非你是一个开发固件的开发人员,在这种情况下,你真的希望能够使用电子信号重新编程设备。随着EEPROM(电可擦除可编程ROM)的发展,这终于在1983年成为现实,我们到达了当今笨拙的首字母缩略词。

EEPROM的怪癖

EEPROM作为一种方法存在两个主要缺点数据存储。在大多数应用中,优点超过了缺点,但在将EEPROM纳入下一个设计之前,您应该了解它们。

首先,使EEPROM工作的技术也限制了它的可用次数被重写。这与电子被困在构成ROM的晶体管中并累积直到“1”和“0”之间的电荷差异无法识别有关。但不用担心,大多数EEPROM的最大重写次数为100万或更多。只要你没有连续写入EEPROM,你就不可能达到这个最大值。

其次,如果你从中断电源,EEPROM将不会被删除,但它不能保留在你的数据无限期。电子可以漂移出晶体管并通过绝缘体,随着时间的推移有效地擦除EEPROM。也就是说,这通常会在几年内发生(虽然它可以通过加热加速)。大多数制造商表示,在室温下,您的数据在EEPROM上安全10年或更长时间。

在为项目选择EEPROM器件时,还应记住一件事。 EEPROM容量以位而不是字节来度量。 512K EEPROM将保存512K位数据,换句话说,只有64KB。

Arduino硬件连接

好了,现在我们知道了什么是EEPROM,让我们挂起来看看它能做些什么!为了让我们的设备说话,我们需要连接电源和I²C串行线。该器件特别在5VDC下运行,因此我们将它连接到Arduino UNO的5V输出。此外,I²C线路需要上拉电阻才能正常通信。这些电阻的值取决于线路的电容和您想要通信的频率,但非关键应用的一个好的经验法则就是将其保持在kΩ范围内。在本例中,我们将使用4.7kΩ上拉电阻。

此器件上有三个引脚用于选择I²C地址,这样就可以在总线上有多个EEPROM,并以不同的方式对它们进行寻址。您可以将它们全部接地,但我们将对它们进行布线,以便我们可以在本教程的后面部分使用更高容量的设备。

我们将使用面包板将所有内容连接在一起。下图显示了大多数I²CEEPROM器件的正确连接,包括我们销售的Microchip 24系列EEPROM。

阅读和写作

大多数情况下,当您将EEPROM与微控制器结合使用时,您实际上不需要同时查看存储器的所有内容。您只需根据需要在此处读取和写入字节。但是,在这个例子中,我们要将整个文件写入EEPROM,然后将其全部读回,以便我们可以在计算机上查看。这应该让我们对使用EEPROM的想法感到满意,并让我们感觉有多少数据可以真正适合小型设备。

写点东西

我们的示例草图将简单地取出任何字节串行端口并将其写入EEPROM,跟踪我们写入内存的字节数。

将一个字节的内存写入EEPROM通常分三步进行:

发送要写入的内存地址的最高有效字节。

发送要写入的内存地址的最低有效字节。

发送您想要存储在此位置的数据字节。

可能有一些关键词可以解释:

记忆地址

如果你想象512 Kbit EEPROM中的所有字节从0开始排成一行到64000 - 因为一个字节有8位,因此你可以在512 Kbit EEPROM上安装64000字节 - 然后一个存储器地址就是你找到一个特定字节的位置。我们需要将该地址发送到EEPROM,以便它知道放置我们发送的字节的位置。

最重要和最不重要的字节

因为256 Kbit EEPROM中有32000个可能的位置 - 并且因为255是可以在一个字节中编码的最大数字 - 我们需要以两个字节发送该地址。首先,我们发送最高有效字节(MSB) - 在这种情况下的前8位。然后我们发送最低有效字节(LSB) - 第二个8位。为什么?因为这是设备期望接收它们的方式,所以就是这样。

页面写作

一次写一个字节很好,但是大多数EEPROM设备都有一个叫做“页面写缓冲区”的东西,可以让你写多个每次字节的方式与单个字节的方式相同。我们将在示例草图中利用这一点。

EEPROM使用内部计数器,它会在接收到的每个后续数据字节时自动增加内存位置。一旦发送了内存地址,我们就可以使用最多64个字节的数据。 EEPROM(正确地)假定地址312后跟10个字节将在地址312处记录字节0,在地址313处记录字节1,在地址314处记录字节2,依此类推。

读取东西

从EEPROM读取基本上遵循与写入EEPROM相同的三步过程:

发送要写入的存储器地址的最高有效字节。

发送要写入的内存地址的最低有效字节。

询问该位置的数据字节。

读取数据可编程代表

  • 1
  • 2
  • 3
  • 4

最新内容

手机

相关内容

  • 1
  • 2
  • 3

猜你喜欢