sejwy

导航

I2C及相关器件AT24xx的使用

I2C特征:

 

一些术语定义:

 数据传输特征:

1、当总线空闲时这两条线路都是高电平,连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与能。SDA 线上的数据必须在时钟的高电平周期保持稳定,数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变。

2、起始与停止条件:在 SCL 线是高电平时,SDA 线从高电平向低电平切换表示起始条件;当SCL 是高电平时SDA 线由低电平向高电平切换表示停止条件。起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态,在停止条件的某段时间后总线被认为再次处于空闲状态。

3、数据格式:发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制,但每个字节后必须跟一个响应位,首先传输的是数据的最高位(MSB)。

4、关于响应位:数据传输必须带响应。响应时钟脉冲由主机产生,在响应的时钟脉冲期间发送器释放SDA线(及SDA为高电平);在响应的时钟脉冲期间接收器必须将SDA线拉低使它在这个时钟脉冲的高电平期间保持稳定的低电平。

当从机不能响应时,例如它正在执行一些实时函数不能接收或发送,从机必须使数据线保持高电平。此时,主机产生一个停止条件终止传输或者产生重复起始条件开始新的传输。

若从机在某个字节后没有产生响应,则表明无法继续接受数据,主机则需要产生停止或重复起始条件。

如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据结束,从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。
 

 

 

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信号。
顺序读:需要先从当前地址读模式或随机地址读模式启动,随后便可连续读多个数据。

 


posted on 2023-11-20 22:18  小小卷心菜  阅读(27)  评论(0编辑  收藏  举报