概述:
S3c2440通用异步收发器(UART)提供三个独立的异步串行端口,每个端口都可以在中断和DMA两种模式下操作,就是说UART可以生成一个中断或DMA请求用于CPU和UART之间的数据传输。
UART使用的系统时钟支持最高115.2Kbps的波特率,当然也可以由外设提供时钟UEXTCLK给UART。每个UART通道都有2个64位的FIFO,分别用于接收和发射数据。
S3c2440UART包括了可编程波特率,红外传输接收,一个或两个停止位,5~8位数据长度和奇偶校验。
每个UART包括一个波特率发生器,发送器,计数器和一个控制单元。其波特率发生器可由PCLK,FCLK/n或UEXTCLK(外部时钟)来锁定。发送器和接收器包含了64位FIFO和数据移位器。数据写到FIFO然后再被传送前拷贝到发送移位器。数据通过发送数据发送引脚(TxDn)被发出,同时,接收火速局通过接收数据引脚(RxDn)移入,然后从移位器拷贝到FIFO。
特点:
基于DMA和中断操作的RxD0,TxD0,RxD1,TxD1,RxD2,TxD2.
有红外和64位FIFO的UART通道0和1
有nRTS0,nCTS0,nRTS1,nCTS1的UART通道0和1
支持我收到额发送和接收
模块图:
UART操作:
一下章节描述UART操作,包括数据传输,数据接收,中断生成,波特率生成,回送模式,红外模式自动流控制。
1 数据发送
发送的数据帧是可编程的。包括开始位,5~8个数据位,一个可选的奇偶位和1~2个停止位,其可由线形控制寄存器ULCONn来设置。发送器可以产生一个终止条件,其可以对一个帧发送时间强制输出为逻辑0,在当前发送字被完全传输完以后,该模块发送一个终止信号。在终止信号发送后,其串行发送数据到TxFIFO。
数据接收:
如数据发送,接收的数据帧也是可编程的,帧格式和控制寄存器相同。接收器可以侦测溢出错误,奇偶校验错误,侦错误和终止条件,每个错误都可以设置一个错误标志。
1 溢出错误是指在旧数据被读取前被新到达的数据覆盖
2 奇偶校验错误是指接收侦测到一个不希望的奇偶条件
3 侦错误是指接收到的额数据没有一个有效的停止位
4 终止条件是指RxDn输入保持逻辑0状态长于一个镇的传输时间
自动流控制(AFC):
S3c2440A的UART0和UART1支持有nRTS和nCTs的自动流。可以将其连接到外部UART,并使UMCONn寄存器中的自动流控制位无效且通过软件控制nRTS。
在AFC中nRTS依赖于接收器的条件,nCTS信号控制发送器的操作。在UART接收数据之前,当其接收FIFO有大于32个字节空闲空间,nRTS必须被激活;反之,nRTS必须非激活。
UART2不支持AFC功能。
非自动流控制举例
使用FIFO的几首操作
1 选择接收模式(中断或DMA模式)
2 检查UFSTATn寄存器的RX FIFO计数器,如果等于大于32,用户应该将UMCONn[0]的值置为1(激活nRTS),如果小于32,置为0。
3 重复步骤2
有FIFO的发送操作
1 选择发送模式
2 检查UMSTATn[0],如果为1,用户写数据到发送FIFO寄存器。
注意:AFC不支持RS-232接口。
中断/DMA请求生成
S3c2440A的每个UART有七个状态信号:溢出错误,奇偶校验错误,帧错误,终止,接收缓存数据准备好,发送缓存空和发送移位器空,其由相应UART的状态寄存器(UTRSTATn/UERSTATn)指出。
溢出错误,奇偶校验错误,帧错误,终止条件是作为接收错误状态来参考,每种错误都可以引起接收错误状态中断请求,如果在空盒子寄存器UCONn中的接收错误状态中断使能位置1。
当接收错误状态中断请求被检测到,该信号引起的请求可以通过读UERSTATn寄存器的值来鉴别。
当接收器传输接收移位器上的数据在FIFO模式下的接收FIFO寄存器上且接收到的数据数量达到接收FIFO触发水平,接收中断产生,如果在控制寄存器UCONn中接收模式被置1。在非FIFO模式下,传输接收移位器的数据到接收保持寄存器将引起在中断请求或查询模式下的接收中断。
当发送器传输接收移位器上的数据到发送FIFO寄存器上的且在发送FIFO中剩余的数据数量到达发送FIFO触发水平,发送中断产生,如果在控制寄存器UCONn中的接收模式下被选定为中断或查询模式。在非FIFO模式下,传输发送保持寄存器的数据到发送移位器将引起在中断求其或查询模式下的发送中断。
如果在控制寄存器中发送模式和接收模式被选定为DMAn请求模式,这样DMAn请求将取代上述情形下的接收或发送中断出现。
错误状态FIFO:
UART有一个错误状态FIFO,用来指出FIFO寄存器中有错的数据,当有错误数据准备读出,错误中断就产生。为了清楚错误状态FIFO,有错误的URXHn和UERSTATn必须被读出。
波特率产生:
每个UART波特率发生器为发送器和接收器提供串行时钟,其时钟源可以选择s3c2440的内部系统时钟或UEXTCLK,可以通过UCONn中的时钟选择来确定。波特率时钟通过16和UART波特率除数寄存器(UBRDIVn)中定义的16为除数来分频源时钟产生。UBRDIVn由以下表达式来决定:
UBRDIVn=(int)(UART clock/(buad rate *16))-1
UBRDIVn应该是从1~64M-1,当使用小于PCKL的外部时钟UEXTCLk时应该设置0。
例如:
UBRDIVn=(int)(40000000/(115200*16))-1
=(int)(21.7)-1
=22-1=21
回送模式:
S3c2440A UART提供了回送模式的测试模式,以帮助鼓励通讯连接中的错误。这个模式中结构上使能在UART中的RXD和TXD连接。在此模式下发送的数据通过RXD接收到接收器,该模式通过设置UCONn的回送位来选定。
特点是:允许处理器验证内部传输和每个SIO通道的接收数据通道。
红外模式:
S3c2440A UART模块支持红外发送和接收,其通过设置UARt线性控制寄存器ULCONn的红外模式位来选定。
在红外发送模式,发送脉冲是3/16的正常串行发生率,在红外接收模式下,接收器必须坚持3/16的脉冲期间来识别一个0值。