EE2PROM

Posted 皇甫春云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EE2PROM相关的知识,希望对你有一定的参考价值。

EE2PROM的开发调研

之前在蓝桥杯用过一个存储芯片,是AT24C02芯片,是采用的IIC接口,当时的设计重点是对IIC接口的使用。在51单片机中采用的是软件模拟IIC通信,在32单片机内部集成了IIC接口,所以有现成的例程可供使用。

EE2PROM介绍

EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。

接口类型:

EEPROM的常规接口有3个分别是 SPI、 I2C、Microwire

【I2C】

受微型控制器的使用端口的限制,EEPROM的接口数量较少时,请选择I2C。从微型控制器端口进行的控制最少可使用双线进行。此外,无需追加端口,即可在同一总线上连接多个EEPROM。在同一整机上使用多个EEPROM时,适用I2C总线。

难点在于通信速率较慢。通信速率为400K~1Mbit/s。至EEPROM的访问时间有限制时,可能不适合。

  • 可使用双线进行通信,因此能减少微型控制器的使用端口
  • 可在同一总线上连接多个EEPROM

【SPI】

要进行高速通信时,请选择SPI。实现20Mb/s的高速通信。实现了高速通信,因此还备有EEPROM容量为1Mbit的大容量产品。微型控制器的接口数量为4个。与I2C相比,接口较多是难点。

  • 工作频率高,通信速度快
  • 产品阵容丰富,涵盖从低容量到大容量

【Microwire】

这是比较老的通信方式。通信速度比SPI慢,备有低容量的产品。接口数量为4个,比I2C多。

  • 与SPI相比,通信速度较慢
  • 产品阵容仅限低容量产品

读写速度

读写速度受限于通信接口的传输限制。三者的传输速度分别是:

通信方式传输速度接口数目
I2C400K~1Mbit/s2
SPI20Mb/s4
Microwire比SPI慢4

单片机开发步骤

可以发现上述的通信接口类型,都是针对串行通信设计的,所以重点是对通信接口的配置使用,即遵循既定的通信协议标准进行芯片配置。这里以IIC的通信为例,需要完成四种信号的发送(起始位、终止位、数据0/应答、数据1/非应答)。由于采用的是串行的数据传送方式,所以对于数据帧的传送,是一位一位的传送,在接收时也是逐位接收。另外对于EE2PROM而言,存储器配备了写保护,WK引脚,可以对存储器的数据进行一定程度的加密操作。

IIC总线上会外挂很多的从机,所以为了建立主从之间的通信,首先需要传送从机的地址,确认完毕后,才可以发送数据,按照实际的应用场景,可以分为三种不同的数据传送方式,格式分别如下所示,其中灰色部分由主机发出,而白色由从机发出,另外从机地址后的0表示主机向从机发送数据,而1表示从机向主机发送数据;A表示应答,A非表示非应答。

主机只发送数据:

主机只接受数据:

主机发送和接收数据:

对于51这种比较低端的单片机处理器,内部并没有集成有IIC总线,所以需要利用I/O口进行软件的模拟操作,而类似STM32的中端单片机,其内部集成了IIC硬件总线,所以可以通过配置其相关的寄存器,实现IIC通信。正点原子的教程中,提示因为硬件的IIC配置比较繁琐,而且工作不稳定,所以采用的是软件模拟的IIC通信。

还学到一点就是对于AT24C02存储器的扩展,在完成底层的IIC通信构建之后,为了扩大存储空间,所以可以采用字扩展的方式,将8片芯片挂载到IIC总线上,实现存储容量的扩展。如果按照8位地址的帧来算,可以实现8片的扩展;如果按照16位的帧来计算,可以实现16片的扩展。

若扩展完成后,需要在存储器的读写中,分地址进行数据的读写操作。

CAT24WC01/02/04/08/16是一个1K/2K/4K/8K/16K位串行CMOS,EEPROM内部含有128/256/512/1024/2048个8位字节CATALYST公司的先进CMOS技术实质上减少了器件的功耗,CAT24WC01有一个8字节页写缓冲器CAT24WC02/04/08/16有一个16字节页写缓冲器,该器件通过I2C总线接口进行操作有一个专门的写保护功能。其中A0、A1、A2三个引脚可以用来扩展芯片的数目,即可编程设置。

单片机的知识点总结:

左移时最低位补0,最高位移入PSW的CY位

右移时最高位保持原数,最低位移除。

设计参考:

参考一:接口的选择方法_EEPROM接口的特点_电子小知识_罗姆半导体集团(ROHM Semiconductor)

参考二:EEPROM的操作—SPI接口和I2C接口 - 远航路上ing - 博客园 (cnblogs.com)

参考三:普中科技的51开发板

以上是关于EE2PROM的主要内容,如果未能解决你的问题,请参考以下文章

Java 高位低位

c语言中怎么将十六进制中的高位和低位分别存到数组中

int的高位字节和低位字节

实现大小端之间的转换宏,包括32位和64位的数

关于android 的10进制转16进制高位在前低位在后,不足位数补0处理方法

关于android 的10进制转16进制高位在前低位在后,不足位数补0处理方法