ARM9(S3C2440)之三串口UART

更新时间:2023-07-19 23:54:52 阅读: 评论:0

士气展示
三  ARM9(S3C2440)的串口UART——理论知识
骑行活动转载自骨Zi里德骄傲
概述
S3C2440A 的通用异步收发器(UART)配有3 个独立异步串行I/O(SIO)端口,每个都可以是基于中断或基于DMA 模式的操作。换句话说,UART 可以通过产生中断或DMA 请求来进行CPU 和UART 之间的数据传输。
UART 通过使用系统时钟可以支持最高115.2Kbps 的比特率。如果是外部器件提供UEXTCLK 的UART,则UART可以运行在更高的速度。每个UART 通道包含两个的64 字节的FIFO 给发送和接收。
S3C2440A 的UART 包括了可编程波特率,红外(IR)发送/接收,插入1 个或2 个停止位,5 位、6 位、7 位或8 位的数据宽度以及奇偶校验。
每个UART 包含一个波特率发生器、发送器、接收器和一个控制单元,如图11-1 所示。波特率发生器可以由PCLK、FCLK/n 或UEXTCLK(外部输入时钟)时钟驱动。发送器和接收器包含了64 字节FIFO 和数据移位器。
融化中
将数据写入到FIFO 接着在发送前复制到发送移位器中。随后将在发送数据引脚(TxDn)移出数据。与此同时从接收数据引脚(RxDn)移入收到的数据,接着从移位器复制到FIFO。
UART 操作
下述章节描述了UART 的操作,包括了数据发送,数据接收,中断发生,波特率发生,环回(Loopback)模式,红外模式和自动流控制。抗疫背景
数据发送
可编程发送数据帧。由1 个起始位、5 至8 位数据位、1 个可选奇偶校验位以及1 至2 个停止位组成,是由行控制寄存器(ULCONn)指定。发送器也可以产生单帧发送期间强制串行输出为逻辑0 状态的断点状态。此模块在完成发送当前发送字后发送断点信号。在发出断点信号后,其不断发送数据到Tx FIFO(非FIFO 模式情况下Tx保持寄存器)中。
数据接收
与发送类似,接收数据帧也是可编程的。由1 个起始位、5 至8 位数据位、1 个可选奇偶校验位以及1 至2 个停止位组成,是由行控制寄存器(ULCONn)指定。接收器能够检测出溢出(overrun)错误、奇偶校验错误、帧错误和断点状态,每个都可以设置一个错误标志。

– 溢出错误表明新数据在读出旧数据前覆盖了旧数据。
– 奇偶校验错误表明接收器检测出一个非预期奇偶校验字段。
– 帧错误表明接收到的数据没有有效的结束位。
– 断点状态表明RxDn 的输入保持为逻辑0 状态的时间长于单帧传输时间。
当其在3 字时间期间(此间隔在字宽位的设置随后)并且在FIFO 模式中Rx FIFO 为非空时不接收任何数据时
发生接收超时状态。
波特率发生
每个UART 的波特率发生器为发送器和接受器提供串行时钟。波特率发生器的源时钟可以选择S3C2440A 的
内部系统时钟或UEXTCLK。换句话说,分频由设置UCONn 的时钟选项选择。波特率时钟是通过16 和由UART
波特率分频寄存器(UBRDIVn)指定的16 位分频系数来分频源时钟(PCLK,FCLK/n 或UEXTCLK)产生的。
UBRDIVn 由下列表达式决定:
UBRDIVn = (int)( UART 时钟 / ( 波特率 × 16) ) - 1
(UART 时钟:PCLK,FCLK/n 或UEXTCLK)
当然,UBRDIVn 应该是从1 至(216-1),只有在使用小于PCLK 的UEXTCLK 时设置为0(旁路模式)。
例如,如果波特率为115200 bps 并且UART 时钟为40 MHz,则UBRDIVn 为:
UBRDIVn = (int)(40000000 / (115200 x 16) ) - 1
= (int)(21.7) - 1 [取最接近的整数]
= 22 - 1 = 21
UART行控制寄存器:
该寄存器的位6决定是否使用红外模式,位5、位4和位3决定校验方式,位2决定停止位长度,位1和位0决定每帧的数据位数。具体如下:
ULCONn[7]    保留;
ULCONn[6]    红外线模式,0:正常模式;1:红外线模式;
ULCONn[5:3]  校验模式,0xx:无校验;100:奇校验;101:偶校验;
联合小学ULCONn[2]    停止位,0:一个停止位;1:二个停止位;
ULCONn[1:0]  数据位,00:5位;01:6位;10:7位;11:8位。
UART控制寄存器UCONn
该寄存器决定UART的各种模式。
UCONn[10]    1:ULK做波特率发生器;0:PLK做波特率发生器。
UCONn[9]    1:Tx中断电平触发;0:Tx中断脉冲触发。
CONn[8]    1:Rx中断电平触发;0:Rx中断脉冲触发。
UCONn[7]    1:接收超时中断允许;0:接收超时中断禁止。
UCONn[6}    1:产生接收错误中断;0:不产生接收错误中断。
UCONn[5]    l:发送直接传给接收方式(loopback);0:正常模式。
UCONn[4]    1:发送间断信号;0:正常模式发送。
UCONn[3:2]    发送模式选择:
            00:禁止发送;
             01:中断或查询模式;
             10:DMA0请求(UART0 ) , DMA3请求(UART2);
             11:DMAl请求(UART1)。
UCONn[1:0]  接收模式选择。
             00:禁止接收;
             01:中断或查询模式;
             10 : DMA0请求UART0,DMA2请求UART2;
             11:DMAl请求UART1。
UART FIFO控制寄存器UFCONn
UFCONn[7:6]
    00:Tx FIFO寄存器中有0字节就触发中断;
    01:Tx FIFO寄存器中有4字节就触发中断;
    10:Tx FIFO寄存器中有8字节就触发中断;
    11:Tx FIFO寄存器中有12字节就触发中断。
鹅毛扇UFCONn[5:4]
    00:Rx FIFO寄存器中有4字节就触发中断;和女友聊天话题
    01:Rx FIFO寄存器中有8字节就触发中断;
    10:Rx FIFO寄存器中有12字节就触发中断;
    11:Rx FIFO寄存器中有16字节就触发中断。
UFCONn[3]  保留。
UFCONn[2]  1: FIFO复位清零Tx FIFO;0 : FIFO复位不清零TxFIFO。
UFCONn[1]  1:  FIFO复位清零Rx FIFO;0:F1FO复位不清零RxFIFO。
UFCONn[0]  1:允许FIFO功能;0:禁止FIFO功能。
UART MODEM控制寄存器UMCONn
处女座的女生UMCONn[7:5]  保留,必须全为0。
UMCONn[4]    1:允许使用AFC模式;0:禁止使用AFC模式。
UMCONn[3]    保留,必须全为0。
UMCONn[0]    1:激活rRTS;0:不激活rRTS。
发送寄存器UTXH和接收寄存器URXH
这两个寄存器存放发送和接收的数据,当然只有1字节(8位数据)。需要注意的是,在发生溢出错误时,接收的数据必须被读出来,否则会引发下次溢出错误。
发送和接收状态寄存器UTRSTATn
UTRSTATn发送和接收状态寄存器包括 UTRSTAT0, UTRSTAT1 and UTRSTAT2
UTRSTATn 寄存器各位定义:
UTRSTATn [2]
1=发送器空
UTRSTATn [1] 发送缓冲器空标志
0 =不空;
1 = 空。
UTRSTATn [0] 接收缓冲器有接收数据标志
0 =空;
1 = 接收缓冲器有数据。
原文地址:三  ARM9(S3C2440)的串口UART——程序实例讲解作者:骨Zi里德骄傲
串口通信程序编写步骤
UART通信程序可以采用查询、中断和DMA模式。我们通过使用较多的中断方式来介UART通信程序的编写。简单做法是,UART通信程序的编写参照例子程序。
选通道,通过函数Uart_Select();选UART0~UART2;
  选波特率和波特率发生器时钟,选波特率通过函数Uart_Pclk_En(int ch, int baud)或Uart_Pclk_En(int ch, int baud)来进行。时钟选UCLK ,rUCON0|=0x400;时钟选PCLK ,rUCON0&=0x3ff。
 通信协议(rULCON0)设定,如果正常通信,一位停止位,8位数据位,无奇偶效验: rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);     

本文发布于:2023-07-19 23:54:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1088373.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   接收   发送   中断
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图