一、原理介绍
串行通信的通讯方式可以分为两类:
1、同步通信,带时钟信号的传输,如SPI、IIC、USART
2、异步传输,不带时钟信号的传输,如UART、USART
UART通用异步收发器:UART口指的是一种物理接口形式(硬件)
UART是异步,全双工串口总线。它比同步串口复杂很多。有两根线,一根TXD用于发送,一根RXD用于接收。
UART的串行数据传输不需要使用时钟信号来同步传输,而是依赖于发送设备和接收设备之间预定义的配置。(约定固定波特率) 对于发送设备和接收设备来说,两者的串行通信配置应该设置为完全相同。

起始位:表示数据传输的开始,电平逻辑为“0” 。 数据位:可能值有5、6、7、8、9,表示传输这几个bit 位数据。一般取值为8,因为一个ASCII 字符值为8 位。 奇偶校验位:用于接收方对接收到的数据进行校验,校验“1” 的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。 停止位:表示一帧数据的结束。电平逻辑为“1”。 如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
USART是通用同步/异步收发器:其可选使用异步方式,那将和UART无区别,如果是同步,则需要多一根时钟线(USART_CK)
串口发送接收有三种模式:轮询、中断和 DMA
补充几个名词:
Asynchronous:异步通信
Synchronous : 同步通信
Single Wire (Half-Duplex) :单线/半双工
二、STM32和PC进行数据互发
1、扫描接收发送
(1)、选择USART
(2)、设置MODE为异步通信(Asynchronous)
引脚一般自动设置为PA9、PA10

首先要在main.c或者是usart.c中对printf()和scanf()进行重定义,方便使用
记得要在头文件中输入#include "stdio.h"
int fputc(int ch,FILE *f)
{
HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY );

文章介绍了串行通信的两类方式——同步和异步,重点讲解了UART和USART的区别以及STM32与PC之间的数据交互。在STM32中,通过UART进行异步通信,包括轮询、中断和DMA三种收发模式。中断和DMA方式提高了通信效率,中断允许在接收时执行其他任务,而DMA则在后台处理数据传输。
1万+

被折叠的 条评论
为什么被折叠?



