第五章 片内外设_异步串行口.ppt_第1页
第五章 片内外设_异步串行口.ppt_第2页
第五章 片内外设_异步串行口.ppt_第3页
第五章 片内外设_异步串行口.ppt_第4页
第五章 片内外设_异步串行口.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

具有最大传输速率的全双工发送和接收操作。发送和接收操作使用8-bit数据。使用一个或两个停止位。在所有模式中采用双缓冲发送和接收数据。可调波特率最高可达250,00010-bit字符/秒。自动波特率检测逻辑。,5.8异步串行口,C2XX器件具有一个异步串行口,它用于向其它器件发送数据,或者接收来自其它器件的数据。,该异步串行口性能如下:,5.8.1异步串行口概况,片内异步串行口(ASP)可为主CPU与C2XX器件之间或者为两个C2XX器件之间提供简便的串行数据通讯。,数据的异步通信模式通常标为UART(通用异步接收和发送),AsynchronousSerialPort,UniversalAsynchronousReceiverandTransmitter,需要掌握:一个数据交互寄存器三个控制寄存器一个中断(三种原因)-中断服务程序内详细判定,发送,写入发送寄存器的数据可以从一个8-bit并行格式转换成一个10-bit或6-bit的串行格式(8-bit数据之前加了个起始位,之后加上一个或二个停止位)。这10-bit或6-bit被顺序地、逐位(首先是LSB位)送入一个发送引脚。,接收,在一个接收引脚接收数据时一次只接收一位(LSB在前;一个起始位,8-bit数据,一个或二个停止位)。被接收的数据从串行格式转换成并行格式并存储在一个16-bit接收寄存器的低8位中。,标志与/或中断寄存器可指示数据传送中的错误。发送和接收的最大速率可由内部波特率决定。它是CLKOUT1频率的一个分频。确切的波特率值由16-bit的可编程波特率除数寄存器(BRD)值来决定。对于接收来说,你可启动(通过软件)自动波特检测逻辑,它允许ASP锁定接收数据的速率。,5.8.2异步串行口的组成和基本操作,异步串行口(ASP)的组成框图,1.信号,在异步串行口(ASP)操作中使用两种类型的信号:,数据信号,一个数据信号可将数据从发送器送入接收器。数据的传送通过发送器上的发送引脚(TX)和接收器上的接收引脚(RX)来完成。单向串行口传输需要一个数据信号;双向串行口传输需要两个数据信号。,握手信号,通过将ASP控制寄存器(ASPCR)的IO0一IO3位作为握手控制可以改善数据传输质量。异步串行目的传输是以字符为基础的。每个数据帧包含一个起始位、8个数据位和一个(或二个)停止位。发送和接收部分均为双缓冲,从而允许连续的数据传送。,异步串行口的引脚,上表列出的每个引脚均有一个同名的相关信号。,该发生器的输出频率为CLKOUT1的一个分频,并由一个16-bit的寄存器(BRD)管理(BRD的I/O地址为FFF7h)。如果CLKOUT1的频率为40MHz,则波特率发生器可产生高达2.5兆位/s(250,000字符/秒)和低到38.14位/s(3.81字符/秒)的波特率。,2.波特率发生器,波特率发生器是为异步串行口而设置的一个时钟发生器。,3.寄存器,以下4个片内寄存器允许发送和接收数据,端口以及控制:,异步数据发送和接收寄存器(ADTR),异步串行口控制寄存器(ASPCR),I/O状态寄存器(IOSR),波特率除数寄存器(BRD),控制,数据交互,异步数据发送和接收寄存器(ADTR),ADTR是一个用于发送和接收数据的16-bit读/写寄存器。ADTR是一个内部寄存器,它的I/O空间地址为FFF4h。,写入ADTR低8位的数据可由异步串行口发送。该端口接收的数据可以由ADTR的低8位读取。高字节为0。,异步串行口控制寄存器(ASPCR),通过ASPCR(I/O地址FFF5h)可以,设置端口模式,允许或禁止自动波特率,检测逻辑,选择停止位的数量,允许或禁止中断,设置TX引脚上的电平,配置IO3-IO0引脚,使端口复位,I/O状态寄存器(IOSR),IOSR(I/O地址FFF6h)可以,指示波特率检测,多种错误状态,数据传送状态,RX二引脚上的断路检测,IO3-IO0引脚状态,对IO3-IO0引脚上的变化检测,BRD(I/O地址FFF7h)既可通过软件装载,也可以自动波特率检测逻辑被启动以及波特率取样时通过端口装载。,BRD的值可用于确定数据传输波特率。,波特率除数寄存器(BRD),以下两个寄存器(不能通过编程访问)控制着ADTR和引脚之间的数据传送:,异步串行口发送移位寄存器(AXSR),异步串行口接收移位寄存器(ARSR),在发送时,ADTR的每个数据字符被送入AXSR。然后,AXSR通过TX引脚将字符移出(首先移出LSB位)。,接收期间,在RX引脚上,每个数据字符被逐位接收(首先是LSB位),并被移入ARSR。然后,ARSR将字符送入ADTR。,4.中断,异步串行口有一个硬件中断(TXRXINT)。,可通过各种事件产生。优先级为9(最高级是1)。是一个由中断屏蔽寄存器(IMR)和中断标志寄存器(IFR)管理的可屏蔽中断。,该中断,为避免来自ASP的一个双重中断,则应在相应的中断服务程序返回之前清除该中断服务程序中的IFR位(TXRXINT)。,TXRXINT将迫使CPU转入程序存储器的中断矢量单元000Ch。,该中断矢量单元内包含一条转移指令,可使程序转入一个中断服务程序。,该中断服务程序能够确定中断产生的原因并做出相应的反应。,操作:,注意:,5.基本操作,C2XX器件与主CPU之间典型的串行连接,当一个8-bit字符写入ADTR的低8应时,采用并行格式的数据被转换为具有一个起始位和一个(或二个)停止位的l0-bit或6-bit的字符。新的10-bit或6-bit字符接着被转换成一个串行数据流并通过TX引脚被逐位发送。数据传输时间由波特率来确定。波特率除数寄存器(BRD)是可编程的;它接收16-bit的值,并提供具有业界标准的波特率值。同样,如果RX引脚接收到一个10-bit或16-bit的数据流,则该串行口将串行数据流转换为一个8-bit的并行数据字符。ADTR的低8位存储接收到的8-bit字符。,在上图所示通讯模式中,通过发送数据引脚(TX)或接收数据引脚(RX)可分别完成任何8-bit字符的串行发送和接收。,TX/RX的数据发送/接收均使用TTL电平。然而,如果主机之间的距离超过几英尺,则数据线上必须加上线路驱动器(RS-232或RS-485,根据应用而定)。,5.8.3控制与端口复位,可通过下面三个映射到I/O空间的片内寄存器对异步串行口进行编程:,异步串行口控制寄存器(ASPCR),I/O状态寄存器(IOSR),波特率除数寄存器(BRD),1.异步串行口控制寄存器(ASPCR),ASPCR控制异步串行口的操作。,异步串行口控制寄存器(ASPCR)-I/O空间地址FFF5h,寄存器中的所有位为可读/写的(保留位(位12-10)除外)。ASPCR是一个片内寄存器。,第15位FREE,此位决定端口采用仿真运行模式。,FREE=0,选择仿真模式。然后由SOFT确定允许哪种仿真模式。,FREE=1,选择自由运行模式。,第14位SOFT,当FREE=0时,第14位确定仿真模式有效。,SOFT=0,SOFT=1,在字传输完成后停止,立即停止,第13位URST,异步串行口复位位,URST用于使异步串行口复位。复位时,URST=0。,URST=0,端口为复位状态,URST=1,端口有效,DIM=0禁止delta中断DIM=1允许delta中断,第12一10位为保留位。它们总是为0。,第12一10位Reserved,第9位DIM(delta),中断屏蔽,DIM位决定是否设置delta中断。在对通用I/O任一引脚(IO3、IO2、IO1、IO0)的配置产生变化时产生一个delta中断。,RIM=O禁止接收中断RIM=1允许接收中断,第8位TIM发送中断屏蔽,TIM决定是否设置发送中断。当发送寄存器(ADTR)为空时,根据THRE(IOSR中的发送寄存器已空指示)可产生发送中断。,TIM=0禁止发送中断TIM=1允许发送中断,第7位RIM接收中断屏蔽,RIM位决定是否设置接收中断。通过IOSR中的某些特定位(如:断路中断(BI)、帧中断(FE)、溢出错误(OE)或数据准备就绪(DR)等)可产生一个接收中断。,第6位STB停止位,STB选择用于发送和接收的停止位数量。,STB=0STB=1,第5位CAD校准A检测位,CAD用于允许和禁止自动波特率校准(自动波特校准)。,CAD=0禁止自动波特校准CAD=1允许自动波特校准,在发送和接收中使用一个停止位。它也是复位的缺省值。,在发送和接收中使用二个停止位。,第4位SETBRK设置断路位,SETBRK用于当端口不发送数据时,选择TX的输出电平。,当端口不发送数据时,TX输出被置为高电平。,当端口不发送数据时,TX输出被置为低电平。,第3位CIO3IO3的配置位,CIO3位将I/O引脚3(IO3)配置为输出或输入。,IO3被配置为输入。它也是复位时的缺省值。,IO3被配置为输出。,SETBRK=0SETBRK=1,CIO3=0CIO3=1,CIO2=0CIO2=1,第2位CIO2IO2的配置位,CIO2位将I/O引脚2(IO2)配置为输入或输出。,IO2被配置为输入。它也是复位时的缺省值。,IO2被配置为输出。,第1位CIO1IO1的配置位,CIO1位将I/O引脚1(IO1)配置为输出或输入。,IO1被配置为输出。,CIO1=0CIO1=1,IO1被配置为输入。它也是复位时的缺省值。,第0位CIO0IO0的配置位,CIO0位将I/O引脚0(IO0)配置为输出或输入。,IO0被配置为输入。它也是复位时的缺省值。,CIO0=0CIO0=1,IO0被配置为输出。,IOSR是一个16-bit的片内寄存器,它映射到I/O空间的FFF6h地址单元。,2.I/O状态寄存器(IOSR),IOSR返回异步串行口和I/O引脚IO0-IO3的状态。,I/O状态寄存器(IOSR)-I/O空间地址FFF6h,第15位Reserved,该位为保留位,并总是为0。,第14位ADCA检测完成位,如果ASPCR的CAD位为1并且ADTR接收到字符A或则ADC被设为1。在字符A或a被检测之后,它继续存储在ADTR中。为避免在下一个字符到来时出现溢出错误,应在设置ADC之后立即读取ADTR。,ADC=0ADC=1,A或a还未被检测。将不产生接收中断(TXRXINT)。,A或a已被检测。如果ASPCR的CAD位也为1,则无论ASPCR的DIM、TIM和RIM位的值如何都将产生一个接收中断(TXRXINT)。,第13位BI断路中断指示器,BI=1指示在RX引脚上己检测到一个断点。向该位写入1,则BI位清零。复位时,BI位也清零。RX引脚上的断路也产生一个中断(TXRXWT)。,第12位TEMT发送空指示器,复位时,TEMT位为1。,ADTR与/或AXSR以满。,ADTR与/或AXSR己空;ADTR准备发送一个新字符。,TEMT=0TEMT=1,第11位THRE发送寄存器(ADTR)空指示器,当发送寄存器(ADTR)的内容被送入发送移位寄存器(AXSR)时,THRE为1。通过将一个新字符装入发送寄存器可使THRE复位,并清零。器件复位时,THRE位为1。,THRE=0THRE=1,发送寄存器未空。端口操作正常。,发送寄存器已空。指示寄存器准备装载一个新字符。,第10位FE帧错误指示器,FE指示在接收时是否已检测到一个有效的停止位。通过向FE位写入1可使FE位清零。复位时,FE位清零。一个帧错误也产生一个中断(TXRXINT)。,未检测到帧错误。端口操作正常。,接收到的字符不含有一个有效(逻辑1)停止位。,FE=0FE=1,第9位OE接收寄存器(ADTR)溢出指示器,OE指示是否一个末被读取的字符己被覆盖。通过向OE位写入可使OE位清零。复位时,OE位清零。发生溢出也能产生一个中断(TXRXINT)。,未检测到溢出错误。端口正常操作。,在ADTR的一个字符被它的下一个字符覆盖之前,该字符未被读取。,OE=0OE=1,第8位DR接收数据准备就绪指示,DR位指示ADTR是否已接收到一个新字符当接收寄存器(ADTR)被读或当器件复位时,DR位自动清零。ADTR接收一个新字符时也将产生一个中断(TXRXINT)。,接收寄存器(ADTR)为空。,一个字符已被全部接收并且应从接收寄存器(ADTR)读取。,DR=0DR=1,第7位DIO3-IO3电平变化检测位,DIO3指示在IO3引脚上是否发生了一次电平变化当通过ASPCR的CIO3位(CIO3=0)将IO3配置为输入,并且串行口被ASPCR的URST位(URST=1)启动时,可以检测到IO3上的一次电平变化。向DIO3写入1可清零。对IO3引脚上一次变化的检测也可产生一个中断(TXRXINT)。,未检测到IO3引脚上的一次电平变化。,检测到IO3引脚上的一次电平变化。,DIO3=0DIO3=1,第6位DIO2-IO2电平变化检测位,DIO2指示IO2引脚上是否己发生了一次电平变化。当通过ASPCR的CIO2位(CIO2=0)将IO2配置为输入,并且串行口被ASPCR的URST位(URST=1)启动时,可检测到IO2的一次配置电平变化。向DIO2写入1可清零。对IO2引脚上一次电平变化的检测也可产生中断(TXRXINT)。,未检测到IO2引脚上的一次电平变化。,检测到IO2引脚上的一次电平变化。,DIO2=0DIO2=1,第5位DIOIO1电平变化检测位,DIO1指示是否检测到IO1引脚上己发生了一次电平变化。当通过ASPCR的CIO1位(CIOl=0)将IO1配置为输入,并且串行口被ASPCR的URST位(URST=1)启动时,可以检测到IO1上的一次电平变化。向DIO1写入1可清零。对IO1引脚上一次电平变化的检测也可产生一个中断(TXRXINT)。,未检测到IO1引脚上的一次电平变化。,检测到IO1引脚上的一次电平变化。,DIO1=0DIO1=1,第4位DIO0-IO0电平变化测试位,DIO0指示在IO0引脚上是否己发生一次电平变化。当通过ASPCR的CIO0位(CIO0=0)将I00配置为输入,并且串行口被ASPCR的URST位(URST=1)启动时,可以检测到IO0上的一次电平变化。向DIO0写入1可清零。对IO0引脚上一次电平变化的检测也可产生一个中断(TXRXINT)。,未检测到IO0引脚上的一次电平变化。,检测到IO0引脚上的一次电平变化。,DIO0=0DIO0=1,第3位IO3IO3的状态位,当IO3引脚被配置为输入(通过ASPCR的CIO3位)时,IO3位反映IO3引脚的当前电平。,IO3信号为低电平,IO3信号为高电平,IO3=0IO3=1,第2位IO2IO2的状态位,当IO2引脚被配置为输入(通过ASPCR的CIO2位)时,IO2位反映IO2引脚的当前电平。,IO2信号为低电平,IO2信号为高电平,IO2=0IO2=1,第1位IO1-IO1的状态位,当IO1引脚被配置为输入(通过ASPCR的CIO1位)时,IO1位反映IO1引脚的当前电平。,IO1=0IO1信号为低电平IO1=1IO1信号为高电平,第0位IO0-IO0的状态位,当IO0引脚被配置为输入(通过ASPCR的CIO0位)时,IO0位反映IO0引脚的当前电平。,IO0=0IO0信号为低电平IO0=1IO0信号为高电平,3.波特率除数寄存器(BRD),通过BRD可设置各种不同的异步串行口波特率。,BRD是一个片内寄存器,其I/O地址为FFF7h。,(5-2)十进制的BRD值=CLKOUT1/(l6所需波特率),等式5-2显示了如何通过设置BRD来获得所需的波特率。当BRD为0时,ASP将不发送或接收任何字符。复位时,BRD=0001h。,常用波特率和相应的BRD值,上表列出了常用波特率以及与给定CLKOUT1频率相对应的BRD十六进制值。,4.使用自动波特率检测,ASP包含的自动波特率检测逻辑允许ASP锁定数据传输率。以下是执行检查逻辑的步骤:,通过设置ASPCR的CAD位为1和IOSR的ADC位为0可以启动自动波特率检查。以BRD寄存器定义的波特率接收来自一个主CPU的ASCII字符A或a,并将它作为第1个字符。如果接收到的第1个字符是A或a,则串行口将锁定该数据传输波特率并用该波特率值刷新BRD寄存器。如果TXRXINT在中断屏蔽寄存器中不被屏蔽,并且它通过状态寄存器ST0和ST1的INTM位被允许,则产生TXRXINT中断(中断矢量单元为000ch)。无论ASPCR中的DIM、TIM和RIM位的值如何,都将发生中断。,1,2,3,在波特率检测中断之后,应读取ADTR以便清除来自接收缓冲的A或a字符。如果ADTR不被清除,则接收到的任何字符都将使IOSR的OE位置1,以指示一个溢出错误。一旦波特率被检测,则CAD和ADC住都必须被清除(向CAD写入0并向ADC写入1)。如果CAD不被清除,则自动波特率检测将试图重新锁定字符传输速度。另外,只要ADC=1并且CAD=1,就将产生接收中断。,4,5,引脚IO3、IO2、IO1和IO0可单独被设置为输入或输出,并且可用作异步串行口的握手信号或通用I/O引脚。它们可通过异步串行口控制寄存器(ASPCR)和I/O状态寄存器(IOSR)被软件编程。,5.使用I/O引脚IO3、IO2、IO1和IO0,引脚IO0-IO3的逻辑示例,ASPCR的4个LSBs位(位CIO0-CIO3)用于将每个引脚设置为输入或输出。例如,设置CIO0为1可将IO0配置为一个输出;设置CIO0为0可将IO0配置为一个输入。复位时,CIO0-CIO3均清零,IO3-IO0引脚均为输入。,使用ASPCR的CIO3-CIO0位配置IO3-IO0引脚,均可用于跟踪相应引脚上一个先前已知或未知信号值的变化。如果在其中一个引脚上检测到一个电平变化,则相应的检测位被设置为1,并且TXRXINT中断请求被送入CPU。通过向各个检测位写入1可以使它们清零。,当引脚IO0-IO3被配置为输入时,IOSR提供8个LSBs位,用于监控这4个引脚的。,IOSR的第3位到第1位(IO3、IO2、IO1和IO0),均可用于读取相应引脚上信号的当前逻辑电平(高电平或低电平)。,IOSR的第7位到第4位(DIO3、DIO2、DIO1或DIO0),只有当引脚被配置为输入并且串行口被ASPCR的URST位(URST=1)启动时,DIO3-DIO0才有效。,下表列出了当IO0-IO3为输入时,IOSR第0位到第7值的意义。,使用IOSR位IO0-IO3和DIO0-DIO3观察引脚IO0-IO3的状态,+写1到该位时使该位清0。,当引脚IO0-IO3被配置为输出时,可以向IOSR的4个LSBs位(IO3-IO0)执行写操作。向各个数据位写入的值将作为相应引脚上的新逻辑电平。,向第2位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论