这一篇介绍I2C存储器的运用。主要是介绍AT24CXX系列器材,它分为两类,主要是经过被存储容量地址来分的,一类是AT24C02-AT24C16,它的存储容量从256字节到2048字节。另一类是AT24C32-AT24C1024,容量从4K-128K。(理论上如同能够到达最高512K字节容量,但现在网上最高也就能看到AT24C1024也便是128K字节容量)
原理:
I2C总线是一种用于IC器材之间衔接的二线制总线。它经过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器材之间传送信息,并依据地址辨认每个器材:不管是单片机、存储器、LCD驱动器仍是键盘接口。
I2C总线接口电路结构如图所示。
SDA和SCL均为双向I/O线,经过上拉电阻接正电源。当总线闲暇时,两根线都是高电平。衔接总线的器材的输出级有必要是集电极或漏极开路,以具有线“与”功用。I2C总线的数据传送速率在规范工作方法下为100kbit/s,在快速方法下,最高传送速率可达400kbit/s。
在I2C总线技术规范中,开端和完毕信号(也称发动和中止信号)的界说如图所示。当时钟线SCL为高电平常,数据线SDA由高电平跳变为低电平界说为“开端”信号;当SCL线为高电平常,SDA线产生低电平到高电平的跳变为“完毕”信号。开端和完毕信号都是由主器材产生。在开端信号今后,总线即被以为处于忙状况;在完毕信号今后的一段时间内,总线被以为是闲暇的。
I2C总线的数据传送格局是:在I2C总线开端信号后,送出的第一个字节数据是用来挑选从器材地址的,其间4-7位为器材码,如1010便是代表串行E2PROM器材。1-3位为存储器的片选地址或存储器内的块地址码,怎么区别?后边再做详细阐明,第8位为方向位(R/W)。方向位为“0”表明发送,即主器材把信息写到所挑选的从器材;方向位为“1”表明主器材将从从器材读信息。开端信号后,体系中的各个器材将自己的地址和主器材送到总线上的地址进行比较,假如与主器材发送到总线上的地址共同,则该器材即为被主器材寻址的器材,其接纳信息仍是发送信息则由第8位(R/W)确认。
一个字节的写操作的进程:首要器材宣布起始信号后,发送器材辨认操控字节,即1010A2A1A00(最低方位0,即R/W读写操控位为低电平0),然后等候应对信号指示从器材被寻址。再发送一个AT24CXX存储器即将写入的方位地址。再次等候AT24CXX应对信号今后,将发送数据字节,AT24CXX接纳到后写入到刚刚指定的存储器地址。然后主器材再次等候AT24CXX的应对信号。主器材最终宣布中止信号。
在I2C总线上每次传送的数据字节数不限,但每一个字节有必要为8位,并且每个传送的字节后边有必要跟一个认可位(第9位),也叫应对位(ACK)。数据的传送进程如图所示。每次都是先传最高位,一般从器材在接纳到每个字节后都会作出呼应,即开释SCL线回来高电平,预备接纳下一个数据字节,主器材可持续传送。假如从器材正在处理一个实时事情而不能接纳数据时,(例如正在处理一个内部中止,在这个中止处理完之前就不能接纳I2C总线上的数据字节)能够使时钟SCL线坚持低电平,从器材有必要使SDA坚持高电平,此刻主器材产生1个完毕信号,使传送反常完毕,迫使主器材处于等候状况。当从器材处理完毕时将开释SCL线,主器材持续传送。
当主器材发送完一个字节的数据后,接着宣布对应于SCL线上的一个时钟(ACK)认可位,在此刻钟内主器材开释SDA线,一个字节传送完毕,而从器材的呼应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为安稳的低电平。从器材的呼应信号完毕后,SDA线回来高电平,进入下一个传送周期。
I2C总线还具有播送呼叫地址用于寻址总线上一切器材的功用。若一个器材不需求播送呼叫寻址中所供给的任何数据,则能够疏忽该地址不作呼应。假如该器材需求播送呼叫寻址中供给的数据,则应对地址作出呼应,其表现为一个接纳器。
5.总线竞赛的裁定 总线上或许挂接有多个器材,有时会产生两个或多个主器材一起想占用总线的状况。例如,多单片机体系中,或许在某一时刻有两个单片机要一起向总线发送数据,这种状况叫做总线竞赛。I2C总线具有多主控才能,能够对产生在SDA线上的总线竞赛进行裁定,其裁定原则是这样的:当多个主器材一起想占用总线时,假如某个主器材发送高电平,而另一个主器材发送低电平,则发送电平与此刻SDA总线电平不符的那个器材将主动封闭其输出级。总线竞赛的裁定是在两个层次上进行的。首要是地址位的比较,假如主器材寻址同一个从器材,则进入数据位的比较,然后保证了竞赛裁定的可靠性。由所以运用I2C总线上的信息进行裁定,因而不会形成信息的丢掉。
器材阐明:
AT24CXXX系列引脚图如下
现在我先来说说AT24CXX的详细运用
假定用AT89S51的P0.0做SDA总线,P0.1做SCL总线。有若干个I2C器材挂接在SDA和SCL总线上。
现在要对E2PROM_01存储器进行写字节操作看看它是怎么找到的。
上面说过在发送完一个开端信号后接着发送一个字节的器材辨认信号。这一个字节的4-7位便是器材辨认码。1010便是对应E2PROM器材,其它器材就不再理会了。1-3位是器材的物理地址,也便是说假如是E2PROM,它能够在I2C总线上挂接(000-111)8个E2PROM。在这里就得详细说说AT24CXX上的A0,A1,A2和这个器材辨认字节之间的关系了。上面说过存储器的寻址规模是一个字节,也就256个,AT24C02的存储容量为256字字,刚刚好将一个字节的地址用完。器材电路上A0,A1,A2三个管脚经过接高电平或低电平来和AT89S51发送过来的器材辨认操控字节相匹配,然后得以辨认出AT89S51即将操作的那个存储器。现在AT24C04的容量是512个字节,那不是一个字节的地址不够用了吗?其实它是将512个字节为成两个页,每页256字节,而页地址便是器材辨认操控字节的1位。前面说了这个1-3位不是和器材上的A0,A1,A2匹配来辨认器材的吗?是的,但存储器容量超越256字节状况就有变了。AT24C04上的A0这时就抛弃不必了,只用A1和A2,这样就只能接(00-11)四个AT24C04了,相同AT24C08容量为1K字节分为4页了,所以页地址便是器材辨认操控字节的1-2位,器材上的A0,A1抛弃不必,只用A2,就只能接两个AT24C08了。AT24C16容量为2K字节,分为8页。页地址是器材辨认操控字节的1-3位,全用了。器材上的A0,A1,A2,就无效了,只能接一只AT24C16。
我这么说能理解吗?
关于大容量AT24C32-1024的存储器。器材的存储寻址地址为两个字节,所以它的一页为65536(64K)。AT24C32-64的容量为4K字节-8K字节,在一页规模,能够接8只器材。从AT24C128-1024的器材代号也由1010改为10100,多了一位,辨认操控字节的器材物理地址就少了一位,变为1-2位,相应的在器材管脚上A2也抛弃空着了,因而最多只能接四只器材。AT24C128-512只要两位器材地址所以最多只能接四只器材。而AT24C1024的容量为128K,分为两页,辨认操控字节的的1位为页地址,器材的A0脚抛弃不必,只用了A1。因而只能接2只器材。
下面咱们进行详细的制做先预备好器材如下图 ,我用的是AT24C16
原先的板子如下图
焊好后。
好!下面咱们进行调试:插上主电源。但AT24C16的电源短路帽不接,在短路帽两个针之间接上万用表的电流档查看是否有短路和静态电流的巨细。实测静态电流简直为零,改动两个数据线的电平常,电流会有所上升,阐明电路根本正常。
现在咱们接上电源短路帽把AT24C16电源接好。将两个数据线用跳线接到P1.6和P1.7口上(接到哪个口上能够自己选的)。留意辨明哪个是SDA哪个是SCL。别弄错了。
把LCD12864装上,后边咱们就要进行软件的调试了。
后边一篇,咱们进行软件件部分的调试。