您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > I2C、Microwire和SPI通信方式的介绍
I2C等各种通信方式的介绍串行E2PROM是可在线电擦除和电写入的存储器,具有体积小、接口简单、数据保存可靠、可在线改写、功耗低等特点,而且为低电压写入,在单片机系统中应用十分普遍。串行E2PROM按总线形式分为三种,即I2C总线、Microwire总线及SPI总线三种。本文将以Microchip公司的产品为例对以上三种串行E2PROM进行介绍。一、I2C总线型I2C总线,是INTERINTEGRATEDCIRCUITBUS的缩写,I2C总线采用时钟(SCL)和数据(SDA)两根线进行数据传输,接口十分简单。Microchip公司的24XX系列串行E2PROM存储容量从128位(16×8)至256k位(32k×8),采用I2C总线结构。24XX中,XX为电源电压范围。1引脚SDA是串行数据脚。该脚为双向脚,漏极开路,用于地址、数据的输入和数据的输出,使用时需加上拉电阻。SCL是时钟脚。该脚为器件数据传输的同步时钟信号。SDA和SCL脚均为施密特触发输入,并有滤波电路,可有效抑制噪声尖峰信号,保证在总线噪声严重时器件仍能正常工作。在单片机系统中,总线受单片机控制。单片机产生串行时钟(SCL),控制总线的存取,发送STRAT和STOP信号。2总线协议仅当总线不忙(数据和时钟均保持高电平)时方能启动数据传输。在数据传输期间,时钟(SCL)为高电平时数据(SDA)必须保持不变。在SCL为高电平时数据线(SDA)从高电平跳变到低电平,为开始数据传输(START)的条件,开始数据传输条件后所有的命令有效;SCL为高电平时,数据(SDA)从低电平跳变到高电平,为停止数据传输(STOP)的条件,停止数据传输条件后所有的操作结束。开始数据传输START后、停止数据传输STOP前,SCL高电平期间,SDA上为有效数据。字节写入时,每写完一个字节,送一位传送结束信号ACK,直至STOP;读出时,每读完一个字节,送一位传送结束信号ACK,但STOP前一位结束时不送ACK信号。3器件寻址START后,单片机发送一个控制字,该控制字包括Start位(S)、受控地址(7位,对24XX00来说前四位为1010,后三位无关系)、读写(R/W)选择位(“1”为读,“0”为写)及传送结束位ACK。24XX00的控制字格式如下:S1010XXXR/WACK24XX00随时监视总线上是否为有效地址,若受控地址正确且器件未处在编程方式下,则产生传送结束位ACK。4写操作单片机送出开始信号后,接着送器件码(7位)、R/W位,表示ACK位后面为待写入数据字节的字地址和待写入数据字节,然后结束一个字节的写入。即S+写控制字(R/W位为+ACK+字地址+ACK+写入数据+ACK+STOP。5读操作读操作有三种,读当前地址的内容、读指定地址的内容、读指定起始地址后的若干字节的内容。读当前地址的内容为:S+读控制字(R/W位为+ACK+读出数据+noACK+STOP。读指定地址的内容为:S+写控制字(R/W位为+ACK+写入数据+ACK+读控制字(R/W位为+ACK+读出数据+noACK+STOP。读指定起始地址后的若干字节的内容为:S+写控制字(R/W位为+ACK+写入数据+ACK+读控制字(R/W位为+ACK+读出数据(1)+ACK+……+读出数据(n+x)+noACK+STOP。24XX系列串行E2PROM存储芯片与单片机硬件接口只有SCL和SDA两根线,非常简单。二、Microwire总线型Microwire总线采用时钟(CLK)、数据输入(DI)、数据输出(DO)三根线进行数据传输,接口简单。Microchip公司的93XXX系列串行E2PROM存储容量从1kbit(×8/×16)至16kbit(×8/×16),采用Microwire总线结构。产品采用先进的CMOS技术,是理想的低功耗非易失性存储器器件。1引脚CS是片选输入,高电平有效。CS端低电平,93AA46为休眠状态。但若在一个编程周期启动后,CS由高变低,93AA46将在该编程周期完成后立即进入休眠状态。在连续指令与连续指令之间,CS必须有不小于250ns(TCSL)的低电平保持时间,使之复位(RESET),芯片在CS为低电平期间,保持复位状态。CLK是同步时钟输入,数据读写与CLK上升沿同步。对于自动定时写周期不需要CLK信号。DI是串行数据输入,接受来自单片机的命令、地址和数据。DO是串行数据输出,在DO端需加上拉电阻。ORG是数据结构选择输入,当ORG为高电平时选×16结构,ORG为低电平时选×8结构。2工作模式根据单片机的不同命令,93AA46有7种不同的工作模式,附表给出在ORG=1(×16结构)时的命令集(表中“S”为Start位)。ORG=0(×8结构),除在地址前加A6位或在地址后加一位“X”外,其余与附表相同。除了读数据或编程操作期间检查READY/BUSY状态时外,DO脚均为高阻状。在擦除/写入过程中,DO为高电平表示“忙”,低电平表示“准备好”。在CS下降沿到来时,DO进入高阻态。若在写入和擦除转换期间,CS保持高电平,则DO端的状态信号无效。3功能START(起始)条件CS和DI均为高电平后CLK的第一个上升沿,确定为START。若紧随START条件后DI端输入满足7种工作模式中的一种所需的命令码、地址及数据位的组合,指令将被执行。执行完一条指令后,未检测到新的START条件,DI、CLK信号不起作用。数据保护上电时,Vcc未升到14V前,所有操作方式均被禁止。掉电时,一旦Vcc低于14V,源数据保护电路启动,所有操作方式均被禁止。芯片上电时自动进入擦写禁止状态,保护芯片不被误擦写。EWEN命令也可以防止误擦写,详见擦写禁止和擦写使能。读操作READ当CS为高电平时,芯片在收到读命令和地址后,从DO端串行输出指定单元的内容(高位在前)。写操作WRITE当CS为高电平时,芯片收到写命令和地址后,从DI端接收串行输入16位或8位数据(高位在前)。在下一个时钟上升沿到来前将CS端置为(低电平保持时间不小于250ns),再将CS恢复为1,写操作启动。此时DO端由“1”变成“0”,表示芯片处于写操作的“忙”状态。芯片在写入数据前,会自动擦除待写入单元的内容,当写操作完成后,DO端变成“1”,表示芯片处于“准备好”状态,可以接受新命令。擦写禁止和擦写使能(EWDS/EWEN)芯片收到EWDS命令后进入擦写禁止状态,不允许对芯片进行任何擦或写操作,芯片上电时自动进入擦写禁止状态。此时,若想对芯片进行擦写操作,必须先发EWEN命令,因而防止了干扰或其它原因引起的误操作。芯片接受到EWEN命令后,进入擦写允许状态,允许对芯片进行擦或写操作。读READ命令不受EWDS和EWEN的影响。擦除、片擦除、片写入操作(ERASE/ERAL/WRAL)擦除ERASE指令擦除指定地址的内容,擦除后该地址的内容为“1”;片擦除ERAL指令擦除整个芯片的内容,擦除后芯片所有地址的内容均为“1”;片写WRAL命令将特定内容整片写入。片擦除和片写入时,在接受完命令和数据,CS从“1”变成“0”再恢复为“1”(低电平保持时间不小于250ns)后,片擦除或片写入启动,擦除、写入均为自动定时方式。自动定时方式下不需要CLK时钟。93AA46与单片机的接口电路及数据传输程序此处不再一一写出。三、SPI总线SPI(SerialPeripheralInterface)总线,即“串行外围设备接口总线”。Microchip公司的25XX系列串行E2PROM采用简单的SPI兼容串行总线结构,用时钟(SCK)、数据输入(SI)、数据输出(SO)三根线进行数据传输,片选信号(CS)控制器件的选通。当今流行的带SPI口的微控制器,如Microchip公司的PIC16C6X/7X微控制器等,均可与25AA040直接接口。片内无SPI口的微控制器,也可用普通I/O口通过软件编程的方式实现与25XX040间的接口。25XX系列采用先进的CMOS技术,是理想的低功耗非易失性存储器器件。25XX系列串行E2PROM存储容量从4k位(512×8)至64k位(8k×8)。1引脚说明CS是片选输入脚,低电平有效。CS端为高电平,25AA040处于休眠状态。CS的变化不影响已经初始化或正在处理的编程的完成。也就是说若在一个编程周期启动后,CS由低变高,25AA040将在该编程周期完成后立即进入休眠状态。一旦CS为高电平,SO引脚立即变成高阻态,允许多器件共用SPI总线。在有效的写入序列输入后CS端由低转高,启动对内部的写序列。上电后,CS端要先加低电平对所有操作序列初始化。SCK是同步时钟输入脚。来自SI脚的地址或数据在SCK的上升沿被锁存,SO脚的数据在SCK的下降沿时输出。SI是串行数据输入脚,接受来自单片机的命令、地址和数据。SO是串行数据输出脚,在读周期,输出E2PROM存储器的数据。WP是写保护输入脚。WP为低电平时禁止对存储阵列或状态寄存器的写操作,其它操作功能正常;WP为高电平,非易失性写在内的所有功能都正常。任何时候将WP置为低电平都将复位写允许锁存器。若一次内部写已经开始,WP置成低电平不影响这次写。HOLD是保持输入脚,低电平有效,用于在数据传送中途暂停向25AA040传送。不用暂停功能时,HOLD必须保持高电平。芯片被选中,正在串行传送时,可将HOLD置为低电平,暂停进一步的传送。方法是在SCK为低电平时,将HOLD引脚变成低电平,不然在下一个SCK由高转低前不能暂停传送。此间,CS必须保持低电平。25AA040处于暂停时,SI、SO、SCK脚均为高阻态。要恢复串行传送,必须在SCK为低电平时将HOLD置为高电平。任何时候只要HOLD为低电平,SO脚将处于高阻态。2工作原理25XX040片内有一个8位指令寄存器,指令通过SI脚接收,在SCK的上升沿串行输入。指令输入时,CS脚必须为低电平,HOLD脚必须为高电平。WP必须保持高电平,允许写存储器阵列。CS置为低电平后SCK的第一个上升沿开始数据采样。如果与SPI总线上的其它外围器件共用SCK,可改变HOLD引脚电平将25AA040设置成“保持”方式。释放HOLD后,再从HOLD信号确认处继续传送。---读序列CS降至低电平25AA040被选中。包括A8地址在内的8位读指令被传送到25AA040,接着是低8位地址(A7~A0)。在接收到正确的读指令及低8位地址后,选定地址的内容由SO口串行输出。而下一地址单元的内容将随着时钟脉冲继续输出。每当一个字节的数据传送完毕,25AA040片内的地址指针自动加1,指向下一个地址。当最高位地址(01FFH)内容读出后,地址指针指向0000H,下一个读出周期将继续。CS脚转为高电平读操作终止。---写序列在着手向25AA040写数据之前,必须先发出WREN指令,置位写允许锁存器,其操作为:先将CS置为低电平,然后按时钟节拍将WREN指令送至25AA040,当指令的8位数全部传送完毕后,再将CS端置为高电平置位写允许锁存器。发出WREN指令后未将CS端置为高电平前,写允许锁存器并没有置位,向25AA040传送的数据将不会被写入存储器阵列。写允许锁存器置位后,再将CS端置为低电平,发出包括A8地址在内的8位写指令及低8位地址(A7~A0),然后送要写入的数据。一次写序列最多可以连续写16个字节的数据,且所有要写入的数据的地址必须在同一页。一页的首址为XXXX0000,末址为XXXX1111。若内部地址计数器已到XXXX1111,时钟仍在继续,内部地址计数器将重新指向该页的首址XXXX0000,原写入到该地址的内容就会被覆盖。为将数据真正写入到25AA040中,须在字节写入或页写入数据的第n个字节的最后一个有效位(D0)送出后将CS置为高电平。若在此外的其它时间将CS置为高电平,写操作就不能完成。在写操作进行时,可以读状态寄存器来检查WIP、WEL、BP1和BP0位的状态。在写周期内是不可能读存储器阵列位置的。一旦写周期完成,写允许锁存器也就被复位了。-
本文标题:I2C、Microwire和SPI通信方式的介绍
链接地址:https://www.777doc.com/doc-4765606 .html