- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式技术应用教程基于S3C2410第八章.
第八章 UART串口
8.1 概述
S3C2410A的UART(通用异步收发器)提供了三个独立的异步串行口(SIO),每个串口都可以用中断方式或DMA方式与CPU传输数据。如果采用S3C2410A内部的系统时钟,UART的波特率可达230.4kbps。如果用外部时钟UEXTCLK来驱动UART,那么UART还可以运行在更高的速率上。每个UART通道都包括了收发两个16byte的FIFO(first in first out)。
S3C2410A中每个UART都包括了一个波特率发生器、一个发送器、一个接收器和一个控制单元。波特率发生器可由时钟PCLK或UEXTCLK来驱动。收发器包括了16byte的FIFO和数据移位器。写入到FIFO内的数据在发送前会被拷贝到发送移位器中去,然后数据由Pin TxD上移出发送移位器中的数据。从外部接收到的数据从Pin RxD上移入芯片并拷贝到接收FIFO中去。
S3C2410A中UART的帧格式为1bit起始位、5~8bit数据位、可选校验位和1~2bit停止位。UART0~UART2都支持红外收发,UART0和UART1带有流控信号nRTS0、nCTS0、nRTS1和nCTS1。另外,S3C2410A中的UART支持收发握手协议。
图8.1为带FIFO功能的UART框图。
图8.1
8.2 UART的操作
UART的操作包括数据发送、数据接收、中断产生、波特率发生、自环模式、红外模式和自动流控。
数据发送
发送的数据帧是可编程的,它由1bit起始位、5~8bit数据位、可选校验位和1~2bit停止位组成。这些选择项都由寄存器ULCONn来控制。发送器可产生break条件(停发),这个break信号迫使发送器向外发送逻辑0信号。Break信号必须在当前数据发送完毕后才能生效。
数据接收
与发送类似,接收的数据帧也是可编程的,具体设置与发送的数据帧相同。接收器可以检测溢出错误和帧错误。
overrun error(溢出错误)为:在上一帧数据还没有完全从FIFO或保持寄存器中取走,新的数据就覆盖了老的数据。
frame error(帧错误为):接收到的数据帧没有可用的停止位。
当在3个字(字长为用户定义)的时间内接收器没有接收到数据,那么就启动接收超时操作,此时在FIFO模式下,Rx FIFO不为空。
AFC-Auto Flow Control(自动流控制)
S3C2410A中的UART0和UART1支持自动流控。自动流控必须采用nRTS和nCTS两个信号。采用流控后,可以将这两个UART与外部UART相连接。如果用户要将UART与一个Modem(调制解调器)相连接,那么在UMCONn寄存器中禁止自动流控并且用软件方式控制nRTS信号。
在AFC模式下,nRTS信号在接收器上起作用,nCTS在发送器上起作用。当nCTS信号被激活时,UART发送器发送FIFO中的数据(nCTS激活意味着其他UART设备已经准备好接收数据了)。在UART接收数据之前,当接收FIFO内有至少2byte空间时,nRTS信号被激活;当接收FIFO内的空间少于1byte时,nRTS信号无效(nRTS激活意味着自己的UART接收FIFO准备好接收数据了)。图8.2为采用流控的连接示意图。
注意:UART2不支持AFC功能。
图8.2
如果没有自动流控,可以靠软件控制nRTS和nCTS来完成数据传输操作。
4. 采用FIFO作为数据缓冲的Rx操作:
(1)选择接收模式(中断或DMA)。
(2) 在UFSTATn寄存器中,检查Rx FIFO计数器的值。如果该值小于15,用户必须将UMCONn[0]设置为“1”(激活nRTS);如果这个值大于或等于15,用户就要将UMCONn[0]设置为“0”(禁止nRTS)。
(3)重复步骤(2)。
5. 采用FIFO作为数据缓冲的Tx操作:
(1)选择发送模式(中断或DMA)。
(2)检查UMSTATn[0]的值,如果这个值为“1”(nCTS已经被激活),那么用户就要写数据到Tx FIFO寄存器,准备发送数据。
6. RS-232C接口
如果要将UART连接到modem接口上(不是null modem),nRTS、nCTS、nDSR、nDTR、nDCD和nRI这些信号都是必须的。在这种情况下,用户可以用软件的方式配合I/O口来控制这些信号(用I/O口来模拟上述这些信号)。S3C2410A不支持RS-232C接口。
7. 中断/DMA
每个UART都有5个状态信号:溢出错误、帧错误、接收数据缓冲区准备好、发送缓冲区空和发送移位器空。这些状态都在状态寄存器UTRSTATn和UERSTATn中有定义。
溢出错误和帧错误都是针对接收器而言的。如果UCONn中的接收中断是是呢个的,那么每种错误状
文档评论(0)