UART概述(下)

2023-05-16

目录

  • Introduction
  • Functional Overview
    • Overview
    • Functional description
    • Operation

Introduction

UART作为一个连接到APB的AMBAslave模块,提供了:

  • 符合AMBA规范(Rev 2.0),便于集成到SoC实现。

  • 分离的32×8的transmit FIFO和32×12的receive FIFO,以减少CPU中断。

  • 可编程的波特率发生器。这样就可以将参考时钟按(1×16)划分到(65535×16),并生成一个内部的×16时钟。除数可以是一个小数,使得可以使用任何频率为>3.6864MHz的时钟作为参考时钟。

  • 标准异步通信位(start、stop和parity),在transmit之前添加,在receive时删除。

  • 支持直接内存访问(DMA)。

  • start bit检测错误。

  • 断行产生和检测。

  • 支持调制解调器控制功能CTS, DCD, DSR, RTS, DTR和RI。

  • 可编程硬件流控制。

  • 标识寄存器唯一标识UART。操作系统可以使用它们来自动配置自身。

其可编程参数如下:

  • 通信波特率,包括整数和小数部分。
  • 数据位的数量。
  • 停止位的数量。
  • 奇偶校验方式。
  • FIFO使能(32 字节深度)或禁用(1 字节深度)。
  • FIFO触发级别,可选择1/8,1/4,1/2,3/4,和7/8。
  • 内部名义时钟频率1.8432MHz (1.42-2.12MHz)。
  • 硬件流控制。

Functional Overview

Overview

  1. UART执行的动作为:

• 对从外围设备接收到的数据进行串行到并行转换。

• 对传输到外围设备的数据进行并行到串行转换。

CPU通过AMBA APB接口读写数据和控制/状态信息。发送和接收路径用内部FIFO存储器缓冲。

  1. UART提供了·:

• 包括一个可编程波特率发生器,从UART内部参考时钟输入UARTCLK生成一个通用的发送和接收内部时钟。

• 支持以下最大波特率:

  • 921600bps, UART模式。

  • 460800bps,在IrDA模式。

  • 115200bps,在低功耗IrDA模式。

Functional description

下图为UART的结构框图:
在这里插入图片描述

  1. AMBA APB interface
    AMBA APB接口为访问状态/控制寄存器生成读和写解码,以及发送和接收FIFO。
  2. Register block
    寄存器块存储通过AMBA APB接口写入或读取的数据。
  3. Baud rate generator
    波特率生成器包含自由运行的计数器,生成内部×16时钟、Baud16和IrLPBaud16信号。
    Baud16为UART发送和接收控制提供时序信息。Baud16是一个宽度为一个UARTCLK时钟周期、频率为波特率16倍的脉冲流。
    IrLPBaud16提供时序信息以在低功耗IrDA模式下产生IrDA编码传输比特流的脉宽。
  4. Transmit FIFO
    Transmit FIFO是一个8位宽,32位深的FIFO内存缓冲。通过APB接口写入的CPU数据存储在FIFO中,直到由transmit逻辑读出。可以禁用transmit FIFO,以充当一个字节的保持寄存器。
  5. Receive FIFO
    Receive FIFO是一个12位宽,32位深的FIFO内存缓冲。接收到的数据和相应的error bits,由Receive逻辑存储在Receive FIFO中,直到CPU通过APB接口读出。Receive FIFO可以被禁用,以充当一个字节的保持寄存器。
  6. Transmit logic
    Transmit逻辑对从 Transmit FIFO读取的数据执行并行到串行转换。根据控制寄存器中的程序配置,控制逻辑输出以起始位开始的串行比特流,以最低有效位(LSB)开头的数据位,然后是奇偶位,然后是停止位。
  7. Receive logic
    在检测到有效的启动脉冲后,Receive逻辑对接收的比特流执行串行到并行转换。溢出、奇偶校验、帧错误检查和断行检测也被执行,它们的状态伴随着写入到Receive FIFO的数据。
  8. Synchronizing registers and logic
    UART同时支持异步时钟PCLK和同步UARTCLK的操作。同步寄存器和握手逻辑已经实现,并且在任何时刻都是active的。这对性能的影响很小。控制信号的同步是在数据流的两个方向上进行的,即从PCLK到UARTCLK domain和从UARTCLK到PCLK domain。
  9. Test registers and logic
    有用于功能块验证的寄存器和逻辑,以及使用TicTalk或基于代码向量的集成测试。
    在正常使用期间,不能读取或写入测试寄存器。
    集成测试可以验证UART是否正确地连接到系统中,它允许对每个输入和输出进行写入和读取。

Operation

  • Interface reset
    UART由全局复位信号PRESETn复位。PRESETn必须在足够长的时间内保持LOW状态,以复位片上系统中最慢的块,然后再次被拉高。UART要求PRESETn在至少一个PCLK周期内被断言为LOW。
  • Clock signals
    UARTCLK选择的频率必须适应波特率的要求范围:
    • FUARTCLK (min) 大于等于 16 × baud_rate (max)
    • FUARTCLK(max) 小于等于 16 × 65535 × baud_rate(min)
    PCLK和UARTCLK的时钟频率比率也有限制。UARTCLK的频率必须小于等于PCLK频率的5/3倍。
  • UART operation
    控制数据被写入UART线路控制寄存器UARTLCR。这个寄存器内部是30-bit的,但是外部通过APB接口通过写入以下寄存器来访问UARTLCR:
    UARTLCR_H定义:
    传输参数
    word长度
    缓冲模式
    传输停止位的数量
    奇偶校验方式
    break的产生
    UARTIBRD:定义波特率整数分割器
    UARTFBRD:定义波特率分压器
  • 数据传输或接收
    数据接收或传输存储在两个32字节的FIFO,尽管receive FIFO有一个额外的每个字符四位的状态信息。
    传输时,数据写入transmit FIFO。如果启用了UART,它会导致数据帧以UARTLCR_H中指示的参数开始传输。数据继续被传输,直到在transmit FIFO中没有数据留下为止。当数据被写入到transmit FIFO(即FIFO非空)时,BUSY信号变为HIGH,并在数据被传输时保持为高。BUSY只有在transmit FIFO为空,并且最后一个字符已经从移位寄存器(包括停止位)传输时才被否定。即使UART可能不再启用,BUSY也可以被断言为HIGH。
    当receiver闲置以及在数据中检测到了低电平信号(起始位已收到),接收counter,由Baud16启用时钟,开始运行和数据采样。
    如果起始位有效,则根据程序设定的数据字符长度,每16个Baud16周期(即后一个比特周期)对连续的数据位进行采样。如果奇偶校验模式已启用,则检查奇偶校验位。
    最后,如果UARTRXD为HIGH,则确认一个有效的停止位,否则发生了帧错误。当接收到一个完整的word时,数据存储在接收FIFO中,其中包括相关的错误位。
  • Error bit
    三个error位存储在Receive FIFO的[10:8]位中,并与一个特定的字符相关联。有一个额外的错误表明一个溢出错误,存储在Receive FIFO的第11位。
  • Overrun bit(溢出位)
    溢出位与Receive FIFO中的字符没有关联。溢出错误设置时,FIFO是满的,下一个字符是完全接收到移位寄存器。移位寄存器中的数据被覆盖,但它不写入FIFO。当Receive FIFO中有空位置可用,并且接收到另一个字符时,溢出位的状态将与接收到的字符一起复制到Receive FIFO中。然后清除溢出状态。Receive FIFO的位功能如下表所示。
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UART概述(下) 的相关文章

  • Jetson nano串口的使用——UART

    UART串口使用两条杜邦线就可以实现数据发送和接收 xff0c 可以很方便的与其他扩展进行数据连接 xff0c 比如微雪的L76X GPS HAT就可以直接连接40Pin的GPIO接口通过UART串口进行数据传递 接下来具体说明Jetson
  • UART串口协议时序图

    为了在编写协议的时候更加方便 xff0c 笔者使用逻辑分析仪读取了UART串口协议的时序 xff0c 记录如下 UART协议 波特率 起始位 数据位 奇偶校验位 停止位 1 波特率9600 xff0c 数据位8 xff0c 无奇偶校验位 x
  • 总线协议一(UART/RS232/RS485/IIC/SPI)

    目录 基础概述 xff1a 一 UART xff08 为串口通信方式 xff09 二 RS232协议 三 RS485协议 四 I2C总线协议 五 SPI总线 六 I2C和SPI的区别 基础概述 xff1a 总线的本质就是一根导线 xff0c
  • UART、IIC、SPI、CAN通信的区别与应用

    文章目录 1 通信的基本知识1 1 数据通信的种类1 1 1 串行通信1 1 2 并行通信1 1 3 总结 1 2 数据通信的传输方向1 2 1 单工1 2 2 半双工1 2 3 全双工1 2 4 总结 1 3 数据通信的方式1 3 1 同
  • 【STM32】UART串口通信详解

    目录 一 数据通信方式 1 串行与并行通信2 全双工 半双工及单工通讯3 同步通讯与异步通讯 二 串口通讯协议 STM32串口简介1 物理层1 RS232标准2 USB转串口 重点 3原生的串口到串口2 协议层1 xff09 通讯的起始和停
  • WK2114(一个异步串口UART 扩展为4个串口UART)

    WK2114是UART接口的4通道UART器件 WK2114将一个标准3线异步串口 xff08 UART xff09 扩展成为4个增强 功能串口 xff08 UART xff09 主接口UART在数据传输时主接口的UART可以通过引脚配置为
  • UART+DMA数据传输

    DMA的概念 DMA xff08 Direct Memory Access xff09 即直接内存访问 xff0c DMA传输方式无需CPU直接控制传输 xff0c 通过硬件为RAM I O设备开辟一条直接传输数据的通路 xff0c 能使C
  • 【verilog】UART串口发送(FPGA)

    简述核心代码仿真测试 简述 串口发送是以一定速率发送单bit数据 xff0c 通常一组数据为10bit 空闲状态为高电平 xff0c 起始位为0 xff0c 中间以低位在前的方式发送8bit数据 xff0c 终止位为1 采用计数器 cnt
  • UART详解

    UART 通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff0c 通常称作UART 是一种异步全双工串行通信协议 xff0c 它将要传输的资料在串行通信与并行通信之
  • 收藏!了解UART总线工作原理看这一篇就够了!

    原文 xff1a 玩转单片机 2019 08 24 16 50 29 越学到后面 xff0c 基础知识更加不能忘记 xff0c 温故而知新 还记得当年的打印机 xff0c 鼠标和调制解调器吗 xff1f 他们都有巨大笨重的连接器和粗电缆 x
  • UART通信中流控RTS和CTS的理解

    一 流控 xff0c 顾名思义就是流量控制的意思 目的是协调收发双方 xff0c 使数据不会丢失 如果UART只有RX TX两个信号 xff0c 要流控的话只能是软流控 xff1b 如果有RX xff0c TX xff0c CTS xff0
  • STM32 硬件UART接收超时检测设置

    STM32 硬件UART接收超时检测设置 本文作者 智御电子 xff0c 期待与电子爱好者交流学习 应用场景 在uart应用中有时候需要进行双工通信 xff0c 主机需要对从机的数据进行接收超时检测 xff0c 例如modbus协议 xff
  • arduino学习——UART串口通信

    Serial begin 初始化串口 用作串口的启动 xff0c 常放置在setup xff08 xff09 中 原型 xff1a Serial begin speed Serial begin speed config 参数 xff1a
  • 串行通信基础知识与UART驱动构件使用方法

    串行通信基础 串行通信接口 异步串行通信 UART 常称为 串口 或SCI xff0c 在USB未普及之前 xff0c 是PC机必备通信接口之一 通信方式为单字节通信 xff0c 是最简单的串行通信方式 RS232 RS485 接线简单 x
  • 串口通信协议 UART+I2C+SPI

    UART 异步 串行 全双工 I2C SPI 不同通信协议比较 UART UART协议详解 UART通信 xff0c 接收与发送 xff08 详细版 xff0c 附代码 xff09 UART串行通信详解 待整理 UART是Universal
  • UART串口通信

    串口是 串行接口 的简称 xff0c 即采用串行通信方式的接口 串行通信将数据字节分成一位一位的形式在一条数据线上逐个传送 xff0c 其特点是通信线路简单 xff0c 但传输速度较慢 因此串口广泛应用于嵌入式 工业控制等领域中对数据传输速
  • 4.RTT-UART-中断接收及轮询发送

    本期博客开始分享RTT的UART xff0c 利用战舰V3的uart2来输入输出一些字符串 UART xff08 Universal Asynchronous Receiver Transmitter xff09 通用异步收发传输器 xff
  • mega328p-ADC,PWM,UART驱动

    ADC驱动 函 数 名 Ai Init 函数功能 Ai端口初始化 输入参数 void 输出参数 void 返 回 值 void 参考文档 void 创 件 人 程强刚 创建日期 2016 02 09 修改历史 void Ai Init vo
  • 【UART】Verilog实现UART接收和发送模块

    目录 写在前面 UART 工作原理 UART 接收部分 UART RX 模块图 UART RX 时序图 Verilog 实现 UART RX 模块 UART 发送部分 UART TX 模块图 UART TX 时序图 Verilog 实现 U
  • STM32F4-Discovery (STM32F429ZIT6) 上的 RS232 (UART) 与 HAL 库?

    背景 这是我的一些背景 以便你们知道我有或没有哪些相关知识 我完全是这种嵌入式系统的新手 而且我对电子产品一无所知 我是一个纯粹的软件人员 我唯一的嵌入式系统经验是Raspberry Pi 它与STM32F4 Discovery有很大不同

随机推荐