本文介绍将MAX7651和MAX7652 12位数据采集系统连接至24C02 2线串行EEPROM所需的特定硬件描述和软件程序。提供了详细的软件代码。由于MAX7651/52基于标准8051处理器内核,因此此处提供的信息对于任何基于8051的标准设计都很有用。
24Cxx 系列 2 线串行 EEPROM 广泛用于 8051 微处理器系统。虽然MAX7651/MAX7652闪存可编程12位数据采集系统具有16K内部闪存,但仍有许多“传统”产品使用小而廉价的外部存储器。
本应用笔记提供了基本的2线写和读软件子程序。可以轻松修改它们,以满足EEPROM的附加功能,例如存储器保护和组寻址。
24C02串行EEPROM有许多衍生产品,其中包括额外的存储器和页面寻址。24C02被广泛使用,是本例中使用的部件。其他派生部件可以通过稍作修改来使用此代码。
EEPROM信号和定时
24Cxx 系列使用两条 I/O 线进行接口:SCL(串行时钟)和 SDA(串行数据)。SCL 边缘具有不同的功能,具体取决于是读取设备还是写入设备。将数据时钟输入器件时,时钟的正边沿锁存数据。负时钟将时钟数据边缘出器件。
SDA信号是双向的,并且物理上是漏极开路,因此多个EEPROM或其他器件可以共享引脚。SCL和SDA都必须从外部拉高。
EEPROM使用的协议部分基于EEPROM发送的ACK(确认)位(如果已收到发送给它的数据)。所有地址和数据均以 8 位字发送。EEPROM在第九个时钟周期内将ACK作为低位周期发送。EEPROM在SCL和SDA引脚上寻找特定的转换,以鉴定读写。
SDA 引脚上的数据可能仅在 SCL 为低时更改。SCL 高电平期间的数据更改指示启动或停止条件。START 条件是 SDA 的高到低转换,SCL 高。所有数据传输都必须以 START 条件开头。
停止条件是 SDA 的低到高转换,SCL 高。所有数据传输必须以 STOP 条件结束。读取后,停止将EEPROM置于待机电源模式。有关启动和停止条件,请参阅图 1。
图1.启动和停止条件。
设备寻址
24C02 具有 3 个物理引脚,分别指定为 A2、A1 和 A0,它们连接到逻辑 1 或 0 电平。这允许八个唯一的硬件地址,因此多达八个 24C02 可以共享 SCL 和 SDA 线路而不会发生冲突。有一个内部地址比较器,用于查找主控制器发送的地址与 24C02 的唯一 7 位地址之间的匹配,该地址部分由 A2、A1 和 A0 确定。请参阅下面的表 1。
MSB | 低音水平 | ||||||
1 | 0 | 1 | 0 | 答2 | 答1 | 答0 | R/~W |
设备地址在启动条件后立即发送。前四位是序列“1010”,这是一个简单的“噪声滤波器”,可防止线路上的随机噪声突发访问设备。发送的最后一个位是 1 表示读取,0 表示写入。下面的代码示例用于随机读/写操作。该部件还可以执行页面写入/顺序读取,只需稍作代码修改。有关更多信息,请参见 24C02 数据手册。
字节写入内存
字节写入序列如图 2 所示。EEPROM在收到START条件和设备地址后,如果设备地址与其自己的唯一地址匹配,则发送ACK。MAX7651等待ACK,如果ACK不存在,则中止通信。接下来,发送一个 8 位字节地址,然后发送另一个 ACK。MAX7651发送8位数据字节,等待第三个ACK,并发送STOP条件。
图2.写入操作。
需要注意的是,在收到 STOP 条件后,EEPROM 在内部等待数据存储到其内部存储器阵列中。这可能需要长达 10 毫秒的时间。24C02 将在对内部 EEPROM 进行编程时忽略尝试的访问。可以轮询该部件以完成内部写入周期。这涉及发送另一个 START 条件(也称为重复启动),后跟设备地址字节。请注意,在这种情况下,不会发送 STOP 条件。如果内部编程周期完成,EEPROM 将发送 ACK。MAX7651也可以编程为等待10ms再继续。
从内存读取字节
从 24C02 EEPROM 以随机地址读取字节需要在读取之前执行虚拟写入操作。参见图 3。
顺序为:
启动条件
使用 R/~W = 0 “虚拟写入”命令发送设备地址
等待确认
发送字节内存地址
等待确认
发送重复启动条件
发送 R/~W = 1 的设备地址(读取命令)
等待确认
将8个数据位读取到MAX7651中,MSB优先
无确认
停止条件
这个序列相当复杂!读取所需的 SCL 转换总数为 38。
图3.读取操作。
审核编辑:郭婷
-
存储器
+关注
关注
38文章
7466浏览量
163691 -
微处理器
+关注
关注
11文章
2254浏览量
82370 -
EEPROM
+关注
关注
9文章
1010浏览量
81501
发布评论请先 登录
相关推荐
评论