打印
[应用相关]

串口USART的分析以及GD32和STM32的USART的差异

[复制链接]
506|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ar, ST
1、什么是串口?
USART是全双工通用同步/异步收发器,是一种串行的通信设备。在嵌入式开发设计中经常被使用到,广泛的被应用于主机与外围设备的通信交互中,应用相当的广泛。

1.1、串口中的 UART 和 USART有什么不同?
UART:指的是通用异步收发器;
USART:指的是通用同步和异步收发器。
当只使用异步通信功能时,这两者是没有区别的,区别在于USART比UART多了同步(时钟)通信功能。

使用特权

评论回复
沙发
狗啃模拟|  楼主 | 2022-7-27 18:25 | 只看该作者
2、通信方式有哪些?
2.1、并行通信
并行通信指的是数据同时在多根数据线上进行发送或者接收。如下所示:

并行通信的优点:控制方式简单,传输速度快,适用于距离比较近的传输。
并行通信的缺点:占用的数据线较多,对MCU资源少的单片机而言不是很友好,线路布局变复杂。

使用特权

评论回复
板凳
狗啃模拟|  楼主 | 2022-7-27 18:26 | 只看该作者
2.2、串行通信
串行通信指的是数据在同一根数据线上依次按位(bit)进行发送或者接收。如下图所示:

使用特权

评论回复
地板
狗啃模拟|  楼主 | 2022-7-27 18:27 | 只看该作者

使用特权

评论回复
5
狗啃模拟|  楼主 | 2022-7-27 18:28 | 只看该作者
串行通信方式的优点:占用数据线少,适合用于远距离传输,系统布线简单;
串行通信方式的缺点:控制方式复杂,传输速度较并行通信的方式要慢。

使用特权

评论回复
6
狗啃模拟|  楼主 | 2022-7-27 18:29 | 只看该作者
3、串行通信方式中的两种方式
3.1、同步串行通信方式
同步通信的方式是发送方和接收方都必须采用同一个时钟,收发双方利用时钟信号来确定每个信号位。如下图所示:

使用特权

评论回复
7
狗啃模拟|  楼主 | 2022-7-27 18:30 | 只看该作者

使用特权

评论回复
8
狗啃模拟|  楼主 | 2022-7-27 18:31 | 只看该作者
这种方式把多个字符组成一个信息帧,每帧的开头用同步字符来指示,是一种连续传送数据的通信方式。即使在传输中没有信息需要传输时,因为同步传输不允许中间有空隙,所以也要填上空字符。如下图所示:

使用特权

评论回复
9
狗啃模拟|  楼主 | 2022-7-27 18:32 | 只看该作者

使用特权

评论回复
10
狗啃模拟|  楼主 | 2022-7-27 18:37 | 只看该作者
3.2、异步串行通行方式
异步串行通信方式是指通信的双方使用各自的时钟,以一个字符作为数据传输单元并且发送方发送字符的时间间隔不一定,是一种不规则数据段传送的通信方式。如下图所示:

使用特权

评论回复
11
狗啃模拟|  楼主 | 2022-7-27 18:41 | 只看该作者
4、串行通信方式的传送方向
根据串行数据的传输方向,可以将通信分为单工、半双工、全双工。
1)单工:是指数据传输仅能沿一个方向,不能实现反向传输。
2)半双工:是指数据传输可以沿两个方向,但需要分时进行传输。
3)全双工:是指数据可以同时进行双向传输。

使用特权

评论回复
12
狗啃模拟|  楼主 | 2022-7-27 18:41 | 只看该作者

使用特权

评论回复
13
狗啃模拟|  楼主 | 2022-7-27 18:42 | 只看该作者
5、常用到的 USART 通信方式
在嵌入式中最常使用到的就是异步全双工的USART通信方式,收发两方各自使用自身的时钟,收发可以相互独立的进行。数据传输的示意图如下:

使用特权

评论回复
14
狗啃模拟|  楼主 | 2022-7-27 18:43 | 只看该作者

使用特权

评论回复
15
狗啃模拟|  楼主 | 2022-7-27 18:43 | 只看该作者
异步串行通信是将一个字节数据加上起始位、校验位、停止位,构成的字符帧。由于异步通信没有同步时钟,所以接收端要时刻处于接收状态。

使用特权

评论回复
16
狗啃模拟|  楼主 | 2022-7-27 18:44 | 只看该作者
起始位:**在没有数据需要传送时,此时通信线上为逻辑“1”状态。当发送端要发送一个字符时,首先发送一个逻辑“0”信号,即起始位,告诉接收端要开始发送一帧数据了。接收端检测到这个低电平时,就开始准备接收数据信息了。

使用特权

评论回复
17
狗啃模拟|  楼主 | 2022-7-27 18:44 | 只看该作者
数据位:**在起始位发送完毕之后,发送端发出的就是数据位了,数据位一般是没有严格的规定的,5~9位都可以。一般是低位先发,高位后发,按位依次进行传输。平时使用中一般都是选择8bit的。

使用特权

评论回复
18
狗啃模拟|  楼主 | 2022-7-27 18:46 | 只看该作者
校验位:**数据位发送完成之后,为了检验数据在传输过程中是否有出错,可以选择发送一个位进行校验。使用的是奇偶校验,当然也可以选择不进行检验。

使用特权

评论回复
19
狗啃模拟|  楼主 | 2022-7-27 18:47 | 只看该作者
波特率:**是指数据传输的速率。表示每秒钟传送的bit位数。比如,一秒钟传送了120个字符,每个字符传送10个bit(1个起始位 + 8个数据位 + 1个停止位),那么:波特率 = 10x120 = 1200 (bit/s)。平常使用中常用的波特率有9600、115200、19200、25600等。

使用特权

评论回复
20
狗啃模拟|  楼主 | 2022-7-27 18:48 | 只看该作者
6、GD32 与 STM32 的 USART 的差异
6.1、USART编号上的差异
通过对比GD32和STM32同样内核已经同样引脚数的MCU手册可以知道,两者是有区别的。如下图:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

770

帖子

0

粉丝