游戏评测网站怎么做,企业网站建设源码 微信 手机,新网站建设,初创公司网站设计苏州EEPROM简介#xff1a;
EEPROM(Electrically Erasable Progammable Read Only Memory#xff0c; E2PROM)是指带电可擦可编程只读存 储器#xff0c;是一种常用的非易失性存储器#xff08;掉电数据不丢失#xff09;#xff0c; E2PROM 有多种类型的产品#xff0c;我…EEPROM简介
EEPROM(Electrically Erasable Progammable Read Only Memory E2PROM)是指带电可擦可编程只读存 储器是一种常用的非易失性存储器掉电数据不丢失 E2PROM 有多种类型的产品我们领航者 ZYNQ 开发板上使用的是 ATMEL 公司生产的 AT24C 系列的 AT24C64 这一型号。 AT24C64 具有高可靠性可对所 存数据保存 100 年并可多次擦写擦写次数达一百万次。 它的存储容量256页每页32个字节。256 x 32 8192 (byte字节)
8192 x 8 65536(bit比特)
65536 / 1024 64 Kbit。。。。所以是AT24C系列64Kbit存储容量。
AT24C64 采用两线串行接口的双向数据传输协议——I2C 协议实现读写操作所以我们有必要了 解一下 I2C 协议。
IIC协议简介 简单双向二线制总线标准。多用于主机与从机在数据量不大且短距离的主从通信。
主机启动总线并产生时钟用于传送数据此时任何接收数据的器件均被认为是从机。 IIC总线由数据线SDA和时钟线SCL构成通信线路各种iic通信器件并联在总线上通过器件地址识别器件与器件通信前先要找到这个器件发地址等响应找到对应要通信的从设备。
IIC总线物理结构拓扑原理结构图 图中的 I2C_SCL 是串行时钟线 I2C_SDA 是串行数据线由于 I2C 器件一般采用开漏结构与总线相连 所以 I2C_SCL 和 I2C_SDA 均需接上拉电阻也正因此当总线空闲时这两条线路都处于高电平状态当 连到总线上的任一器件输出低电平都将使总线拉低即各器件的 SDA 及 SCL 都是“线与”关系。 I2C 总线支持多主和主从两种工作方式通常工作在主从工作方式我们的开发板就采用主从工作方式。 在主从工作方式中系统中只有一个主机其它器件都是具有 I2C 总线的外围从机。在主从工作方式中主 机启动数据的发送发出启动信号并产生时钟信号数据发送完成后发出停止信号。
IIC的协议层 仔细观察图 33.1.2 可知 IIC 协议的整体时序由四个部分构成上图中分别使用①、②、③、④进行区 分。 图中① 总线空闲状态 在 I2C 器件开始通信传输数据之前串行时钟线 SCL 和串行数据线 SDA 线由于上拉的原因处于高电平状态此时 I2C 总线处于空闲状态。 图中② 起始信号 如果主机此处指 FPGA想开始传输数据只需在 SCL 为高电平时将 SDA 线拉 低产生一个起始信号。 图中③ 数据传输状态 主机可以向从机写数据也可以读取从机输出的数据数据的传输由双向数据 线SDA完成。 图中④ 停止状态 当数据传输完成主机只需产生一个停止信号告诉从机数据传输结束停止信号 的产生是在 SCL 为高电平时 SDA 从低电平跳变到高电平从机检测到停止信号后停止接收数据并且 I2C 总线跳转回总线空闲状态。
数据传输的具体时序
scl为高时sda产生下降沿产生起始信号。告诉从机要开始数据通信了。
在scl为低时sda可以改变数据scl为高时sda数据保持
8bit数据一组也就需要8个时钟周期
第九个时钟周期主机释放总线从机控制总线产生应答位0.若为高则说明无应答这组数据是无效的传输。
scl为高时sda产生上升沿表示停止信号。主机结束与从机的通信 器件地址
当多个 I2C 器件挂接在总线上时怎样才能与我们想要传输数据的器件进行通信。这就涉及到了器件地址也称从机地址 SLAVE ADDRESS。 有两种器件地址7bit全都是固定的与部分bit固定部分bit可编程。
AT24C64起始位1010A2A1A0.最低三位可编程。 WR位为0表示主机要进行写操作1表示读操作。 IIC 读写时序
写时序字节写和页写
字节写
主机发送完字地址从机正确应答后就把内部的存储单元地址指针指向该单元。如果读写控制位 R/W位为“0”即写命令从机就处于接收数据的状态此时主机就开始写数据了写数据可分为单次写对于 E2PROM 而言称为字节写和连续写对于 E2PROM 而言称为页写。下面我们先分别介绍 E2PROM的单次写与连续写。 从左上角开始按行往右看。
1主机先产生开始标志信号scl 1 sda产生下降沿。
2然后发送器件地址MSB~LSB高位在前最后一位是读写控制标志位读写控制信号位0写1读。
3然后从机产生应答位。 4然后发送字地址存储器的存储空间的地址相当于指针相当于门牌号学过C语言的都应该不陌生由于AT24C64存储空间为64Kbit8bit只能表示256byte2的8次方 256256x8/1024 2Kbit.
64Kbit 64x1024/8 8192
2的13次方才能表示完8192个数据。
iic以字节传数据所以AT24C64要用两字节的字地址。
从机指针指向对应的字地址准备接收数据。
每传递一字节数据后从机会在下一个时钟周期产生应答位。主机释放总线从机拉低总线
5然后从机产生应答位。
6然后主机开始发送数据8bit数据位
7然后从机产生应答位。
8然后主机产生停止信号结束位。
页写
接下来我们开始介绍 E2PROM 的连续写页写时序 1主机产生起始信号。
2主机发送器件地址指令bit。
3从机应答。
4主机发送第一个字节从机应答。第二个字节从机应答。
5传递一字节的数据高位在前。
6从机产生应答位。每正确传递一字节数据从机就会给出应答位。
7主机发送停止信号。
两者的区别在于发送完一字节数据后是发送结束信号还是继续发送下一字节数据如果发送的是结束信号就称为单次写如果继续发送下一字节数据就称为连续写。
要注意的是 所有 I2C 设备均支持单字节数据写入操作但只有部分 I2C 设备支持页写操作对于 AT24C64 的页写是不能发送超过一页的单元容量的数据的而 AT24C64 的一页的单元容量为 32Byte当 写完一页的最后一个单元时地址指针指向该页的开头如果再写入数据就会覆盖该页的起始数据。
读时序
I2C 写时序介绍完毕后接下来我们开始 I2C 读时序部分的介绍。根据一次读操作读取数据量的多少 读操作可分为随机读操作和顺序读操作。
读数据有三种方式当前地址读随机读连续读。
当前地址读方式
当前地址读是指在一次读或写操作后发起读操作。由于 I2C 器件在读写操作后其内部的地址指针自动加一因此当前地址读可以读取下一个字地址的数据。也就是说上次读或写操作的单元地址为 02 时当前地址读的内容就是地址 03 处的单元数据。 1主机发送起始信号。
2主机发送器件地址读命令1.
3从机发送响应信号从机应答。
4从机发送数据8bit高位在前。
5主机非应答高电平无应答信号.
6主机发送停止信号。
随机读取方式
并不随机指定地址并读取一字节数据。 1主机发送起始信号。
2主机发送器件地址写指令0.原因是接下来是要写入字地址存储器的地址所以是写指令。从机产生应答位。
3主机发送第一字节地址从机产生应答位。
4主机发送第二字节地址从机产生应答位。
5主机发送起始信号。又一次发送起始信号。
6主机发送期间地址读指令1.从机产生应答位。
7从机发送8bit数据。主机产生无应答位。
8主机发送停止信号。
需要注意理解的是随机地址读在发送完器件地址和字地址后竟然又发送起始信号和器件地址而且第一次发送器件地址时后面的读写控制位为“ 0”也就是写命令第二次发送器件地址时后面的读写控制位为“1”也就是读。为什么会有这样奇怪的操作呢这是因为我们需要使从机内的存储单元地址指针指向我们想要读取的存储单元地址处所以首先发送了一次Dummy Write 也就是虚写操作只所以称为虚写是因为我们并不是真的要写数据而是通过这种虚写操作使地址指针指向虚写操作中字地址的位置等从机应答后就可以以当前地址读的方式读数据了。
当前地址读下的连续读
当前地址读和随机读都是一次读取一个字节连续读是将当前地址读或随机读的主机非应答改成应答表示继续读取数据。 1主机发送起始信号。
2主机发送器件地址读命令1从机产生应答信号。
3从机发送8bit数据主机产生应答信号0.
4从机发送下一字节数据主机产生应答信号0.
.................
(5)从机发送下一字节数据主机产生无应答信号1.
6主机发送停止信号。
随机地址连续读
有当前地址连续读当然也有随机地址连续读随机地址连续读是在图 33.1.10 随机地址读时序的基础上主机非应答改成应答表示继续读取数据。 1主机发送起始信号。
2主机发送器件地址写指令0.原因是”虚写“。从机产生应答位。
3主机发送第一字节地址从机产生应答位。
4主机发送第二字节地址从机产生应答位。
5主机发送起始信号。又一次发送起始信号。
6主机发送期间地址读指令1.从机产生应答位。
7从机发送8bit数据。主机产生应答位0。
8从机发送下一字节的8bit数据。主机产生应答位0。
................
10从机发送8bit数据。主机产生无应答位。
11主机发送停止信号。
总结 所以器件地址为1010_000 实验任务
本节的实验任务是先向 E2PROMAT24C64的存储器地址 0 至 255 分别写入数据 0~255写完之后再读取存储器地址 0~255 中的数据把读到的数据通过串口发送给上位机验证数据正确否。
明天完成部分 模块框图 时序图 代码 仿真