前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >S3C2440—UART原理简介

S3C2440—UART原理简介

作者头像
全栈程序员站长
发布2022-09-01 10:54:24
6590
发布2022-09-01 10:54:24
举报

大家好,又见面了,我是你们的朋友全栈君。

通用异步收发器简称UART,即“Universal Asynchronous Receiver Transmitter”

s3c2440提供了三个UART端口,它们都可以通过查询、中断和DMA方式传输数据,而且每个UART都分别有一个64个字节的接收FIFO和一个64个字节的发送FIFO。UART由波特率发生器、发送器、接收器和控制逻辑组成,使用系统时钟可以达到115.2Kbit/s,如果使用UEXTCLK引脚提供的外部时钟,则可以达到更高的波特率,波特率可以通过编程进行控制。UART的结构示意图如下所示:

UART的工作原理是:当发送数据时,CPU先将数据写入发送FIFO中,然后UART会自动将FIFO中的数据复制到“发送移位器”中,发送移位器将数据一位一位(先发最低位)地发送到TXDn数据线上(根据设定的格式、插入开始位。校验位和停止位)。接收数据时,“接收移位器”将RXDn数据线上的数据一位一位(同样是先发最低位)接收进来,然后复制到接收FIFO中,CPU即可从中读取数据。

S3C2440 UART有3个独立通道,每个通道支持的停止位有1位、2位,数据位有5、6、7、8位,支持校验功能,另外还有红外发送/接收功能。

在使用UART之前,需要设置波特率、传输格式(有多少个数据位、是否使用校验位、是奇校验还是偶校验、有多少个停止位、是否使用流量控制),选择UART通道的工作模式为中断模式或DMA模式。

下面我们来介绍一下UART比较重要的寄存器。

1、UBRDIVn 寄存器(UART BAUD RATE DIVISOR):设置比特率

根据给定的波特率、所选择的时钟源的频率,可以通过以下公式计算UBRDIVn寄存器的值(n为0~2,对应3个UART通道)

2.ULCONn寄存器(UART LINE CONTROL):设置传输格式

ULCONn寄存器(n为0~2),假如我们要设置UART0的传输格式为:8位数据位,每帧1个停止位,无奇偶校验位,普通模式。就要设置ULCON0的[7:0]为00000011 如下图红色标记所示

3、UCONx寄存器 (UART CONTROL)

UCONn寄存器用于选择UART时钟源,设置UART中断方式等。S3C244 UART有三个时钟源PCLK、UEXTCLK、FCLK/n,这里我们只列出[11:0] 位,因为[15:12]是保留,使用默认值0000 ,这里我们不理它。

4、UFCONn寄存器(UART FIFO CONTROL)、UFSTATn寄存器(UART FIFO STATUS)

UFCONn寄存器用于设置是否使用FIFO,设置各个FIFO的触发阈值,即发送FIFO中有多少个数据时产生中断,接收FIFO中有多少个数据时产生中断。

读取UFSTATn寄存器可以知道各个FIFO是否已经满、其中有多少个数据。当不使用FIFO时候,可认为FIFO的深度为1,使用FIFO时候S3C2440的FIFO的深度是64比S3C2440多了4倍。

5、UMCONn寄存器(UART MODEM CONTROL)UMSTATn寄存器(UART MODEM STATUS)

这两类寄存器用于流量控制,我们一般不会用到。

6、UTRSTATn寄存器(UART TX/RX STATUS)

UTRSTATn寄存器用来表明数据是否已经发送完毕、是否已经接收到数据。

接受缓冲区数据就绪[0]位:表示当接收到数据时,此位被自动设为1

发送缓冲区空[1]位:表示当发送缓冲区中没有数据时,此位被自动设为1

发送器空[2]位: 表示当发送缓冲区中没有数据,并且最后一个数据也已经发送出去时,此位被自动设为1

7、UERSTATn寄存器(UART ERROR STATUS)

这个寄存器用来表示各种错误是否发送。

8、UTXHn寄存器(UART TRANSMIT BUFFER REGISTER)

CPU将数据写入这个寄存器,UART即会将它保存到缓冲区中,并自动发送出去。

9、URXHn寄存器(UART RECEIVE BUFFER REGISTER)

当UART接收到数据时,CPU读取这个寄存器,即可获得数据。

—————————————————————————————————————————————————————

UART的讲解就到这里结束啦。

S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
S3C2440—UART原理简介 - 23号的wj - 伟坚的博客

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140640.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档