下载

5下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 单片机

单片机

单片机

wangying1.08
2009-06-08 0人阅读 举报 0 0 暂无简介

简介:本文档为《单片机doc》,可适用于其他资料领域

第章、MCS单片机的串行扩展技术【内容提要】IC总线接口及应用。SPI总线接口及应用。OCUART方式O串行扩展接口及应用。第章介绍了单片机的并行扩展技术现代单片机应用系统还广泛采用串行扩展技术。因为串行扩展接线灵活占用单片机资源少系统结构简单极易形成用户的模块化结构还具有工作电压宽、抗干扰能力强、功耗低、数据不易丢失等特点。为了方便实现串行扩展近年来己推出了一些非总线型单片机芯片(传统型号单片机的变种产品)能方便地使用SPI(SerialPeripheralInterface串行外设接口)和IC(InterICBUS或ICTOICBUS)等串行总线标准进行系统扩展也可以用传统型号单片机的并行IO口模拟IC总线或SPI等总线的串行通信。同时与串行总线标准相配套的串行外围接口芯片也逐步推出为用户使用串行总线扩展单片机应用系统的外围接口提供了极大的方便。IC总线接口技术目前单片机应用系统中常用的串行扩展方式主要有IC总线、SPI总线、C的UART方式O下的串行扩展接口、单总线(IWire)接口、MicrowirelPlus接口等。本节主要介绍IC总线的工作原理、总线接口、总线器件的寻址方式、总线上的数据传送及IC总线的软件模拟。C总线接口IC总线(全称为芯片间总线)是英文InterIntegrateCircuitBUS或ICTOICBUS的简称IC总线是Philips公司推出的一种双向二线制总线。IC总线以根连线实现全双工同步数据传送可以很方便地构成外围器件扩展系统。它可以直接连接具有IC总线接口的单片机如XC和XC等也可挂接各种类型的外围器件如存储器、AD转换器、DA转换器、键盘、显示器等。、IC总线的工件原理IC总线采用二线制由一条数据线SDA和一条串行时钟线SCL构成。IC总线是同步传输总线数据线上的信号完全与时钟同步。IC总线的器件分为主器件和从器件。主器件的功能:是启动在总线上传送数据并产生时钟脉冲以允许与被寻址的器件进行数据传送被寻址的器件称为从器件。一般来说任何器件都能作为从器件只有微控制器才能成为主器件。IC总线的数据传送采用主从方式即主器件(主控器)寻址从器件(被控器)启动总线产生时钟传送数据及结束数据传送。系统中每个器件都具有唯一的地址各器件之间通过寻址确定数据传送方。IC总线允许连接多个微控制器但数据传输过程中不能同时存在两个主器件所以在每次数据传送开始作为主控器的器件需通过总线竞争获得主控权竞争成功的器件成为主器件并启动一次数据交换其他则退出。竞争过程中数据不会被破坏、丢失。数据只能在主、从器件间传送传送结束后主、从器件将释放总线退出主、从器件角色。总线上存在主、从器件时总线处于忙的状态反之总线处于空闲状态。SDASCL总线上挂接的单片机(主控器)或外围器件(被控器)其接口电路都应具有IC总线接口所有器件都是通过总线寻址而且所有SDASCL同名端相连如图所示。作为被控制器的外围器件必须选用带有IC总线接口作为主控器的单片机。在使用具有IC总线接口的单片机时可通过软件模拟IC总线的接口功能。、总线接口如图所示IC总线接口内部为双向传输电路。总线端口输出端为漏极(或集电极开路)开路以具有线与功能所以总线上必须有上拉电阻Rp。上拉电阻Rp与电源电压、总线串接电阻有关可参考有关数据手册一般取值ΩΩ。总线空闲时这两根线处于高电平状态。总线上的外围电器件都是CMOS器件总线上的器件数量(总线负载能力)仅受总线电容pF的限制。IC总线的传输速率为kbps新规范的传输速率可达Okbps。、总线器件的寻址方式与并行接口扩展系统的地址形成方式不同IC总线系统中地址是由器件类型及其地址引脚电平决定的,对器件的寻址采用软件方式。IC总线上的器件地址由位组成它与一位方向位共同构成IC总线器件的寻址字节。其格式如表所示。表寻址字节格式位序DDDDDDDD寻址字节器件地址引脚地址方向位DADADADAAAARW其中:)器件地址:DA、DA、DA、DA是IC总线外围器件固有地址编码器件出厂时就已经给定。)引脚地址:A、A、A是由IC总线外围器件引脚所指定地址的地址端口。A、A、A在电路中接电源接地线或悬空的不同连接形式形成地址代码。)数据方向位RW:规定了总线上的作为主器件的单片机与作为从器件的外围器件的数据传送方向。在RW=时表示接收(读)在RW=时表示发送(写)、IC总线上的数据传送()、数据传送。IC总线上每传送一位数据都有一个时钟脉冲相对应。在时钟线高电平期间数据线上必须保持稳定的逻辑电平状态高电平为数据低电平为数据。要改变数据线上的电平必须在时钟线为O时方可进行。IC总线上数据传送以一个字节为一帧启动IC总线后传送的帧数不限只需每传送一帧后接收方回答一个应答位。总线传送完一帧数据后可以通过对时钟线的控制使传送暂停。比如传输过程中某一方需要暂停时可在应答信号后将时钟线SCL置为低电平即可控制总线暂停。在发送时首先发送数据的最高位。每次传送开始有起始信号结束有停止信号。()、总线信号协议。IC总线上与数据传输有关的信号有:起始信号(S)、终止信号(P)、应答信号(A)、非应答信号(Ã)总线数据位。①、起始信号(S):在时钟线SCL为高电平数据线SDA出现由高到低的下降沿时被认为是起始信号。只有出现起始信号后其他命令才有效。②、终止信号(P):在时钟线SCL为高电平数据线SDA出现由低到高的上升沿时被认为是终止信号。终止信号出现后所有外部操作都结束。注意:起始信号和终止信号都是由主器件产生的总线上带有IC总线接口的器件很容易检测到这些信号。但对于不具备IC总线接口的一些单片机来说为了准确无误地检测这些信号必须保证在总线的一个时钟周期内对数据线至少进行两次采样。③、应答信号(A):IC总线传送数据时每传送一帧数据后都必须有应答信号与应答信号对应的时钟由主器件产生。发送位必须在这一时钟位上释放数据总线使其处于高电平状态以便接收方在这一位上送出应答信号。应答信号在第个时钟位上出现接收方输出低电平为应答信号(A)。④、非应答信号(Ã):每传送完一帧数据后在第个时钟位上接收方输出高电平为非应答信号(Ã)。注意:由于某种原因接收方不能产生应答时必须释放总线将数据线置高电平然后主控器可通过产生一个停止信号来终止总线数据传输:当主控器接收来自从器件的数据时接收到的最后一个数据帧必须给从器件发送一个非应答信号(Ã)使从器件释放数拉总线以便主器件发送停止信号从而终止数据传送。()、总线数据位。IC总线数据传输启动后或应答信号后的第~个时钟脉冲对应于一帧的位数据传送。IC总线上每传输一位数据都有一个时钟脉冲相对应。在时钟脉冲高电平期间数据线的状态表示要传送的数据。要改变数据线上的数据必须在时钟线为低电平期间完成每位数据占一个时钟脉冲。在数据传输期间只要时钟线为高电平数据线都必须稳定否则数据线上的任何变化都会被当做起始信号或终止信号。()、数据传送的格式:IC总线传输数据时必须遵循规定的传送格式如图所按规定的格式:起始信号启动一次数据传送开始其后是寻址字节(高位地址和最低位的方向位)寻址字节后面是按指定读写操作的数据字节与应答位。主器件在数据传送结束后必须发送停止信号。起始与停止信号之间可传输多少帧数据在理论上没有限制由单户机决定。数据传输的三种方式:①、主器件的写操作。主器件向被寻址从器件发送n个数据字节传送过程方向不变。其格式如下:其中:SLAW为寻址字节(写)DATAl~DATAn为写入从器件的n个数据字节。②、主器件的读操作。主器件读出来自从器件的n个字节整个传送过程中除寻址习节外都是从器件发送、主器件接收的过程。其格式如下:其中:SLAR为寻址字节(读)DATAl~DATAn为从器件被读出的n个数据字节。主器件发送停止信号之前应发送非应答信号(Ã)向从器件表明读操作要结束。③、主器件的读写操作。在一次数据传输过程中需要改变传送方向的操作此时起始位和寻址字节都会重复一次。其格式如下:其中:Sr为重复起始信号由寻址字节的方向位来决定数据字节的传送方向SLAWR和SLARW分别表示写读寻址字节或读写寻址字节。、IC总线的软件模拟为了扩大各类串行扩展接口器件的应用范围消除串行扩展的局限性对于不具备相应接口的单片机可采用模拟传送技术用单片机的通用IO口来模拟IC串行总线接口。应用MCS单片机的并行IO口模拟C串行总线接口时只要拿出两个IO端口引脚在软件中分别定义为IC总线的SCL和SDA硬件上直接相连再加上拉电阻即可如图所示。、IC总钱信号的模拟程序()、发送起始信号(START子程序):在模拟时钟线SCL为高电平时模拟数据线SDA出现由高到低的下降沿。(START)SCLEQUP定义端口SDAEQUPlSTART:SETBSCL启动子程序SETBSDANOPNOPCLRSDANOPNOPCLRSCLRET该程序段所对应的信号波形如图所示。注意:)、为了保证IC总线数据的可靠传送总线上的信号时序做了严格的规定也为我们在模拟SCL和SDA信号电平宽度时提供了依据。)、规定在标准模式下一个终止信号和起始信号之间总线必须空闲的最小时间us起始信号保持时间的最小值是µs。)、该段程序中NOP指令用于保持逻辑电平保持时间与NOP指令的个数和单片机系统晶振频率有关。若单片机系统的晶振频率为MHz则一个机器周期为us程序中可用~个NOP指令来进行电平的保持延时。)、要了解时序的规定细节可参考相关资料。()、发送停止信号(STOP子程序):在模拟时钟线SCL为高电平时模拟数据线SDA出现由低到高的上升沿。(STOP)SCLEQUP定义端口SDAEQUPllSTOP:CLRSDA停止子程序:SETBSCLNOPNOPSETBSDANOPNOPCLRSCLCLRSDARET该程序段所对应的信号波形如图所示。()、发送应答位(MACK子程序):在模拟数据线SDA低电平期间模拟时钟线SCL输出一个正脉冲。(MACK)SCLEQUP定义端口SDAEQUPMACK:CLRSDA应答位子程序SETBSCLNOPNOPCLRSCLSETBSDARET该程序段所对应的信号波形如图所示。()、发送非应答位(MNACK子程序):在模拟数据线SDA高电平期间模拟时钟线SCL输出一个正脉冲。(MNACK)SCLEQUP:定义端口SDAEQUPMNACK:SETBSDA非应答位子程序SETBSCLNOPNOPCLRSCLCLRSDARET该程序段所对应的信号波形如图所示。、IC总线的模拟通用子程序()、应答位检查(CACK子程序):释放模拟数据线SDA模拟时钟线SCL置高电平接收到有应答信号时将标志位FO置。SCL EQUPlO定义端口SDA EQUPACKBITFOCACK:SETBSDA应答位检查子程序SETBSCLCLRACKNOPMOVC,SDAJCCENDSETBACK    接收到有应答信号时将标志位FO(ACK)置CEND:CLRSCLRET()、发送字节数据(WRBYTE子程序):将需要发送的字节先送累加器A从模拟数据线SDA发送。SCL EQUPO   定义端口SDAEQUPlWRBYTE:MOYR#H  发送字节数据子程序CLRCWLP:RLCAMOVSDA,CSETBSCLNOPNOPCLRSCLDJNZR,WLPRET()、接收字节数据(RDBYTE子程序)从模拟数据线SDA上串行读取个字节数据并通过累加器A存入工作寄存器R中。SCLEQUPIO   定义端口SDAEQUPIIRDBYTE:MOVR#H  接收字节数据子程序CLRCRLP:SETBSDASETBSCLMOVCSDAMOVARRLCAMOVRACLRSCLDJNZRRLPRET()、发送N个字节数据(WRNBYTE子程序):该程序按主器件写操作的格式进行。编制程序前为方便阅读对所用存储单元定义了一些符号。在写的过程中外围器件的单元地址具有自动加功能即能自动修改地址指针。SCLEQUP  对所用存储单元定义符号SDAEQUPll  MWDEQUH  数据首地址WSLAEQUH  地址存储区首地址NUMBYTEQUH   发送字节数存储器:发送N个字节数据子程序WRNBYTE:MOVR,NUMBYT发送字节数存RLCALLSTART调用启动子程序MOVA,WSLA送寻址字节LCALLWEBYT调用发送子程序LCALLCACK调用检查应答子程序JNBF,WRNBYTE判断是否应答非应答重发MOVR,MWB送发送字节首地址RO作为地址指针WRDA:MOVA,R送发送字节数据LCALLERBYT用发送子程序LCALLCACK调用检查应答子程序JNBF,WRNBYTE断是否应答非应答重发INCR数据地址指针加一DJNZR,WRDALCALLSTOP调用发送结束子程序RET()、读取N个字节数据(RDNBYT子程序):该程序按主器件读操作的格式进行。主控器在接收完N字节后必须发出一个非应答位然后再发出终止信号读入的过程中外围器件的单元地址具有自动加一功能即能自动修改地址指针。SCLEQUPO定义时钟脉冲线SDAEQUPl定义数据线MRDEQUH主控器接收数据存放单元首地址RSLAEQUH外围器件寻址字节(读)的存放单元NUMBYTEQUH接收字节数存放单元:读取N个字节数据子程序RDNBYT:MOVRNUMBYT读入字节数存RLCALLSTART调用启动子程序MOVARSLA送寻址字节LCALLWRBYT调用发送子程序LCALLCACK调用检查应答子程序JNBFORDNBYT判断是否应答非应答重发送寻址字节MOVROMRD送接收存放单元字节首地址RO作地址指针:RDNI:LCALLRDBYT调用接收子程序MOVROA存入数据DJNZRACK未读完转ACKLCALLMNACK读完发非应答位LCALLSTOP调用停止子程序RETACK:LCALLMACK    调用应答子程序INCRSJMPRDNIC串行扩展应用实例串行IC总线EEPROMATCXX的扩展)基本原理ATCXX的特点是:单电源供电工作电压范围宽V~V低功耗CMOS技术(KHz(V)和KHz(V)兼容)自定时写周期(包含自动擦除)、页面写周期的典型值为ms具有硬件写保护。图ATCXX的结构和引脚。(a)内部结构图(b)引脚图。器件型号为ATCXX的结构和引脚如图所示其中SCL串行时钟端。SDA串行数据端。WP为写保护:当WP=时存贮器只读当WP=时存贮器可读可写。A、A、A片选或块选。SDA为漏极开路端需接上拉电阻到Vcc。数据的结构为×位。信号为电平触发而非边沿触发。输入端内接有滤波器能有效抑制噪声。自动擦除(逻辑“”)在每一个写周期内完成。ATCXX采用IC规程运用主从双向通讯。器件发送数据到总线上则定义为发送器器件接收数据则定义为接收器。主器件(通常为微控制器)和从器件可工作于接收器和发送器状态。总线必须由主器件控制主器件产生串行时钟(SCL)控制总线的传送方向并产生开始和停止条件。串行EEPROM为从器件。无论主控器件还是从控器件接收一个字节后必须发出一个确认信号ACK。)控制字节要求开始位以后主器件送出位控制字节。控制字节的结构(不包括开始位)如下所示:说明:①、控制字节的第~位为从器件地址位(存贮器为)。控制字节中的前位码确认器件的类型。此四位码由飞利浦公司的IIC规程所决定。码即为从器件为串行EEPROM的情况。串行EEPROM将一直处于等待状态直到码发送到总线上为止。当码发送到总线上其它非串行EEPROM从器件将不会响应。②、控制字节的第~位为~片的片选或存贮器内的块地址选择位。此三个控制位用于选片或者内部块选择。标准的IIC规程允许选择K位的存贮器。通过对几片器件或一个器件内的几个块的存取可完成对K位存贮器的选择如表所示。表ATCXX的AAA控制字节的A、A、A的选择必须与外部A、A、A引脚的硬件连接或者内部块选择匹配A、A、A引脚无内部连接的则这三位无关紧要作器件选择的可接高电平或低电平。ATCXX的存贮矩阵内部分为若干块每一块有若干页面每一页面有若干个字节。内部页缓冲器只能写入一页字节数据对LC和LC一次可以存页(每页个字节)。③、控制字节第位为读、写操作控制码。如果此位为下一字节进行读操作(R)此位为下一字节进行写操作(W)。当串行EEPROM产生控制字节确认位以后主器件总线上将传送相应的字地址或数据信息。)确认要求在每一个字节接收后接收器件必须产生一个确认信号位ACK。主器件必须产生一个与此确认位相应的额外时钟脉冲。在此时钟脉冲的高电平期间拉SDA线为稳定的低电平为确认信号(ACK)。若不在从器件输出的最后一个字节中产生确认位主器件必须发一个数据结束信号给从器件。在这种情况下从器件必须保持数据线为高电平(用表示)使得主器件能产生停止条件。注意:如果内部编程周期(烧写)正在进行ATCXX不产生任何确认位。)、写操作①字节写在主器件发出开始信号以后主器件发送写控制字节即AAA(其中RW读写控制位为低电平“”)。这指示从接收器被寻址由主器件发送的下一个字节为字地址将被写入到ATCXX的地址指针。主器件接收来自ATCXX的另一个确认信号以后将发送数据字节并写入到寻址的存贮器地址。ATCXX再次发出确认信号同时主器件产生停止条件P。启动内部写周期在内部写周期内ATCXX将不产生确认信号(见图)。②页面写如同字节写方式先将写控制字节、字地址发送到ATCXX接着发n个数据字节主器件发送不多于一个页面字节的数据字节到ATCXX这些数据字节暂存在片内页面缓存器中在主器件发送停止信号以后写入到存贮器。接收每一字节以后低位顺序地址指针在内部加。高位顺序字地址保持为常数。如果主器件在产生停止条件以前要发送多于一页字的数据地址计数器将会循环并且先接收到的数据将被覆盖。象字节写操作一样一旦停止条件被接收到则内部写周期将开始(见图)。③写保护当WP端连接到VccATCXX可被用作串行ROM编程将被禁止并且整个存贮器写保护。)读操作当从器件地址的RW位被置为“”启动读操作。存在三种基本读操作类型:读当前地址内容读随机地址内容读顺序地址内容。①读当前地址内容ATCXX片内包含一个地址计数器此计数器保持被存取的最后一个字的地址并在片内自动加。因此如果以前存取(读或者写操作均可)的地址为n下一个读操作从n地址中读出数据。在接收到从器件的地址中RW位为的情况下ATCXX发送一个确认位并且送出位数据字。主器件将不产生确认位(相当于产生ACK)但产生一个停止条件。ATCXX不再继续发送(见图)。②读随机地址内容这种方式允许主器件读存贮器任意地址的内容操作如图所示。图ATCXX读随意地址的内容主器件发AAA后发位再发读的存贮器地址在收到从器件的确认位ACK后产生一个开始条件S以结束上述写过程再发一个读控制字节从器件ATCXX在发ACK信号后发出位数据主器件发后发一个停止位ATCXX不再发后续字节。③读顺序地址的内容读顺序地址内容的方式与读随意地址内容的方式相同只是在ATCXX发送第一个字节以后主器件不发和STOP而是发ACK确认信号控制ATCXX发送下一个顺序地址的位数据字直到x个数据读完(见图)。④防止噪声ATCXX使用了一个Vcc门限检测器电路。在一般条件下如果Vcc低于V门限检测器对内部擦写逻辑不使能。SCL和SDA输入端接有施密特触发器和滤波器电路即使在总线上有噪声存在的情况下它们也能抑制噪声峰值以保证器件正常工作。例题:将ATC片内RAMH~H单元中的八个位数据通过IC总线接口传送到存储器ATC的H~H单元中。解:ATC是Atmel公司生产的具有IC总线接口的EPROM是目前应用较多的ATC××系列存储器中的一种芯片存储容量为Kb(×位)。ATC引脚如下图所示。其引脚定义如下:SCL:串行时钟端。SDA:串行数据端漏极开路需接上拉电阻到VCC。WP:写保护  当WP为高电平时存储器只读  当WP为低电平时存储器可读可写。A~A:芯片地址。ATC与ATC通过串行总线接口传送数据的接线如下图所示。因ATC没有IC总线接口可用软件的办法来模拟IC总线操作。P模拟IC总线的时钟线SCLP模拟IC总线的数据线SDA。ATC的读写操作有多种形式:写操作有两种类型:字节写页面写读操作有三种类型:读当前地址内容、读随机地址内容、读顺序地址内容。ATC与ATC的接口接线ATC写N个字节数据的操作时序如下图所示位位位位位起始信号器件地址应答信号字地址应答信号数据应答信号数据应答信号数据n应答信号结束信号写操作写操作写操作写操作写操作ATC读N个字节数据的操作时序如下图所示。位位位位位起始信号器件地址应答信号字地址应答信号起始信号器件地址应答信号数据应答信号数据n应答信号结束信号写操作写操作写操作读操作读操作上图中器件地址说明如下:①、器件地址码的第~位从器件地址位用于确认器件的类型。ATC的器件地址码为表示从器件为串行EPROM。②、器件地址码的第~位:~片的片选或存储器内的页面地址选择位。此三个控制位用于选片或者内部页面选择。例如:在存储容量Kb(×位)的ATC内部存储矩阵分为个页面每一页面有个字节。通过器件地址码的第位和第位可以选择数据读写的页面。③、器件地址码的第位读、写(RW)操作控制码。此位为:下一字节进行读操作(R)此位为:下一字节进行写操作(W)。编程说明:)、ATC每接收一个字节后都必须发送一个确认应答信号位ACK即时序中的应答信号。此时ATC必须产生一个与此确认位相应的时钟脉冲。)、ATC在读写操作时具有地址自动加功能即读、写完某一地址空间后会自动指向下一个地址单元。)、将ATC片内RAMH~H单元中的八个位数据通过IC总线接口传送到存储器ATC的H~H单元中参考子程序如下。)、程序中用到的子程序均为所编写的模拟IC总线的子程序。ICW:  LCALLSTART    发送起始信号ICWLP:MOVA#AH   #B器件地址码     LCALLWRBYTE    发送器件地址     LCALLTACK    检查应答位     JBHICWLP  无应答位重发ICWLP:MOVA#H   H为待写存储单元首地址     LCALLWRBYTE     发送待写存储单元地址     LCALLTACK    检查应答位     JBHICWLP  无应答位重发     MOVR#    待发送数据块的长度    MOVR#H    H为第一个数据的首地址ICWLP:MOVAR    读一个字节数据     LCALLWRBYTE   发送     LCALLTACK   检查应答位     JBHICWLP  无应答位重发     INCR     指向下一个要发送的数据     DJNZRWLP  要发送数据未发完再发送     LCALLSTOP    全部数据发完停止LCALLDELAY   延时等待ATC内部写操作RET        返回SPI串行外设接口)、SPI(SerialPeripheralInterface串行外设接口)是MOTOROLA公司推出的一种同步串行外设接口允许微处理器(MCU)与各种外围设备以串行方式进行数据传送。)、SPI总线使用条线:SCK:串行时钟线、MISO(SO):主机输入从机输出数据线、MOSI(SI):主机输出从机输入数据线、CS:从机选择线、SPI总线的组成SPI(SerialPeripheralInterface串行外设接口)总线可在软件的控制下构成各种简单或复杂的系统。典型的应用是单主系统:单主系统只有一台主机它控制数据向一个或多个从机传送从机通常是外围接口器件。从器件只能在主机数据传送方式进行发命令时才能接收或向主机传送数据其数据传输格式是高位(MSB)在前、低位(LSB)在后。SPI典型结构如图所示。图、SPI的总线从图中可知:)、单片机与外围器件在时钟线SCK、数据线MOSI和MISO上都是相同端相连。)、外围扩展多个器件时SPI无法通过数据线译码选择。SPI接口的外围器件都有片选端CS。在扩展单个SPI芯片时外围器件的CS端可能接地或通过IO口控制在扩展多个SPI外围器件时必须使用每个外围器件的允许控制端单片机需分别通过IO口线来分时选通外围器件。)、在SPI串行扩展系统中如果某一从器件只作为输入或只作为输出时可省去一根数据输出线(MISO)或一根数据输入(MOSI)线构成一个双线系统(CS)接地。)、在组成SPI外围扩展时还应特别注意串行输入输出芯片的输入和输出特性:①、应注意扩展器件串行数据输出端是否有三态控制端。平时未被选中芯片的输出端应处于高阻态。若没有三态控制端应外加三态门否则MCU的MISO端只能接只扩展器件。②、应注意扩展器件串行数据输入端是否有允许控制端。即应该只有在该器件被允许时SCK脉冲才把串行数据移入该器件器件被禁止时SCK对该器件无影响。若没有允许端:a)、应在外部用门电路对SCK进行控制后再加到该器件的时钟输入端。b)、SPI只连接只该外围扩展器件。、SPI总线的软件模拟、SPI总线的数据传输)、SPI串行扩展系统中作为主器件的单片机在启动一次传送时便产生个时钟传送给接口芯片作为同步时钟控制数据的输入与输出。)、数据的传送格式是高位(MSB)在前、低位(LSB)在后如图所示。图、SPI总线数据传送格式)、数据线上的数据变化以及输入数据时的采样都取决于SCK。对于不同的外国芯片有的可能是SCK上升沿起作用有的可能是SCK下降沿起作用。)、SPI有较高的数据传输速率最高可达MbpsSPI串行扩展系统的主器件单片机可以带有SPI接口也可以不带SPI接口但是从器件要具有SPI接口。、SPI总线的软件模拟)、对于没有SPI接口的单片机来说可以使用软件来进行模拟操作包括串行时钟SCK、数据输入和数据输出DIDO。)、要注意的是对于不同的串行接口外围器件它们的时钟时序有可能不同。)、在图中若MCU为OC单片机用OC的并行IO端口引脚PlO模拟MOSI线Pll模拟SCK线P模拟CS线P模拟MISO线。)、对于在SCK上升沿输入(接收)数据和在下降沿输出(发送)数据的器件:应取图中的串行时钟输出Pll的初始状态为在接口芯片被选通后置Pll为。因此在单片机输出位SCK时钟脉冲的同时使接口芯片内的数据串行移位从而输出位数据至OC的P再置Pl为使C从P输出l位数据至串行接口芯片(此前将待传送的位数据先送至P)。至此模拟一位数据的输入输出完成。此后再置Pl为模拟下位的输入输出依次循环次便可完成次用模拟SPI总线接口的方法来传输个字节的操作。)、对于在SCK下降沿输入(接收)数据和在上升沿输出(发送)数据的器件:则应取串行时钟输出Pll的初始状态为在接口芯片被选通后先置Pl为。此时外围接口芯片输出位数据(单片机从P接收位数据)再置Pl为外围接口芯片接收位数据(单片机在P送出位数据)从而完成位数据的传送。SPI总线接口应用实例、位串行AD转换器MAX与单片机的接口MAX具有串行外围接口的位AD转换器串行口只需根数字线:SCLK、CS、DOUT与单片机的接口十分方便。MAX的主要特点如下:①、分辨率位②、单电源V供电③、具有三线串行接口且与SPI、QSPI和Microwire兼容④、模拟输入电压范围为OV~VREF⑤、具有低功耗工作方式此时电源电流为OuA⑥、具有内部参考电源和外部参考电源两种选择⑦、内含有采样保持器(TH)无须外部电容③、采用逐次逼近式NO转换原理转换时间包括TH的采样时间在内为us。()、MAX的引脚排列及功能。MAX的引脚排列如图所示。①、VDD:电源电压V。②、AIN:模拟输入输入范围为OV~VREF。③、SHDN:具有级入。SHDN=O芯片处于低功耗状态此时电源电流为µASHDN=l允许使用内部的参考电源SHDN=处于悬浮状态禁止内部参考电源允许使用外部参考电源。④、VREF:参考电压输入端。当允许使用内部参考电源时输出V的电压退耦电容为uF。当禁止使用内部参电源时可输入V~VDD范围内的精密电压作为参考电压。需增加间的退耦电容。⑤、GND:电源地。⑥、DOUT:串行数字输出。在SCLK的下降沿数据改变状态。⑦、SCLK:串行时钟输入。输入时钟的最高频率为MHz。⑧、CS:片选端。输入低电平有效。在CS的下降沿初始化转换。当CS为高电平时DOUT线为高阻态。()、MAX的启动、转换和传输过程。①、启动:使SCLK为低CS由高变低启动转换DOUT脱离高阻态变为低电平。②、转换:要保持SCLK和CS为低电平状态DOUT输出为低电平期间进行AD转换。③、结束转换:在CS和SCLK为低电平状态下转换结束后DOUT变为高电平。检测到DOUT的上升沿确定转换是否结束。④、数据传输:保持CS为低电平状态然后输出SCLK时钟SCLK有效至个时钟周期。在时钟的第个下降沿DOUT端将出现转换结果的最高位(MSB)。DOUT端在SCLK的下降沿出现数据在SCLK的上升沿数据稳定单片机可以读入数据。⑤、传输结束:保持CS为低电平状态在第个时钟脉冲下降沿时刻或以后将使CS变为高电平传送结束DOUT变为高阻态。若在第个时钟脉冲下降沿以后CS仍为低电平并在SCLK作用下不断输出数据则在输出最低位(LSB)后将输出为。)、MAX与单片机的接口。C单片机与MAX的接口电路如图所示。C单片机与MAX的接口电路C的Pl、Pl和Pl别与MAX的CS、SCLK和DOUT相连应用内参考电源方式转换后的数据存于单片机内部RAM的H和H。编制程序如下:CSBITPSCLKBITPDOUTBITPAD:CLRSCLK SCLK=OCLRCS CS=OSETBDOUT 置DOUT为输入状态LOOP:MOVC,DOUT 等待转换JNCLOOPSETBSCLK SCLK=lMOVR#H 接收高位CLRA      A清零LOOP:CLRSCLKSCK=DOUT状态变化NOPSETBSCLKSCK=读入数据MOVCDOUT   DOUT送CRLCADJNZRLOOPMOVBA高为数据暂存BMOVR#HCLRALOOP:CLRSCLKNOPSETBSCLKMOVCDOUTRLCADJNZRLOOPSETBCSCS=传送结束MOVHA存数据低位MOVIHB存数据高位RET、串行EEPROMX与单片机的接口)、X是一种集电源监控、看门狗和高速非易失性存储器功能为一体的多功能芯片。)、可选择看门狗定时周期有×位的串行EEPRAM(地址H~FFH)采用SPI串行接口方式一次最多可写个字节。)、有关X的详细资料可参阅Xicro公司提供的产品资料本节只介绍其引脚功能和读程序。()、X的引脚排列及功能。X的引脚排列如图所示。①、SO:串行数据输出端:数据在SCK的下降沿输出到SO线上。②、SI:串行数据输入端:所有操作命令、字节地址及写入的数据在此引脚上输入SI线上的输入数据在SCK的上升沿被锁存。③、SCK:串行时钟输入端:控制数据的输入和输出。④、CS:芯片选择输入端(片选):CS为低电平时X能工作。CS电平的变化将复位看门狗定时器。⑤、WP:写保护输入端:WP为低电平时对芯片的写操作被禁止其他功能仍正常。WP为高电平时写操作允许其他所有功能正常。⑥、RESET:复位输出端:漏极开路输出方式高电平有效用于电源检测和看门狗超时输出。⑦、VCC:电源电压。有两种电压规格的芯片一种是~V另一种是~V。⑧、GND:电源地。()、X与单片机的接口。X与单片机的典型接口电路如图所示。单片机与X接口应用软件主要有设置写使能锁存器、复位写使能锁存器、写状态寄存器、读状态寄存器、字节写、字节读、页读、页写、复位看门狗定时器等应用于程序。以下仅给出与图相应的基本子程序所涉及的X芯片的工作命令、寄存器、存储器、操作过程和时序等请参阅芯片资料。 X在读写操作之前需要先向它发出指令指令名及指令格式如表所示。表X指令及其含义指令指令格式操作WREN(H)设置写使能锁存器(允许写操作)WRDI(H)复位写使能锁存器(禁止写操作)RDSR(H)读状态寄存器WRSR(H)写状态寄存器READ(H)(BH)把开始于所选择地址的存储器中的数据读出,地址<把开始于所选择地址的存储器中的数据读出,地址>WRITE(H)(AH)把数据写入开始于所选择地址的存储器,地址<把数据写入开始于所选择地址的存储器,地址>如表所示X状态寄存器共有位有含义其中WD、WD和看门狗电路有关其余位和EEPROM的工作设置有关。表X状态寄存器DDDDDDDDXXWDWDBLBLWELWIP①、WIP:正在写位:只读表示器件是否忙于内部写操作。使用RDSR(H)指令读WIP位WIP=:写操作正在进行。WIP=:没有写操作。②、WEL:写使能锁存:只读表示写使能锁存器的状态WEL=:锁存器置位(允许写操作)。由WREN(H)指令置位。WEL=:锁存器复位(禁止写操作)。由WRDI(H)指令复位。③、BL、BL:块锁定:用于设置块锁定保护的级别允许用户保护EEPROM的有:全部不保护、、、全部保护四钟。块锁定保护方式状态寄存器被保护地址范围BLBLX无H~FFHH~FFHH~FFH ④、WD、WD:看门狗定时器预置时间位:WD、WD位的设置格式状态寄存器看门狗超时周期WDWD预置时间为s预置时间为s预置时间为s禁止看门狗工作X状态寄存器可用WRSR(H)指令来编程()、单片机与X接口应用软件编制程序如下:SOBITPSIBITPllSCKBITPCSBITPa)、单字节输出子程序:将A中的数据传送到SI线。OUTBYT:MOVR#HLOOP:CLRSCKRLCAMOVSICSETBSCKDJNZRLOOPRETb)、单字节输入子程序:将SO数据读入AINBYT:MOVR#HLOOP:SETBSCKNOPCLRSCKNOPMOVCSORLCADJNZR,LOOPRETc)、读状态寄存器子程序:将状态寄存器内容读入ARDSR:CLRCSMOVA,#H   用RDSR(H)指令读状态寄存器LCALLOUTBYT  单字节输出子程序将A中的RDSR指令送到SI(读状态寄存器)LCALLINBYT  单字节输入子程序将SO数据读入A(状态寄存器内容)SETBCSRET或:RDSR:CLRCSMOVA,#H   用RDSR(H)指令读状态寄存器MOVR#HOUTBYT子程序开始将A中的RDSR指令送到SI(读状态寄存器)LOOP:CLRSCKRLCAMOVSICSETBSCKDJNZRLOOPMOVR#H   INBYT子程序开始将SO数据读入A(状态寄存器内容)LOOP:SETBSCKNOPCLRSCKNOPMOVCSORLCADJNZR,LOOPSETBCSRETd)、置位写使能子程序(允许写操作)WREN:CLRCSMOVA,#HLCALLOUTBYT  单字节输出子程序将A中的WREN指令(允许写)传送到SICLRSCKSETBCSRETe)、写状态寄存器。R的内容为写入状态寄存器的内容FO=O表示写成功FO=l表示写失败。WRSR:LCALLRDSR读状态寄存器CLRFOJNBACCOLOOP WIP=:没有写操作转LOOPSETBFO     WIP=:写操作正在进行置FO=l写失败RETLOOP:LCALLWREN      调置位写使能子程序CLRCSMOVA#H写状态寄存器的指令WRSR送ALCALLOUTBYT     将A中的数据传送到SIMOVA,R待写数据送ALCALLOUTBYT     将A中的数据传送到SISETBCSRETf)、复位写使能子程序(禁止写操作)WRDI:CLRCSMOVA#H    复位写使能的指令WRDI送ALCALLOUTBYT    将A中的指令WRDI送到SICLRSCKSETBCSRETg)、复位看门狗子程序RESDOG:CLRCSSETBCSRETh)、写字节子程序:写入命令WRITE存放在R(A为O或)存储器页内地址存在B(OOH~FFH)要写入的字节数据存入RWRITEl:LCALLRDSR调读状态寄存器子程序JBFOWRITEI写入忙则等待LCALLWREN 置位写使能(允许写操作)指令WRENCLRCS MOVAR 写入命令WRITE送ALCALLOUTBYT  单字节输出子程序将A中的WRITE指令传送到SIMOVAB 写入存储单元页内字节地址LCALLOUTBYT  将A中的存储器页内地址存在B(OOH~FFH)传送到SIMOVAR 写入一字节数据LCALLOUTBYT  将A中的要写入的字节数据传送到SICLRSCKSETBCSRETi)、读字节子程序:读入命令READ(H)存在R(A为或)存储器页内地址存在B(H~FFH)读出的字节数存在RREADl: LCALLRDSR   调读状态寄存器子程序JBFOREADI 写入忙则等待CLRCSMOVAR  读入命令READ(H)送ALCALLOUTBYT 将A中的数据传送到SIMOVAB    储器页内地址存在B(H~FFH)中送ALCALLOUTBYT 将A中的数据传送到SI

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/36

单片机

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利