1.介绍

UART (Universal Asynchronous Receiver and Transmitter)即通用异步接收发送器,是一种通用的串行数据总线,属串口通信的一种,用于异步通信。该总线有发送和接收线,可双向通信实现全双工传输和接收

UART作为一个实现并行信转串行信号输出的芯片,常被集成于其他通讯接口的连接上。在FPAG开发板中,常用UART来与PC进行通信,包括数据通信、命令和控制信息的传输。

标题

     异步通信:UART协议中接收方和发送方不使用统一的参考时钟 ,即发送和接收设备 有各自的时钟来控制数据的发送和接收过程。双方以 字符 为单位,通信中两个字符间的时间间隔  是多少是 不固定  的,然而在同一个字符中的  两个相邻bit间的时间间隔是固定的   。双方获得同步的方法就是采用  固定的串行数据格式   

     串口通信:串口通信是指外设和计算机之间,通过数据地线、控制线等,按位传输数据的一种通讯方式。这种方式使用的数据线少,在远距离传输时可节约通信成本,但是其传输速度要比并行传输低。

串口  按位     即bit发送和接收字节。通常串口用于ASCII码字符的传输,通信使用   三根线   即发送、接收和地线即可。由于串口通信是异步的,串口能在一根线上传输另一根线上接收数据。其他线用于握手,但不是必须的

串口通信的重要参数:波特率、数据位、停止位和奇偶校验位。两个进行通信的双方,端口的这些参数必须匹配。

UART与RS232区别:电平标准不同,UART为TTL电平(3.3V)接口,而RS232为RS232 电平(5-12V)串口。当一个设备上的UART需要与PC相连时类型的PC端上的串口就是RS232),其上一本有一个RS232驱动器来转换电平(类似MAX232芯片)。

异步通信的数据格式

2.UART通信协议与传输时序

UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位一位地传输。故 UART通信时,首先将接收到的并行数据转换成串行数据进行传输。消息帧格式以及时序图如下:

消息帧从起始位开始,后面是7或8个数据位(先传低位,再传高位),然后是一个可用的奇偶校验位和一个或几个高位停止位。在接收端检测到起始位时就知道数据准备发送了,并尝试与发送端的时钟频率同步。

起始位:发送端先发出一个逻辑“0”的信号,表示传输字符开始。

资料位(数据位):紧跟起始位。资料位可以是4、5、6、7、8位,构成一个字符。通常采用ASCII码,且低位先传,靠时钟定位。

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

停止位:这是一个字符数据的结束标志。  可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

接收过程中,UART会从接收到的消息帧中去掉起始位和结束位。如果有奇偶校验位,那么需要对拿到的数据进行奇偶校验,并且负责将数据字节进行串行转并行。

波特率:是衡量数据传送速率的指标。表示每秒钟传送的的码元符号的个数。此外,一个符号所代表的信息量(比特数)与符号的阶数有关,例如若传输使用256阶的符号,则每8bit(log2[256])代表一个符号,此时资料的传送速率为120字符/秒,则波特率就是120baud,而比特率120*8=960bit/s。这两者的概念很容易搞错。

注意:

由于对于串口协议而言,码元是2进制的,所以波特率(通信原理中的传码率)在数值上和比特率是相等的。当波特率为115200时,本质就是串口每秒传送115200个bit的数据量。所以传送1个bit的时间等于1/115200秒,大约8.68us

16倍频采样

通常会采用常规的16倍频采样方法:即采用数据传输速率(波特率)的16倍进行采样,采样时钟连续采样到8个低电平信号,可确定该低电平为真正的起始信号,从而防止干扰信号导致的虚假起始位现象。此后接收器每隔16个采样时钟采样一次,并把采样得到的数据作为输入数据,以移位方式存入到接收移位寄存器。

起始位检测8个连续脉冲的另一个原因是:采用16倍频的采样时钟,第8个采样脉冲所对应的数据波形正好是该数据位的正中点(上升沿采样),在该处读写数据会最安全准确。

分频系数 = 系统时钟/16*p。

3. Verilog实现

功能模块的划分:

串口通信之 UART相关推荐

  1. ARM内核单片机的串口通信(UART)使用(数据的收发)

    ARM内核单片机的串口通信(UART)使用 进入正题: 首先,要明白使用UART进行通信,无论收发数据,传输的都是16进制.而中文.英文.标点符号其本质都是16进制,只是一个中文需要用两个字节表示,一 ...

  2. (一)FPGA之串口通信(UART)

    (一)FPGA之串口通信(UART) 回到梦开始的地方,如今回过头来看串口协议,确实清晰了很多,但是奈何好记性不如烂笔头,我还是要重新记录一下学习的知识点,方便查找和学习. 波特率(Band Rate ...

  3. 搭建机器人电控系统——通信协议——串口通信USART/UART、RS232、RS485及其实例

    通信协议 串口通信详解 IIC通信详解 SPI通信详解 CAN通信详解 文章目录 通信协议 什么是串口? 串口分类 USART/UART.RS232.RS485的区别 串口协议原理 传输协议 需要定义 ...

  4. 【ESP32学习笔记】#外设篇#(3)串口通信(UART)

    一.简介 官方文档:UART ESP32 有 3 个 UART 控制器(UART0.UART1 和 UART2),它们具有一组相同的寄存器. 每个 UART 控制器均可独立配置参数,如波特率.数据位长 ...

  5. UART串口通信(回环测试)

    一 UART串口通信简介 UART(Universal Asynchronous Receiver-Transmitter)是采用异步串行通信方式的通用异步收发传输器,在发送数据时将并行数据转换为串行 ...

  6. 51单片机入门——UART串口通信

    文章目录 前言 1.什么是串行通信 2. USB转串口通信 3. IO 口模拟 UART 串口通信 4 UART串口通信的基本应用 4.1 通信的三种类型 4.2 UART模块 4.3 UART 串口 ...

  7. C51的UART 串口通信

    C51的UART 串口通信 1.串口通信简介 2.串口调试助手 3.串口通信的实现 4.UART模块 5.总结 6.实例 1.串口通信简介 UART(Universal Asynchronous Re ...

  8. 【STC单片机学习】第十三课:串口通信和RS485

    [朱老师课程总结 侵删] 第一部分.章节目录 1.13.1.通信有关的常见概念 1.13.2.什么是串行通信 1.13.3.51单片机的串行通信 1.13.4.STC51的串行通信相关寄存器1 1.1 ...

  9. STM32CubeIDE开发(二十二), stm32的RS485/232串口通信开发要点

    一.stm32串口通信 stm32串口通信一般是指通过UART(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器传输数据,UART 作为异步串 ...

最新文章

  1. ESXI中VM迁移或OVF模板导入linux系统常规操作
  2. 数据结构实验之链表三:链表的逆置
  3. python函数式编程、高阶函数
  4. vsftpd常用操作
  5. 什么情况下需要创建MySQL索引
  6. Linux网络报文捕获/抓包技术对比:napi、libpcap、afpacket、PF_RING、PACKET_MMAP、DPDK、XDP(eXpress Data Path)
  7. Python socket UDP
  8. 图像数据的 normalization
  9. 【语音隐写】基于matlab GUI DCT+DWT音频数字水印嵌入提取【含Matlab源码 836期】
  10. 西门子S7-300 PLC视频教程(百度网盘)
  11. 在java中new一个对象的流程是怎样的
  12. 【macOS免费软件推荐】第8期:IINA+
  13. Python 分析中国城市夜间灯光数据
  14. 淘宝卖家店铺订单API接口同步方案
  15. 30个值得收藏可免费搜索/下载PDF电子图书(文档)的搜索引擎
  16. ZigBee应用于油田数字化建设
  17. 少儿机器人编程会学什么
  18. 计算机毕业设计asp.net校园足球赛事管理系统(源码+系统+mysql数据库+Lw文档)
  19. 基于GNU radio + HackRF One 实现信号发射与FM接收
  20. css box-shadow 使用

热门文章

  1. 区块链技术应用落地 区块链版权保护
  2. MYSQL数据库常用知识整理
  3. 如何使用在线视频转换器转换文件格式?
  4. 【2017.11.03】摄影-构图
  5. 【网络通信 -- 直播】SRS 实战记录 -- SRS 部署与直播效果测试
  6. 快速了解:“华为的 HMS、鸿蒙系统” 和 “谷歌的 GMS”
  7. ubuntu 3060显卡驱动+cuda+cudnn+pytorch+pycharm+vscode
  8. git如何同步本地仓库与远程仓库代码
  9. java扫雷雷区的统计数据代码_java实现扫雷游戏控制台版
  10. 创建二叉树并计算结点数(通过递归调用实现)