S3C2440—UART原理简介

S3C2440—UART原理简介通用异步收发器简称UART,即“UniversalAsynchronousReceiverTransmitter”     s3c2440提供了三个UART端口,它们都可以通过查询、中断和DMA方式传输数据,而且每个UART都分别有一个64个字节的接收FIFO和一个64个字节的发送FIFO。UART由波特率发生器、发送器、接收器和控制逻辑组成,使用系统时钟可以达到115.2Kbit

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

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

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

S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
      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通道)
S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
 

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

ULCONn寄存器(n为0~2),假如我们要设置UART0的传输格式为:8位数据位,每帧1个停止位,无奇偶校验位,普通模式。就要设置ULCON0的[7:0]为00000011  如下图红色标记所示
S3C2440—UART原理简介 - 23号的wj - 伟坚的博客

 3、UCONx寄存器  (UART CONTROL)

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

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

S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
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倍。

S3C2440—UART原理简介 - 23号的wj - 伟坚的博客 
5、UMCONn寄存器(UART MODEM CONTROL)UMSTATn寄存器(UART MODEM STATUS)
     这两类寄存器用于流量控制,我们一般不会用到。
6、UTRSTATn寄存器(UART TX/RX STATUS)
UTRSTATn寄存器用来表明数据是否已经发送完毕、是否已经接收到数据。
接受缓冲区数据就绪[0]位:表示当接收到数据时,此位被自动设为1
发送缓冲区空[1]位:表示当发送缓冲区中没有数据时,此位被自动设为1
发送器空[2]位: 表示当发送缓冲区中没有数据,并且最后一个数据也已经发送出去时,此位被自动设为1
S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
7、UERSTATn寄存器(UART ERROR STATUS)
     这个寄存器用来表示各种错误是否发送。

S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
8、UTXHn寄存器(UART TRANSMIT BUFFER REGISTER)
  CPU将数据写入这个寄存器,UART即会将它保存到缓冲区中,并自动发送出去。
S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
9、URXHn寄存器(UART RECEIVE BUFFER REGISTER)
  当UART接收到数据时,CPU读取这个寄存器,即可获得数据。
S3C2440—UART原理简介 - 23号的wj - 伟坚的博客
—————————————————————————————————————————————————————

     UART的讲解就到这里结束啦。
S3C2440—UART原理简介 - 23号的wj - 伟坚的博客

 

 

 

 

 

 

 

 

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?

    【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?首先开门见山:u8是unsignedchar,u16是unsignedshort,u32是unsignedlong;s8是signedchar,s16是signedshort,s32是signedlong。然后娓娓道来:显而易见,u就是unsigned的缩写,s就是signed的缩写,8就表示8个二进制位(一个字节),16就表示16个二进制位(两个字节),32就表示32个二进制位(四个字节)。这样写的目的,是为了提高跨平台的移植性与兼容性。不同平台数据类型定义都不尽相同,一套代码要想.

    2022年10月16日
    3
  • JetBrains又出神器啦,Fleet,体验飞一般的感觉「建议收藏」

    JetBrains又出神器啦,Fleet,体验飞一般的感觉「建议收藏」文章目录简介从eclipse到FleetFleet的特性JetBrainsSpace总结简介java开发的同学可能对于JetBrains这家公司并不陌生,因为JetBrains号称拥有世界上最好的JAVA开发工具IDEA。确实IDEA非常好用,它满足了一个java开发者所有的梦想。当然JetBrains还提供了其他语言的开发神器,PyCharm,PhpStrom,WebStorm等等。只要跟开发工作有关的,都能在JetBrains的全家桶中找到。这么好用的神器自然是价格不菲,但是JetBrains

    2022年5月1日
    389
  • 浏览器javascript 下载m3u8视频合成mp4

    浏览器javascript 下载m3u8视频合成mp4m3u8download.jsdownloadm3u8URLtomp4下载m3u8视频合成一个完整的mp4源码:https://github.com/ccjy88/m3u8download.js功能m3u8downloader是在chrome浏览器中运行的html和js,用于下载m3u8视频。当视频链接比如是https://test-streams.mux.dev/x36xh…

    2022年5月3日
    197
  • 树莓派3B+ 安装系统

    树莓派3B+ 安装系统树莓派3B+安装系统对于树莓派3B+系统安装方法有很多,我就介绍比较普通的一种。适合小白操作!安装概要步骤:官网下载系统-》刷入TF卡-》设置开启显示器和SSH-》通电-》进入系统详细步骤进入官方网站下载系统镜像。https://www.raspberrypi.org/downloads/来到下面这个页面如果感觉下载速度慢,可以将下载链接放到迅雷里面下,基本可以做到满速下载!下载

    2022年6月25日
    38
  • listagg小记录[通俗易懂]

    listagg小记录[通俗易懂]listagg的作用是将分组范围内的所有行特定列的记录加以合并成行。函数签名中的measure_expr为分组中每个列的表达式,而delimiter为合并分割符。如果delimiter不设置的话,就表示无分割符。  中间withingroup后面的order_by_clause表示的是进行合并中要遵守的排序顺序。而后面的over子句表明listagg是具有分析函数analyze

    2025年9月6日
    5
  • linux awk 数组,shell数组和awk数组

    linux awk 数组,shell数组和awk数组awk终于能入门了,所以整理了该文章,内容大多来自网上。一、bash支持一维数组(不支持多维数组),没有限定数组的大小。在shell中,用括号来表示数组,数组元素用空格符号分割开。类似于C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于01.定义数组数组名array,元素abc[root@localhost~]#array=(ab…

    2022年7月19日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号