I2C器件AT24xx的使用

发布时间 2023-11-20 22:25:30作者: 小小卷心菜

AT24xx:“xx”代表存储容量,分别为“01”、“02”、“04”、“08”、“16”,代表1k、2k、4k、8k、16k。

引脚描述:
串行时钟(SCL):在时钟上升沿数据写入EEPROM,时钟下降沿EEPROM的数据被读出。
串行数据(SDA):双向传输,引脚开漏,需要上拉电阻。
器件、页地址(A2/A1/A0):器件引脚地址。
写保护(WP):接地,芯片正常读写;接VCC,开启写保护,即只读状态。

器件地址:固定序列(器件地址)+引脚地址(对于2k、4k、8k、16k的EEPROM)
固定序列:0101
引脚地址:A2~A0,由硬件连接决定。
2k:A2~A0均必须与硬件相接。
4k:只用接A2和A1,A0为存储页地址,悬空。
8k:只用接A2,A1和A0为存储页地址,悬空。
16k:不需要器件地址,总线上只能接一个芯片,A2~A0全部悬空。

读写操作:
写字节:发送完器件地址且从设备应答后发送数据地址,待收到从设备的应答信号后发送数据,
待再次收到应答信号后,发出停止信号,完成单字节写数据。随后EEPROM(即从设备)进入内部写周期,此时,所有输入
都被禁止,EEPROM不会对主设备的任何访问做反应直到写周期结束。
写页:发送完器件地址且从设备应答后发送数据地址,待收到从设备的应答信号后发送数据,
待再次收到应答信号后,继续发送新数据,直至收到停止信号。可连续写数据,但是不能跨页写,当内容超过一页后应重写开始信息。
随后EEPROM(即从设备)进入内部写周期,此时,所有输入都被禁止,EEPROM不会对主设备的任何访问做反应直到写周期结束。
!!! 注意:每次写完之后,再到下次写之前,需要间隔5ms时间,以确保上次写操作在芯片内部完成。
应答查询:内部写周期开始,应答查询就被开启。主设备发送开始命令、器件地址,等待目的 EEPROM(从设备)的内部写周期结束后,
从设备即回应低电平,表示主设备可继续对 其读写。
当前地址读:无需发送数据地址,数据地址为上一次读、写操作之后的位置。在发送start信号后,写入设备地址,待得到应答后,即可开始
读取数据。读取完毕后发出end信号。
随机地址读:指定数据地址,然后读出数据。start信号后,需要先发送设备地址,应答后发送待读数据地址,应答后再重新发送start信号和
设备地址,应答后再开始读取数据。读取完毕后发出end信号。
顺序读:需要先从当前地址读模式或随机地址读模式启动,随后便可连续读多个数据。