本例的EEPROM型号为AT24CM01,在电路中的引脚连接如下图所示:
1,该器件的特性如下:
--允许字节写入和部分页写入。
--1,000,000次写入。
--数据保持100年。
2,该芯片的引脚分布(两种不同的封装)
引脚名称 | 描述 |
---|---|
NC | 不连接 |
A1 | 器件地址输出1 |
A2 | 器件地址输入2 |
GND | 电源地 |
VCC | 电源 |
WP | 写保护。1:开启写保护,禁止写入,0:正常写模式 |
SCL | 串行数据线 |
SDA | 串行数据线 |
如果A2,A1或WP引脚没有被外部驱动,它们在内部被拉到GND。
3,器件原理框图
从该器件的原理框图可以看出,该器件的SDA引脚是一个双向端口,并且输出端口为开漏输出,需要在引脚出接上上拉电阻才能输出高电平,组成线与逻辑。
该EEPROM的器件地址定义如下:
地址的高4位是预定义好的,值为"1010",bit3,bit2根据引脚A2,A1连接的电平来决定,在该设计中,A2,A1均为0,bit1位为寄存器地址的最高位(A16),bit0位为读写选择位。写时为0,读时为1。
该EEPROM的的寄存器地址为双字节,定义如下
首先发送寄存器地址的高8位字节地址,然后发送寄存器地址的低8位字节地址。
在一个电路中使用多个该芯片的电路连接:将各个芯片的数据线和地址线和主机的数据和地址线相连,同时外接上拉电阻。给不同的器件分配不同的器件地址(A1,A2),两个地址为最多可以分配4个地址,故一个主机IIC端口最多可以挂载4个该芯片。
器件的操作与通信:
IIC有一下操作状态:
空闲状态(IDLE):时钟和信号总线均为高。
开始信号(START):处理器让SCL时钟保持高电平,然后让SDA数据信号由高变低就表示一个开始信号。同时IIC总线上的设备检测到这个开始信号它就知道处理器要发送数据了。
停止信号(STOP):处理器让SCL时钟保持高电平,然后让SDA数据信号由低变高就表示一个停止信号。同时IIC总线上的设备检测到这个停止信号它就知道处理器已经结束了数据传输,我们就可以各忙各个的了,如休眠等。
数据传输:SDA上的数据只能在SCL为低电平期间翻转变化,在SCL为高电平期间必须保持稳定,IIC设备只在SCL为高电平期间采集SDA数据。
响应信号(ACK):单片机发完8bit数据后就不再驱动总线了(SDA引脚变输入),而SDA和SDL硬件设计时都有上拉电阻,所以这时候SDA变成高电平。那么在第8个数据位,如果外接IIC设备能收到信号的话接着在第9个周期把SDA拉低,那么处理器检测到SDA拉低就能知道外接IIC设备数据已经收到。IIC数据从最高位开始传输(小端传输)。
非应答信号(NAK):在连续读数据时,当读取完最后一个字节数据时,从机不产生响应信号。
该芯片支持字节写入和页写入(一次连续最多写入256个字节),字节写入的时序如下图所示,每写完成一个字节,从机都会有一个响应信号.
1,字节写入时序:
2,页写入时序图:
该器件支持3中模式的读操作:
当前地址读,
随机地址读,
顺序读取。
1,当前地址读
内部数据字地址计数器保存上次读或写操作期间访问的最后一个地址上增加一个地址。只要保持电源,此地址一直有效。被维持到这个部分。读取过程中的地址翻转是从最后一页的最后一个字节到内存第一页的第一个字节。
2,随机地址读取
3,顺序读取