UART(中文版的数据手册).doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在S3C2410中,UART提供了三个独立的异步串行通信端口。每个端口都可以基于中断或者DMA进行操作,这样就可以让CPU和UART之间创建一个中断或者DMA请求来进行数据传输。此外,USB接口也可以提供更高的波特率,支持高达230.4K的波特率。S3C2410还包含了可编程的波特率、红外接收/发送、一个或两个停止位插入以及5-8位数据宽度和奇偶校验等功能。每种类型的UART都有其特点和优势。例如,串口2和串口3支持IrDA1.016字节FIFO,而串口4和串口5支持

第十一章 异步串口通信

概述

S3C2410的UART提供3个独立的异步串行通信端口,每个端口可以基于中断或者DMA进行操作。换句话说,UART控制器可以在CPU和UART之间产生一个中断或者DMA请求来传输数据。UART在系统时钟下运行可支持高达230.4K的波特率,如果使用外部设备提供的UEXTCLK,UART的速度还可以更高。每个UART通道各含有两个16位的接收和发送FIFO。

S3C2410的UART包括可编程的波特率,红外接收/发送,一个或两个停止位插入,5-8位数据宽度和奇偶校验。

每个UART包括一个波特率发生器、一个发送器、一个接收器和一个控制单元,如图11-1所示。波特率发生器的输入可以是PCLK或者UEXTCLK。发送器和接收器包含16位的FIFO和移位寄存器,数据被送入FIFO,然后被复制到发送移位寄存器准备发送,然后数据按位从发送数据引脚TxDn输出。同时,接收数据从接收数据引脚RxDn按位移入接收移位寄存器,并复制到FIFO。

特性

RxD0,TxD0,RxD1,TxD1,RxD2,和TxD2基于中断或者DMA操作

UARTCh0,1,和2具有IrDA1.016字节FIFO

UARTCh0和1具有nRTS0,nCTS0,nRTS1,和nCTS1

支持发生/接收握手

图11-1 UART方框图

串口操作

下述部分描述了UART的一些操作,包括数据发送、数据接收、中断产生、波特率发生、loop-back模式、红外模式和自动流控制。

数据发送

发送数据的帧结构是可编程的,它由1个起始位、5-8个数据位、1个可选的奇偶位和1-2个停止位组成,这些可以在线控制寄存器ULCONn中设定。接收器可以产生一个断点条件——使串行输出保持1帧发送时间的逻辑0状态。当前发送字被完全发送出去后,这个断点信号随后发送。断点信号发送之后,继续发送数据到TxFIFO(如果没有FIFO则发送到Tx保持寄存器)。

数据接收

与数据发送一样,接收数据的帧格式也是可编程的。它由1个起始位、5-8个数据位、1个可选的奇偶位和1-2个停止位组成,这些可以在线控制寄存器ULCONn中设定。接收器可以探测到溢出错误和帧错误。

溢出错误:在旧数据被读出来之前新的数据覆盖了旧的数据

帧错误:接收数据没有有效的停止位

当在3个字时间(与字长度位的设置有关)内没有接收到任何数据并且RxFIFO非空时,将会产生一个接收超时条件。

自动流控制(AFC)

UART0和UART1通过nRTSandnCTS信号支持自动流控制,例如连接到外部UART时。如果用户希望将UART连接到一个MODEM,可以在UMCONn寄存器中禁止自动流控位,并且通过软件控制nRTS信号。

在AFC时,nRTS由接收器的状态决定,而nCTS信号控制发送器的操作。只有当nCTS信号有效的时候(在AFC时,nCTS意味着其它UART的FIFO准备接收数据)UART发送器才会发送FIFO中的数据。在UART接收数据之前,当它的接收FIFO多于2字节的剩余空间时nRTS必须有效,当它的接收FIFO少于1字节的剩余空间时nRTS必须无效(nRTS意味着它自己的接收FIFO开始准备接收数据)。

图11-2 UARTAFC接口

注:UART2不支持AFC功能,因为S3C2410没有nRTS2和nCTS2。

无AFC的例子

通过FIFO操作Rx

选择接收模式(中断还是DMA模式)。

检查UFSTATn寄存器中RxFIFO的值。如果值小于15(RXFIFO未满),用户必须将UMCONn[0]置1(nRTS生效),如果大于等于15(RXFIFO已满),用户必须将UMCONn[0]清0(nRTS无效)。

重复第2步。

通过FIFO操作Tx

选择发送模式(中断还是DMA模式)。

检查UMCONn[0]的值,如果为1(nRTSactive),写数据到TxFIFO

RS-232C接口

如果希望将UART连接到MODEM,nRTS,nCTS,nDSR,nDTR,DCD和nRI信号是必须的。这种情况下用户可以通过GPIO控制这些信号因为AFC不支持RS-232C接口。

中断/DMA请求的产生

每个UART有5个状态(Tx/Rx/Error)信号:溢出错误、帧错误、接收缓冲满、发送缓冲空和发送移位寄存器空。这些状态体现在UART状态寄存器中的相关位(UTRSTATn/UERSTATn)。

溢出错误和帧错误与接收错误状态相关,每个错误可以产生一个接收错误状态中断请求,如果控制寄存器UCONn中的receive-error-status-interrupt-enable位被置1的话。如果探测到一个receive-err

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档