3

说说开发中常用的USART的协议和工作原理

 1 year ago
source link: https://blog.51cto.com/wangjunlv/6006798
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

说说开发中常用的USART的协议和工作原理

精选 原创

嵌入式之入坑笔记 2023-01-13 22:52:04 博主文章分类:单片机开发 ©著作权

文章标签 串行通信 文章分类 单片机/工控 嵌入式 yyds干货盘点 阅读数189

说说开发中常用的USART的协议和工作原理_串行通信

1、什么是串口USART?

USART是全双工通用同步/异步收发器,是一种串行的通信设备。在嵌入式开发设计中经常被使用到,广泛的被应用于主机与外围设备的通信交互中,应用相当的广泛。

1.1、串口中的 UART 和 USART有什么不同?

UART:指的是通用异步收发器;

USART:指的是通用同步和异步收发器。

当只使用异步通信功能时,这两者是没有区别的,区别在于USART比UART多了同步(时钟)通信功能。

2、通信方式有哪些?

2.1、并行通信

并行通信指的是数据同时在多根数据线上进行发送或者接收。如下所示:

说说开发中常用的USART的协议和工作原理_串行通信_02

并行通信的优点:控制方式简单,传输速度快,适用于距离比较近的传输。

并行通信的缺点:占用的数据线较多,对MCU资源少的单片机而言不是很友好,线路布局变复杂。

2.2、串行通信

串行通信指的是数据在同一根数据线上依次按位(bit)进行发送或者接收。如下图所示:

说说开发中常用的USART的协议和工作原理_串行通信_03

串行通信方式的优点:占用数据线少,适合用于远距离传输,系统布线简单;

串行通信方式的缺点:控制方式复杂,传输速度较并行通信的方式要慢。

3、串行通信方式中的两种方式

3.1、同步串行通信方式

同步通信的方式是发送方和接收方都必须采用同一个时钟,收发双方利用时钟信号来确定每个信号位。如下图所示:

说说开发中常用的USART的协议和工作原理_串行通信_04

这种方式把多个字符组成一个信息帧,每帧的开头用同步字符来指示,是一种连续传送数据的通信方式。即使在传输中没有信息需要传输时,因为同步传输不允许中间有空隙,所以也要填上空字符。如下图所示:

说说开发中常用的USART的协议和工作原理_串行通信_05

3.2、异步串行通行方式

异步串行通信方式是指通信的双方使用各自的时钟,以一个字符作为数据传输单元并且发送方发送字符的时间间隔不一定,是一种不规则数据段传送的通信方式。如下图所示:

说说开发中常用的USART的协议和工作原理_串行通信_06

4、串行通信方式的传送方向

根据串行数据的传输方向,可以将通信分为单工、半双工、全双工

1)单工:是指数据传输仅能沿一个方向,不能实现反向传输。

2)半双工:是指数据传输可以沿两个方向,但需要分时进行传输。

3)全双工:是指数据可以同时进行双向传输。

说说开发中常用的USART的协议和工作原理_串行通信_07

5、常用到的 USART 通信方式

在嵌入式中最常使用到的就是异步全双工的USART通信方式,收发两方各自使用自身的时钟,收发可以相互独立的进行。数据传输的示意图如下:

说说开发中常用的USART的协议和工作原理_串行通信_08

异步串行通信是将一个字节数据加上起始位、校验位、停止位,构成的字符帧。由于异步通信没有同步时钟,所以接收端要时刻处于接收状态。

起始位:在没有数据需要传送时,此时通信线上为逻辑“1”状态。当发送端要发送一个字符时,首先发送一个逻辑“0”信号,即起始位,告诉接收端要开始发送一帧数据了。接收端检测到这个低电平时,就开始准备接收数据信息了。

​​数据位:在起始位发送完毕之后,发送端发出的就是数据位了,数据位一般是没有严格的规定的,5~9位都可以。一般是低位先发,高位后发,按位依次进行传输。平时使用中一般都是选择8bit的。

校验位:数据位发送完成之后,为了检验数据在传输过程中是否有出错,可以选择发送一个位进行校验。使用的是奇偶校验,当然也可以选择不进行检验。

波特率:是指数据传输的速率。表示每秒钟传送的bit位数。比如,一秒钟传送了120个字符,每个字符传送10个bit(1个起始位 + 8个数据位 + 1个停止位),那么:波特率 = 10x120 = 1200 (bit/s)。平常使用中常用的波特率有9600、115200、19200、25600等。

6、GD32 与 STM32 的 USART 的差异

6.1、USART编号上的差异

通过对比GD32和STM32同样内核已经同样引脚数的MCU手册可以知道,两者是有区别的。如下图:

说说开发中常用的USART的协议和工作原理_串行通信_09

6.2、通信协议上的细微差异

GD在连续发送数据的时候每两个字节之间会有一个Bit的Idle,而STM32没有,如下图为GD的发送波形:

说说开发中常用的USART的协议和工作原理_串行通信_10

GD的串口在发送的时候停止位只有1/2两种停止位模式。STM32有0.5/1/1.5/2四种停止位模式。

GD 和STM32 USART的这两个差异对通信基本没有影响,只是GD的通信时间会加长一点。

说说开发中常用的USART的协议和工作原理_串行通信_11
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK