S3C2410中文手册第11章UART.docx

上传人:b****2 文档编号:16914324 上传时间:2023-04-24 格式:DOCX 页数:15 大小:1.89MB
下载 相关 举报
S3C2410中文手册第11章UART.docx_第1页
第1页 / 共15页
S3C2410中文手册第11章UART.docx_第2页
第2页 / 共15页
S3C2410中文手册第11章UART.docx_第3页
第3页 / 共15页
S3C2410中文手册第11章UART.docx_第4页
第4页 / 共15页
S3C2410中文手册第11章UART.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

S3C2410中文手册第11章UART.docx

《S3C2410中文手册第11章UART.docx》由会员分享,可在线阅读,更多相关《S3C2410中文手册第11章UART.docx(15页珍藏版)》请在冰豆网上搜索。

S3C2410中文手册第11章UART.docx

S3C2410中文手册第11章UART

第十一章异步串口通信

概述

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.0&16字节FIFO

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

—支持发生/接收握手

图11-1UART方框图

串口操作

下述部分描述了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-2UARTAFC接口

注:

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

无AFC的例子

通过FIFO操作Rx

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

2、检查UFSTATn寄存器中RxFIFO的值。

如果值小于15,用户必须将UMCONn[0]置1(nRTS生效),如果大于等于15,用户必须将UMCONn[0]清0(nRTS无效)。

3、重复第2步。

通过FIFO操作Tx

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

2、检查UMCONn[0]的值,如果为1,写数据到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-error-status-interrupt-enable位,通过读UERSTSTn的值可以识别这一中断请求。

控制寄存器UCONn的接收器模式为1(中断或者循环检测模式):

当接收器在FIFO模式下将一个数据从接收移位寄存器写入FIFO时,如果接收到的数据到达了RxFIFO的触发条件,Rx中断就产生了。

在无FIFO模式下,每次接收器将数据从移位寄存器写入接收保持寄存器都将产生一个RX中断请求。

如果控制寄存器的接收和发送模式选择为DMAn请求模式,在上面的情况下则是DMAn请求发生而不是RX/Tx中断请求产生。

UART错误状态FIFO

UART除了RxFIFO外还有错误状态FIFO。

错误状态FIFO指示接收到的哪个数据有错误。

只有当有错误的数据准备读出的时候才会产生错误中断。

要清除错误状态FIFO,URXHn和UERSTATn必须被读出。

例如:

假设UARTRxFIFO顺序接收到ABCD4个字符,在接收B的时候发生了帧错误。

事实上UART接收错误并未产生任务错误中断,因为错误的数据B还没有被读出,只有当读B字符的时候才会发生错误中断。

图11-3描述了这一例子。

波特率发生器

每个UART的波特率发生器提供串行时钟给接收器和发送器。

波特率发生器的时钟源可以选择内不系统时钟或者UEXTCLK。

换句话说,通过设置UCONn的时钟选择被除数是可选的。

波特率时钟通过对时钟源(PCLKORUEXTCLK)进行16分频,然后进行一个16位的除数分频得到,这个分频数由波特率除数寄存器UBRDIVn指定。

UBRDIVn可由下式得出:

UBRDIVn=(int)(PCLK/(bps*16))-1

此除数应该在1-(2的16方-1)之间。

为了UART的精确性,S3C2410还支持UEXTCLK作为被除数。

如果使用UEXTCLK(由外部UART设备或者系统提供),串行时钟能够精确地和UEXTCLK同步,因此用户可以得到更精确的UART操作,UBRDIVn由下式决定:

UBRDIVn=(int)(UEXTCLK/(bpsx16))–1

此除数应该在1-(2的16方-1)之间,且UEXTCLK要比PCLK低。

例如,如果波特率为115200bps,而PCLK或者UEXTCLK为40MHz,则UBRDIVn为:

UBRDIVn=(int)(40000000/(115200x16))-1

=(int)(21.7)-1

=21-1=20

波特率错误容差

UART的帧错误应该少于1.87%(3/160)。

UARTFrameerrorshouldbelessthan1.87%(3/160).

tUPCLK=(UBRDIVn+1)x16x1Frame/PCLKtUPCLK:

RealUARTClock

tUEXACT=1Frame/baud-ratetUEXACT:

IdealUARTClock

UARTerror=(tUPCLK–tUEXACT)/tUEXACTx100%

注意:

1、1帧=起始位+数据位+奇偶位+停止位

2、在特定条件下,波特率上限可达921.6K,例如当PCLK为60MHZ时,可以使用921.6K的波特率而误差为1.69%

loop-back模式

为了识别通讯连接中的故障,UART提供了一种叫loop-back模式的测试模式。

这种模式结构上使能了UART的TXD和RXD连接,因此发送数据被接收器通过RXD接收。

这一特性允许处理器检查每个SIO通道的内部发送到接收的数据路径。

可以通过设置UART控制寄存器UCONn中的loopback位选择这一模式。

红外(IR)模式

UART支持红外(IR)接收和发送,可以通过设置UART线控制寄存器ULCONn的Infra-red-mode位来进入这一模式。

图11-4阐述了如何实现IR模式。

在IR发送模式下,发送脉冲的比例是3/16——正常的发送比率(当发送数据位为0的时候);在IR接收模式下,接收器必须检测3/16的脉冲来识别0值(见图11-6和11-7所示的帧时序)。

 

UARTSFR

UART线控制寄存器ULCONn

有3个UART线控制寄存器:

ULCON0,ULCON1,andULCON2

UART控制寄存器UCONn

有3个UART控制寄存器:

UCON0,UCON1,andUCON2

注意:

DMA接收有FIFO模式下,当UART没有达到FIFO触发条件而且3个字时间没有接收到数据时,Rx中断会产生,用户应该检查FIFO的状态并读出其它数据。

UARTFIFO控制寄存器UFCONn

波特率除数寄存器UBRDIVn

有3个波特率除数寄存器:

UBRDIV0,UBRDIV1,UBRDIV2,存储于里面的值用于设置串口波特率:

UBRDIVn=(int)(PCLK/(bpsx16))–1

或UBRDIVn=(int)(UEXTCLK/(bpsx16))–1

此除数应该在1-(2的16方-1)之间,且UEXTCLK要比PCLK低。

例如,如果波特率为115200bps,而PCLK或者UEXTCLK为40MHz,则UBRDIVn为:

UBRDIVn=(int)(40000000/(115200x16))-1

=(int)(21.7)-1

=21-1=20

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1