IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> UART总线 -> 正文阅读

[嵌入式]UART总线

一、概述

UART(Universal Asynchronous Receiver/Transmitter),即通用异步接收器/发送器,是最常用的设备间通信协议之一。它是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。

二、通信协议

UART是一种硬件通信协议,以可配置的速度使用异步串行通信,其工作原理是将传输数据的每个字符一位接一位地传输。异步意味着没有时钟信号来同步从发送设备进入接收端的输出位。

在UART中,传输模式为数据包形式。每个数据包由起始位、数据帧、奇偶校验位和停止位组成。

UART数据包格式

其中各个字段的意义如下:

字段名称

含义

起始位

数据线空闲时为高电平,若要发起数据传输,发送器先发出一个低电平的信号并保持一个时钟周期,表示传输字符的开始。

数据帧

数据帧包含所传输的实际数据。如果使用奇偶校验位,数据帧长度可以是5位到8位。如果不使用奇偶校验位,数据帧长度可以是9位。在大多数情况下,数据以最低有效位优先方式发送。

奇偶校验位

资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

停止位

它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

波特率(*)

它是衡量资料传送速率的指标,表示每秒钟传送的符号数(不是比特数),常用的波特率有9600,115200等等。

注(*):这不是数据包里面的字段,但是它跟数据传输关系密切,故在此一并介绍。

三、基本结构

一个UART收发器由以下基本模块组成:

模块名称

功能

输出缓冲寄存器

接收来自CPU数据总线上的并行数据,并保存下来。

输出移位寄存器

接收输出缓冲寄存器送来的并行数据,并按发送时钟的速率逐位移出

输入移位寄存器

按接收时钟的速率把串行总线上的数据逐位移入

输入缓冲寄存器

从输入移位寄存器中接收并行数据,然后由CPU取走

控制寄存器

控制收发器的通信方式和数据格式等,如同步还是异步,数据位数,奇偶校验,停止位数等等。

状态寄存器

状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。

四、工作原理

1. 发送接收

发送逻辑对从发送FIFO 读取的数据执行“并→串”转换。控制逻辑输出起始位在先的串行位流,并且根据控制寄存器中已编程的配置,后面紧跟着数据位(注意:最低位 LSB 先输出)、奇偶校验位和停止位。

在检测到一个有效的起始脉冲后,接收逻辑对接收到的位流执行“串→并”转换。此外还会对溢出错误、奇偶校验错误、帧错误和线中止(line-break)错误进行检测,并将检测到的状态附加到被写入接收FIFO 的数据中。

2. 波特率产生

波特率除数(baud-rate divisor)是一个22 位数,它由16 位整数和6 位小数组成。波特率发生器使用这两个值组成的数字来决定位周期,从而产生相应的波特率。

3. 数据收发

发送时,数据被写入发送FIFO。如果UART 被使能,则会按照预先设置好的参数(波特率、数据位、停止位、校验位等)开始发送数据,一直到发送FIFO 中没有数据。

在UART 接收器空闲时,如果数据输入变成“低电平”,即接收到了起始位,则接收计数器开始运行,并且数据在Baud16 的第8 个周期被采样。如果Rx 在Baud16 的第8 周期仍然为低电平,则起始位有效,否则会被认为是错误的起始位并将其忽略。

如果起始位有效,则根据数据字符被编程的长度,在 Baud16 的每第 16 个周期(即一个位周期之后)对连续的数据位进行采样。如果奇偶校验模式使能,则还会检测奇偶校验位。

最后,如果Rx 为高电平,则有效的停止位被确认,否则发生帧错误。当接收到一个完整的字符时,将数据存放在接收FIFO 中。

4. 中断控制

出现以下情况时,可使UART 产生中断:

  • FIFO 溢出错误

  • 线中止错误(line-break,即Rx 信号一直为0 的状态,包括校验位和停止位在内)

  • 奇偶校验错误

  • 帧错误(停止位不为1)

  • 接收超时(接收FIFO 已有数据但未满,而后续数据长时间不来)

  • 发送

  • 接收

5. FIFO操作

发送FIFO的基本工作过程: 只要有数据填充到发送FIFO 里,就会立即启动发送过程。由于发送本身是个相对缓慢的过程,因此在发送的同时其它需要发送的数据还可以继续填充到发送 FIFO 里。当发送 FIFO 被填满时就不能再继续填充了,否则会造成数据丢失,此时只能等待。

接收FIFO的基本工作过程: 当硬件逻辑接收到数据时,就会往接收FIFO 里填充接收到的数据。程序应当及时取走这些数据,数据被取走也是在接收FIFO 里被自动删除的过程,因此在接收 FIFO 里同时会多出一个空位。如果在接收 FIFO 里的数据未被及时取走而造成接收FIFO 已满,则以后再接收到数据时因无空位可以填充而造成数据丢失。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:20:30  更:2021-09-18 10:22:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:23:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码