ARM samsung 2440中文手册 s3c2440a_11UART

更新时间:2023-05-30 06:34:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ARM samsung 2440中文手册

第十一章UARTForum:/

第十一章UART

10.1概述

s3c2440A通用异步接收器和发送器(UART)提供了三个独立的异步串行I/O(SIO)端口,每个端口都可以在中断模式或DMA模式下操作。换言之,UART可以生成一个中断或DMA请求用于CPU和UART之间的数据传输。UART使用系统时钟可以支持最高115.2Kbps的波特率。如果一个外部设备提供UEXTCLK给UART,UART可以在更高的速度下工作。每个UART通道对于接收器和发送器包括了2个64位的FIFO。

s3c2440AUART包括了可编程波特率,红外传输接收,一个或两个停止位,5位6位7位8位数据长度和奇偶校验。

每个UART包含一个波特率发送器,发送器,计数器和一个控制单元,如图11-1所示。其波特率发生器可由PCLK,FCLK/n或UEXTCLK(外部输入时钟)来锁定。发送器和接收器包含了64位FIFO和数据移位器。数据写到FIFO然后在被传送前拷贝到发送移位器。数据通过发送数据引脚(TxDn)被发出。同时,接收数据通过接收数据引脚(RxDn)移入,然后从移位器拷贝到FIFO。

10.2特点

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

-有红外和64位FIFO的UART通道0和1

-有nRTS0,nCTS0,nRTS1和nCTS1的UART通道0和1-支持握手的发送和接收

ARM samsung 2440中文手册

第十一章UARTForum:

/

10.3模块图

10.4UART操作

以下章节描述了UART操作,包括数据传输,数据接收,中断生成,波特率生,回送模式,红外模式自动流控制。

10.4.1数据发送

发送的数据帧是可编程的。其包括一个开始位,5~8个数据位,一个可选的奇偶校验位和1~2个停止位,其可由线性控制寄存器ULCONn来设置。发送器也可以产生一个终止条件,其可以对一个帧发送时间强制串行输出为逻辑0。在当前发送字被完全传输完以后,该模块发送一个终止信号。在终止信号发送后,其串行发送数据到TxFIFO。

10.4.2数据接收

如数据发送,接收的数据帧是可编程的。其包括一个开始位,5~8个数据位,一个可选的奇偶校验位和1~2个停止位,其可由线性控制寄存器ULCONn来设置。接收器可以侦测溢出错误,奇偶校验错误,帧错误和终止条件,每个错误都可以设置一个错误标志。-溢出错误是指在旧数据被读取前新数据覆盖了旧数据。-奇偶校验错误是指接收器侦测到一个不希望的奇偶条件。-帧错误是指接收到的数据没有一个有效的停止位。

-终止条件是指RxDn输入保持逻辑0状态长于一个帧的传输时间。

当接收器在三个字的时间内(其间隔根据字长位的设置)没有收到任何数据且RxFIFO在FIFO模式下不为空,接收超时条件出现。

ARM samsung 2440中文手册

10.4.3自动流控制(AFC)

s3c2440A的UART0和UART1支持有nRTS和nCTS的自动流。这种情况下,其可以连接到外部UART。如果用户想连接UART到Modem,应使UMCONn寄存器中的自动流控制位无效且通过软件控制nRTS。

在AFC中,nRTS依赖于接收器的条件,nCTS信号控制发送器的操作。UART的发送器传输数据到FIFO仅当nCTS信号被激活(在AFC中,nCTS意思是对方的UARTFIFO准备好接收数据)。在UART接收数据之前,当其接收FIFO有大于32个字节的空闲空间,nRTS必须被激活;当其接收FIFO有小于

32个字节的空闲空间,nRTS必须置非激活。

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

非自动流控制举例(用软件控制nRTS和nCTS)使用FIFO的接收操作

(1)选择接收模式(中断或DMA模式)

(2)检查UFSTATn寄存器中的RxFIFO计数器。如果其值小于32,用户应该将

UMCONn[0]的值置1(激活nRTS),如果其等于大于32,用户应该将其置0。

(3)重复步骤2有FIFO的发送操作

(1)选择发送模式(中断或DMA模式)

(2)检查UMSTATn[0]的值,如果其值为1,用户写数据到发送FIFO寄存器。

10.4.4RS-232C接口

如果用户想连接UART到Modem接口上,就需要nRTS、nCTS、nDSR、nDTR、DCD和nRI。在这种情况下,用户可通过软件使用通用IO端口来控制这些信号,因为AFC不支持RS-232C接口。

10.4.5中断/DMA请求生成

s3c2440A的每个UART有七个状态(Tx/Rx/Error)信号:溢出错误,奇偶校验错误,帧错误,终止,接收缓存数据准备好,发送缓存空和发送移位器空,其由相应UART的状态寄存器(UTRSTATn/UERSTATn)指出。

溢出错误,奇偶校验错误,帧错误,终止条件是作为接收错误状态来参考,每种错误都可以引起接收错误状态中断请求,如果在控制寄存器UCONn中的接收错误状态中断使能位置1。

当接收错误状态中断请求被检测到,该信号引起的请求可以通过读UERSTSTn寄存器的值

ARM samsung 2440中文手册

来鉴别。

当接收器传输接收移位器上的数据到在FIFO模式下的接收FIFO寄存器上且接收到的数据数量达到接收FIFO触发水平,接收中断产生,如果在控制寄存器UCONn中接收模式被置1(中断请求或查询模式)。在非FIFO模式下,传输接收移位器的数据到接收保持寄存器将引起在中断请求或查询模式下的接收中断。

当发送器传输接收移位器上的数据到发送FIFO寄存器上且在在发送FIFO中剩余的数据数量达到发送FIFO触发水平,发送中断产生,如果在控制寄存器UCONn中的接收模式被选定为中断请求或查询模式。在非FIFO模式下,传输发送保持寄存器的数据到发送移位器将引起在中断请求或查询模式下的发送中断。

如果在控制寄存器中发送模式和接收模式被选定为DMAn请求模式,这样DMAn请求将取代上述情形下的接收或发送中断出现。类型FIFO模式非FIFO模式Rxinterrupt只要接收数据到达接收FIFO的触发等级,只要接收缓存为空,由接收

保持寄存器生成。中断产生。

当FIFO中的数据数量没有达到接收FIFO的触发等级且在三个字时间内没有接收到任何数据(接收超时),产生中断。该时间根据字长位设置。

Txinterrupt只要发送数据达到发送FIFO触发等级,中只要发送缓存为空,由接收

断产生。发送寄存器生成。

Errorinterrupt当帧错误,奇偶错误或终止信号被检测由错误生成。但是如果其他

错误同时产生,仅一个中断到,中断产生。

当达到接收FIFO的上限没有读出数据,中产生。断产生。

10.4.6UART错误状态FIFO

除了了接收FIFO寄存器,UART有一个错误状态FIFO。错误状态FIFO是指出FIFO寄存器中有错的数据。当有错的数据准备读出,错误中断就产生。为了清除错误状态FIFO,有错误的URXHn和UERSTATn必须被读出。

举例

假定UART接收FIFO顺序接收到A、B、C、D、E且在接收B时出现帧错误,在接收D时出现奇偶校验错误。因为错误接收的字符没有被读取,所以UART接收错误没有产生错误中断。一旦字符被读取,错误中断产生。

如图11-3所示UART接收4个字符包括2个错误。时间#0#1#2#3#4#5#6

顺序流

当没有字符被读出

接收到A、B、C、D、E在A被读出后在B被读出后在C被读出后在D被读出后在E被读出后

错误中断

-帧错误(B中)中断出现

--奇偶校验错误(D中)中断出现

--注

-‘B’必须被读出

--‘D’必须被读出

--

ARM samsung 2440中文手册

10.4.7波特率产生

每个UART波特率发生器为发送器和接收器提供串行时钟。波特率发生器的源时钟可以选择s3c2440A的内部系统时钟或UEXTCLK。换言之,被除数可以设定UCONn中的时钟选择来选择。波特率时钟通过16和由UART波特率除数寄存器(UBRDIVn)中定义的16位除数来分频源时钟(PCLK,FCLK/norUEXTCLK)产生。UBRDIVn由以下表达式来决定。UBRDIVn=(int)(UARTclock/(buadratex16))–1(UARTclock:PCLK,FCLK/norUEXTCLK)

UBRDIVn应该是从1到216-1,当使用小于PCKL的外部时钟UEXTCLK时应该设置0。例如如果波特率是115200bps且UART时钟是40MHz,UBRDIVn是UBRDIVn=(int)(40000000/(115200x16))-1=(int)(21.7)-1[roundtothenearestwholenumber]=22-1=21

波特率错误公差Baud-RateErrorToleranceUART帧错误应该少于1.87%(3/160).

tUPCLK=(UBRDIVn+1)x16x1Frame/PCLKtUPCLK:RealUARTClocktUEXACT=1Frame/baud-ratetUEXACT:IdealUARTClockUARTerror=(tUPCLK–tUEXACT)/tUEXACTx100%注:

1.1Frame=startbit+databit+paritybit+stopbit.

2.在特定条件下,我们支持波特率最高达到921.6Kbps。例如,当PCLK为60MHz,你可以在1.69UART错误公差下使用921.6KbpsunderUARTerrorof1.69%.

10.4.8回送模式

s3c2440AUART提供了一个参考作为回送模式的测试模式,以帮助孤立通讯连接中的错误。这个模式结构上使能在UART中的RXD和TXD连接。在此模式下发送的数据通过RXD接收到接收器。该特点是允许处理器验证内部传输和每个SIO通道的接收数据通道。该模式通过设置UART控制寄存器UCONn的回送位来选定。

ARM samsung 2440中文手册

10.4.9红外模式

S3c2440AUART模块支持红外发送和接收,其通过设置UART线性控制寄存器ULCONn的红外模式位来选定。如图11-4所示如何执行一个红外模式。

在红外发送模式,发送脉冲是3/16的正常串行发送率(当发送数据位为0时)。在红外接收模式下,接收器必须检测3/16的脉冲期间来识别一个0值(看如图

11-7和11-6

所示的帧时序图)。

ARM samsung 2440中文手册

C2344A中文0Data sehet十第一章URA

T系联箱: adm信n@embieddedlnux.ori.gcn Formu:thtp:/w/w.emwbdededinulx.rgocn.

/S

ARM samsung 2440中文手册

10.5UART特殊寄存器

(1)UART线性控制寄存器(ULCONn)(2)UART控制寄存器(UCONn)(3)UARTFIFO控制寄存器(UFCONn)(4)UARTMODEM控制寄存器(UMCONn)(5)UART接收发送状态寄存器(UTRSTATn)(6)UART错误状态寄存器(UERSTATn)(7)UARTFIFO状态寄存器(UFSTATn)(8)UARTMODEM状态寄存器(UMSTATn)(9)UART发送缓存寄存器(UTXHn)(10)UART接收缓存寄存器(URXHn)

(11)UART波特率除数寄存器(UBRDIVn)

10.5.1UART线性控制寄存器

UARTLINECONTROLREGISTER(ULCONn)

寄存器

ULCON0ULCON1ULCON2

地址

0x500000000x500040000x50008000

读写R/WR/WR/W描述

UART通道0线性控制寄存器UART通道1线性控制寄存器UART通道2线性控制寄存器

描述

复位值

0x000x000x00

ULCONnReservedInfraredMode

[7][6]

初始值

00

决定是否使用红外模式0=正常模式操作1=红外接收发送模式

在UART发送接收操作中定义奇偶码的生成和检验类型

0xx=Noparity100=Oddparity101=Evenparity

110=Parityforced/checkedas1111=Parityforced/checkedas0

ParityMode[5:3]000

NumberofStopBit[2]

定义度搜按个停止位用于帧末信号0=每帧一个停止位1=每帧两个停止位

指出发送接收每帧的数据位数00=5-bits01=6-bits10=7-bits11=8-bits

WordLength[1:0]00

ARM samsung 2440中文手册

10.5.2UART控制寄存器

UARTCONTROLREGISTER(UCONn)

寄存器

UCON0UCON1UCON2UCONnFCLKdivider

地址

0x500000040x500040040x50008004

读写R/WR/WR/W描述

UART通道0控制寄存器UART通道1控制寄存器UART通道2控制寄存器

描述

复位值

0x000x000x00

[15:12]

当UART时钟源选为FCLK/n时的分频器值。

n由UCON0[15:12],UCON1[15:12],UCON2[14:12]来决定。

UCON2[15]是FCLK/n时钟使能位。设置n从7到21,使用UCON0[15:12],设置n从22到36,使用UCON1[15:12],设置n从37到43,使用UCON2[14:12],UCON2[15]:0=无效FCLK/n时钟

1=使能FCLK/n时钟

对于UCON0,UART时钟=FCLK/(divider+6),其divider>0,UCON1,UCON2必须为0。

ex)1:UARTclock=FCLK/7,2:UARTclock=FCLK/83:UARTclock=FCLK/9,…,15:UARTclock=FCLK/21对于UCON1,UART时钟=FCLK/(divider+21),其divider>0,UCON0,UCON2必须为0

ex)1:UARTclock=FCLK/22,2:UARTclock=FCLK/233:UARTclock=FCLK/24,…,15:UARTclock=FCLK/36对于UCON2,UART时钟=FCLK/(divider+36),其divider>0,UCON0,UCON1必须为0.

ex)1:UARTclock=FCLK/37,2:UARTclock=FCLK/383:UARTclock=FCLK/39,…,7:UARTclock=FCLK/43如果UCON00/1[15:12]和UCON2[14:12]都是0,分频器为44,t则UART时钟=FCLK/44总的除数范围是从7到44。

初始值0000

ClockSelection

[11:10]

为波特率选择PCLK,UEXTCLK或FCLK/n。

UBRDIVn=(int)(selectedclock/(baudratex16))–100,10=PCLK,01=UEXTCLK,11=FCLK/n(如果你选择FCLK/n,你应该在选择或取消选择FCLK/n加上注释代码)

TxInterruptType

[9]

发送中断请求类型

0=Pulse(在非FIFO模式下一旦发送缓存变空或在FIFO模式下发送缓存达到发送FIFO触发水平,则中断请求)1=Level(当非FIFO模式下发送缓存变空或在FIFO模式下发送缓存达到发送FIFO触发水平,则中断请求)

RxInterrupt

Type

[8]

接收中断请求类型

0=Pulse(在非FIFO模式下一旦接收缓存接收到数据,或在

ARM samsung 2440中文手册

FIFO模式下,发送缓存达到发送FIFO触发水平,则中断请求)

1=Level(在非FIFO模式下接收缓存接收数据,或在FIFO模式下发送缓存达到发送FIFO触发水平,则中断请求)

RxTimeOutEnableRxErrorStatusInterruptEnableLoopbackModeSendBreakSignalTransmitMode

[5][7]

在UARTFIFO有效时,使能接收超时中断。该中断是一个接收中断。

0=无效1=有效

使能UART对异常产生中断,例如在接收期间终止信号,帧错误,奇偶校验错误和溢出错误。0=不产生接收错误状态中断1=

产生接收错误状态中断.

对该位置位将引起UART进入回送模式。该模式仅用于测试目的。

0=正常操作1=回送模式

对该位置位将引起UART在一个帧时间内发送一个终止信号。在发送终止信号后该位自动清零。0=正常发送1=发终止信号

决定哪种功能用来写数据到UART发送缓存寄存器(UARTTxEnable/Disable)。00=无效

01=中断请求或查询模式10=DMA0请求(仅对UART0),

DMA3请求(仅对UART2)11=DMA1请求(仅对UART1)

ReceiveMode

[1:0]

决定哪种功能用来读取UART接收缓存寄存器中的数据(UARTRxEnable/Disable)。00=无效

01=中断请求或查询模式

10=DMA0请求(OnlyforUART0),

DMA3请求(OnlyforUART2)11=DMA1请求(OnlyforUART1)

[6]

[4]

[3:2]

00

00

ARM samsung 2440中文手册

10.5.3UARTFIFO控制寄存器

UARTFIFOCONTROLREGISTER(UFCONn)

寄存器

UFCON0UFCON1UFCON2

地址

0x500000080x500040080x50008008

读写R/WR/WR/W位

[7:6]

描述

UART通道0FIFO控制寄存器UART通道1FIFO控制寄存器UART通道2FIFO控制寄存器

描述

决定发送FIFO的触发等级00=Empty01=16-byte10=32-byte11=48-byte决定接收FIFO的触发等级00=1-byte01=8-byte10=16-byte11=32-byte

复位值

0x000x000x00

UFCONn

TxFIFOTriggerLevel

初始值

00

RxFIFOTriggerLevel[5:4]00

Reserved

TxFIFOResetRxFIFOResetFIFOEnable

[3][2][1][0]

在重置FIFO后自动清除

0=Normal1=TxFIFOreset在重置FIFO后自动清除

0=Normal1=RxFIFOreset0=Disable1=Enable

0000

ARM samsung 2440中文手册

10.5.4UARTMODEM控制寄存器

UARTMODEMCONTROLREGISTER(UMCONn)

寄存器

UMCON0UMCON1保留

地址

0x5000000C0x5000400C0x5000800C

读写R/WR/W-位

[7:5][4][3:1][0]

描述

UART通道0MODEM控制寄存器UART通道1MODEM控制寄存器

-描述

这些位必须为00=无效1=有效这些位必须为0

如果AFC位有效,则该值被忽略。在这种情况下S3C2440A将自动控制nRTS。

如果AFC位无效,nRTS必须由软件控制。

复位值

0x00x0

-初始值00000000

UMCONn

Reserved

AutoFlowControl(AFC)Reserved

RequesttoSend

0='H'level(去激活nRTS)1='L'level(激活nRTS)

10.5.5UART接收发送状态寄存器

UARTTX/RXSTATUSREGISTER(UTRSTATn)

寄存器

UTRSTAT0UTRSTAT1UTRSTAT2

地址

0x500000100x500040100x50008010

读写R/WR/WR/W

描述

UART通道0接收发送状态寄存器UART通道1接收发送状态寄存器UART通道2接收发送状态寄存器

描述

复位值

0x000x000x00

UTRSTATnTransmitterempty

[2]

初始值

1

当发送缓存寄存器中没有有效值且发送移位寄存器空,则自动置1。0=非空

1=发送器空(发送缓存和移位寄存器)当发送缓存寄存器为空,则自动置于10=发送缓存寄存器不为空1=发送缓存寄存器

为空

(在非FIFO模式下,中断或DMA被请求。在FIFO模式下当发送FIFO触发等级设为00(空)时,中断或DMA被请求)

如果UART使用FIFO,用户应该检查寄存器UFSTAT中的TxFIFOCoun位和TxFIFOFull位取代对此位的检查。

Transmitempty

buffer[1]1

Receivebufferdataready

[0]

只要接收缓存寄存器保留通过RXDn端口接收的有效值,则自动置1。

0=缓存寄存器为空1=缓存寄存器接收到数据

(在非FIFO模式下,请求中断或DMA)

如果UART使用FIFO,用户应该在UFSTAT中的RxFIFOCount位和RxFIFOFull位取代对此位的检查。

ARM samsung 2440中文手册

10.5.6UART错误状态寄存器

UARTERRORSTATUSREGISTER(UERSTATn)

寄存器

UERSTAT0UERSTAT1UERSTAT2

地址

0x500000140x500040140x50008014

读写R/WR/WR/W描述

UART通道0错误状态寄存器UART通道1错误状态寄存器UART通道2错误状态寄存器

描述

复位值

0x000x000x00

UTRSTATnBreakDetect

[3]

初始值

自动置1来指出一个终止信号已发出0=Nobreakreceive

1=Breakreceive(已请求中断)

只要在接收操作中帧错误出现则自动置10=接收过程中无帧错误1=帧错误(已请求中断)

只要在接收操作中出现奇偶校验错误则自动置10=接受过程中无奇偶校验错误1=奇偶校验错误(已请求中断)

只要在接收过程中出现溢出错误则自动置10=接收过程中无溢出错误1=溢出错误(已请求中断)

FrameError[2]0

ParityError[1]0

OverrunError[0]0

10.5.7UARTFIFO状态寄存器

UARTFIFOSTATUSREGISTER(UFSTATn)

寄存器

UFSTAT0UFSTAT1UFSTAT2

地址

0x500000180x500040180x50008018

读写R/WR/WR/W描述

UART通道0FIFO状态寄存器UART通道1FIFO状态寄存器UART通道2FIFO状态寄存器

描述

复位值

0x000x000x00

UFSTATnReservedTxFIFOFull

[15][14]

初始值

00

只要在接收操作中接收FIFO满,则自动置1。0=0-byte≤ TxFIFOdata≤ 63-byte1=Full

TxFIFOCountReservedRxFIFOFull[13:8][7][6]

发送FIFO中的数据数量

只要在接收操作中接收FIFO满,则自动置1。0=0-byte≤ RxFIFOdata≤ 63-byte1=Full

接收FIFO中的数据数量

000

RxFIFOCount[5:0]0

ARM samsung 2440中文手册

10.5.8UARTMODEM状态寄存器

UARTMODEMSTATUS

REGISTER(UMSTATn)

寄存器

UFSTAT0UFSTAT1保留

地址

0x5000001C0x5000401C0x5000801C

读写R/WR/WR/W

描述

UART通道0MODEM状态寄存器UART通道1MODEM状态寄存器保留

描述

复位值

0x000x00-

UMSTATnDeltaCTS

[4]

初始值

IndicatethatthenCTSinputtotheS3C2440AhaschangedstatesincethelasttimeitwasreadbyCPU.(参考图11-8.)0=未变

1=已变

ReservedCleartoSend[3:1][0]

0=CTS信号未激活(nCTS引脚为高电平)1=CTS信号激活(nCTS引脚为低电平)

10.5.9UART发送缓存寄存器

UARTTRANSMITBUFFERREGISTER(HOLDINGREGISTER&FIFOREGISTER)

寄存器

UTXH0UTXH1UTXH2

地址

0x50000020(L)0x50000023(B)0x50004020(L)0x50004023(B)0x50008020(L)0x50008023(B)读写W(byte)

W(byte)

W(byte)

描述

UART通道0发送缓存寄存器UART通道1发送缓存寄存器UART通道2发送缓存寄存器

复位值

-

--

UTXHnTXDATAn

[7:0]

UARTn的发送数据

描述初始值

-

ARM samsung 2440中文手册

10.5.10UART接收缓存寄存器

UARTRECEIVEBUFFERREGISTER(HOLDINGREGISTER&FIFOREGISTER)

寄存器

URXH0URXH1URXH2

地址

0x50000024(L)0x50000027(B)0x50004024(L)0x50004027(B)0x50008024(L)0x50008027(B)读写R(byte)

R(byte)

R(byte)

描述

UART通道0接收缓存寄存器UART通道1接收缓存寄存器UART通道2接收缓存寄存器

复位值

-

--

URXHnRXDATAn

[7:0]

UARTn的接收数据

描述初始值

-

10.5.11UART波特率除数寄存器

UARTBAUDRATEDIVISORREGISTER(UBRDIVn)

在UART模块中有三个UART波特率除数寄存器UBRDIV0,UBRDIV1和UBRDIV2。存储在波特率除数寄存器UBRDIVn中的值用于决定串行发送接收时钟率(波特率)如下:

UBRDIVn=(int)(UARTclock/(buadratex16))–1(UARTclock:PCLK,FCLK/norUEXTCLK)

UBRDIVn应该从1到(216-1),仅当使用小于PCLK的UEXTCLK时可以设为0。例如如果波特率为115200bps且UART时钟为40MHz,UBRDIVn是:

UBRDIVn=(int)(40000000/(115200x16))-1=(int)(21.7)-1[roundtothenearestwholenumber]=22-1=21

寄存器

UBRDIV0UBRDIV1UBRDIV2

地址

0x500000280x500040280x50008028

读写R/WR/WR/W描述

波特率除数寄存器0波特率除数寄存器1波特率除数寄存器2

描述

复位值

-

--

UBRDIVnUBRDIV

[15:0]

初始值

-

波特率分频值UBRDIVn>0

使用UEXTCLK作为输入时钟,UBRDIVn可以置0

本文来源:https://www.bwwdw.com/article/px74.html

Top