UART探索之旅

概述:

       S3c2440通用异步收发器(UART)提供三个独立的异步串行端口,每个端口都可以在中断和DMA两种模式下操作,就是说UART可以生成一个中断或DMA请求用于CPUUART之间的数据传输。

UART使用的系统时钟支持最高115.2Kbps的波特率,当然也可以由外设提供时钟UEXTCLKUART。每个UART通道都有264位的FIFO,分别用于接收和发射数据。

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

每个UART包括一个波特率发生器,发送器,计数器和一个控制单元。其波特率发生器可由PCLKFCLK/nUEXTCLK(外部时钟)来锁定。发送器和接收器包含了64FIFO和数据移位器。数据写到FIFO然后再被传送前拷贝到发送移位器。数据通过发送数据发送引脚(TxDn)被发出,同时,接收火速局通过接收数据引脚(RxDn)移入,然后从移位器拷贝到FIFO

 

特点:

       基于DMA和中断操作的RxD0TxD0RxD1TxD1RxD2TxD2.

       有红外和64FIFOUART通道01

       nRTS0nCTS0nRTS1nCTS1UART通道01

       支持我收到额发送和接收

 

模块图:

UART操作:

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

1 数据发送

      

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

 

数据接收:

       如数据发送,接收的数据帧也是可编程的,帧格式和控制寄存器相同。接收器可以侦测溢出错误,奇偶校验错误,侦错误和终止条件,每个错误都可以设置一个错误标志。

       1 溢出错误是指在旧数据被读取前被新到达的数据覆盖

       2 奇偶校验错误是指接收侦测到一个不希望的奇偶条件

       3 侦错误是指接收到的额数据没有一个有效的停止位

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

 

自动流控制(AFC):

       S3c2440AUART0UART1支持有nRTSnCTs的自动流。可以将其连接到外部UART,并使UMCONn寄存器中的自动流控制位无效且通过软件控制nRTS

       AFCnRTS依赖于接收器的条件,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,有错误的URXHnUERSTATn必须被读出。

 

波特率产生:

       每个UART波特率发生器为发送器和接收器提供串行时钟,其时钟源可以选择s3c2440的内部系统时钟或UEXTCLK,可以通过UCONn中的时钟选择来确定。波特率时钟通过16UART波特率除数寄存器(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中的RXDTXD连接。在此模式下发送的数据通过RXD接收到接收器,该模式通过设置UCONn的回送位来选定。

       特点是:允许处理器验证内部传输和每个SIO通道的接收数据通道。

 

红外模式:

       S3c2440A UART模块支持红外发送和接收,其通过设置UARt线性控制寄存器ULCONn的红外模式位来选定。

       在红外发送模式,发送脉冲是3/16的正常串行发生率,在红外接收模式下,接收器必须坚持3/16的脉冲期间来识别一个0值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值