一、串口简介
UART(Universal Asynchronous Receiver/Transmitter)和USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是用于串行通信的两种常见的硬件设备。
UART(通用异步收发器):
- UART 是一种常见的串行通信接口,用于在计算机和外部设备之间传输数据。
- UART 是异步通信的一种形式,意味着它不需要时钟信号来同步数据传输。相反,它使用起始位、停止位和数据位的固定格式来识别数据的开始和结束。
- UART 通过一个传输线(通常是一对线)进行通信,其中一个用于发送数据,另一个用于接收数据。
- UART 通常用于低速、短距离的数据传输,例如串口通信(RS-232)和嵌入式系统。
USART(通用同步/异步收发器):
- USART 是 UART 的扩展,它支持更多的通信模式,包括异步和同步通信。
- USART 可以在异步模式下工作,与传统的 UART 类似,也可以在同步模式下工作,使用外部时钟来同步数据传输。
- USART 在需要更高速度、更长距离、或需要更可靠同步的通信场景中更为常见。
- USART 在许多微控制器和通信芯片中都得到了广泛应用,因为它提供了更大的灵活性和性能。
总的来说,UART 是一种基本的串行通信接口,而USART 则是对UART 的增强,支持更多的通信模式和功能。选择使用哪种通信接口取决于具体的应用需求,包括通信速度、距离、同步要求等。
异步通讯和同步通讯是两种不同的数据传输方式,它们之间的主要区别在于数据传输时是否需要使用外部时钟信号来同步发送和接收数据。
异步通讯:
- 异步通讯是一种不需要外部时钟信号的通讯方式。发送方和接收方之间的时钟是通过数据本身的固定格式来同步的。
- 在异步通讯中,数据被分成块,并在每个数据块的开头和结尾加上特定的控制位,如起始位和停止位,以便接收方正确解析数据。
- 由于不需要外部时钟信号,异步通讯在一些应用中比较简单且成本较低,但速度和可靠性可能会受到一定的限制。
同步通讯:
- 同步通讯是一种需要外部时钟信号来同步发送和接收数据的通讯方式。发送方和接收方使用共享的时钟信号来确保数据传输的同步性。
- 在同步通讯中,数据在时钟信号的边沿进行传输,发送方和接收方在同一个时钟脉冲的基础上进行数据的传输和采样。
- 同步通讯通常具有更高的速度和更可靠的数据传输,因为所有设备都在相同的时钟脉冲下操作,避免了由于时序偏移而可能引起的错误。
二、板子上的串口连接
比赛板子与电脑端的连接通过CN2(USB-Type B)接口,该接口默认与主控USART1连接,所以后续使用的串口需为USART/UART1。
串口一般工作于异步模式。
查找资料可知,USART1是挂在APB2总线上的。(图来自比赛资源包芯片资料中的STM32G431RBT6数据手册第16页-Figure 1. STM32G431x6/x8/xB block diagram,一个重要的图)
三、串口CubeMX项目设置
我们在之前工程的基础上做进一步的设置,复制工程,重命名为“6_USART”。打开TEST.ioc,在“Connectivity”(连接)选项下打开USART1选项。
工作模式选择“Asynchronous”,异步通信模式。
在下边的配置中设置下串口的基本参数:
波特率:9600 Bits/s (多数题目要求的波特率)
字长:默认8位
奇偶校验位:设为None(无),若想要有奇偶检验位,那么上边的字长应该设置为9位,才能一次传输一个字节(8位)的数据
停止位:默认为1
其余参数保持默认即可。
接下来设置USART1的中断,在中断设置“NVIC Setting”中把USART1的全局中断打开(勾选上)。
或者:(优先级数字越大,越不优先,可以在这里合理安排中断优先级)
串口的基础配置就到这里,之后更新工程即可。