STM32基础学习笔记-USART外设&&面试基础题3

第三章、USART

常见问题
通讯定义 ?通讯分类 (有无时钟源、通讯方式、传输方向)?
波特率的本质:隐形的时钟
电平转换 ?TTL、COMS、RS232、RS485、USB电平标准 ?
STM32串口与RS-232通讯 ?
STM32串口与电脑USB通讯 ?
USART 含义 ?为什么使用异步方式 ?USART 通讯框图 ?
## 1、USART USART是一种通用的串行通信接口,支持同步和异步数据传输。它用于微控制器和其他设备之间的串行通信。

为什么使用异步方式:

简单性:异步通信不需要时钟信号,简化了硬件设计。

灵活性:可以在不同的波特率下进行通信,适应多种设备。

成本:减少了对额外时钟线的需求,降低了成本和复杂性。

USART的主要组成部分:

数据寄存器:用于存储要发送或接收的数据。

控制寄存器:配置USART的工作模式、波特率等。

状态寄存器:提供USART的状态信息,如发送完成、接收完成等。

2、USART 通讯协议

记忆关键:1 8 n 1 、9600/115200

也就是一个停止位,8个数据位,无奇偶校验位;常用波特率表示每秒传输的比特数

STM32串口编程方式? 轮询、中断、DMA ?

3、什么是DMA ?作用 ?通道、仲裁、方向、字节长度、循环/普通?

通道:DMA控制器通常有多个通道,每个通道可以独立地处理一个外设与内存之间的数据传输。

仲裁:在多个外设请求DMA服务时,DMA控制器需要进行仲裁,以决定哪个外设可以使用DMA通道。

方向:

内存到外设:数据从内存传输到外设。

外设到内存:数据从外设传输到内存。

字节长度:DMA可以配置为传输不同长度的数据(如字节、半字、字等),以适应不同外设的需求。

循环/普通:

普通模式:DMA传输完成后,控制器会停止,CPU需要重新启动传输。

循环模式:DMA可以在传输完成后自动重新启动,适合于需要持续数据流的应用,如音频播放。

4、UART

(Universal Asynchronous Receiver/Transmitter) 代表通用异步收发器(异步串行通信协议中的一种)。它是微控制器内部的硬件外围设备。能够将传入和传出的数据转换为串行二进制流。使用串行到并行转换的方式,能将从外围设备接收的8位串行数据(8位)转换为并行形式(一个字节)。

**UART(通用异步收发传输器)和USART(通用同步异步收发传输器)**是两种串行通信协议,主要区别:

同步与异步:

UART:仅支持异步通信。数据在没有时钟信号的情况下传输,发送和接收设备必须在相同的波特率下工作。

USART:支持同步和异步通信。可以使用外部时钟信号进行同步通信,也可以像UART一样进行异步通信。

数据传输方式:

UART:数据以字节为单位传输,通常使用起始位、数据位、校验位和停止位。

USART:除了支持UART的传输方式外,还可以在同步模式下使用时钟信号进行数据传输,允许更高的传输速率和更可靠的数据传输。

应用场景:

UART:广泛用于简单的串行通信,如微控制器与计算机之间的通信。

USART:适用于需要更高数据传输速率或更复杂通信协议的场合,如在某些工业应用中。

同步/异步收发器

通讯:对话的实现,将一方的信息,以一个合适的方式合理准确地传送给另一方

通信的分类:全双工、半双工、单工 串行/并行 同步/异步

单工:通道是唯一的,接收方Rx 和 发送方Tx身份是唯一的

全双工:通道同时发生

半双工:通道唯一,同一时间只有一个方向的信号传递

5、几个不同的电平标准

1.TTL(晶体管-晶体管逻辑)

逻辑0:0V到0.8V

逻辑1:2V到5V

2.CMOS(互补金属氧化物半导体)

逻辑0:0V到0.3V(相对于电源电压)

逻辑1:0.7V到VDD(电源电压,通常为3V或5V)

3.RS-232

逻辑0(标记状态):+3V到+15V

逻辑1(空闲状态):-3V到-15V

4.LVTTL(低电压TTL)

逻辑0:0V到0.8V

逻辑1:1.5V到3.6V

5.LVCMOS(低电压CMOS)

逻辑0:0V到0.3V(相对于电源电压)

逻辑1:0.7V到VDD(电源电压,通常为1.8V、2.5V或3.3V)

6.USB 2.0

逻辑0(低电平):

电压范围:0V到0.3V

逻辑1(高电平):

电压范围:3.0V到5.0V

接线是需要交叉相连的

6.Stm32串口与RS-232通讯

通讯协议:串口通讯协议

数据线:空闲时,为高电平

起始位:由高电平变成低电平

数据位:7/8/9/10

校验位:奇校验/偶校验

停止位:1/1.5/2 低电平变高电平

1.详细解释

起始位(Start Bit:UART通信的起始位始终为逻辑低电平(0),用于标识数据传输的开始。

数据位(Data Bits):UART通信可以使用5、6、7或8个数据位来传输数据。数据位按照位顺序从最低位到最高位传输。

奇偶校验位(Parity Bit):可选的奇偶校验位用于检测和纠正数据传输中的错误。校验位可以是奇校验(使得数据位的总数包含奇数个1)或偶校验(使得数据位的总数包含偶数个1)。

停止位(Stop Bit):停止位是UART通信的结束位,始终为逻辑高电平(1)。它标识数据传输的结束,并允许接收器进行下一次数据接收的准备。

波特率(Bps): 每秒钟传送的码元数(一个数字脉冲)

USART的框图,主要需要了解数据的传输,与外部的连接以及波特率控制器

UART的实验部分:首先是串口交互的实验

其次是串口控灯实验

最后是串口打印实验

打印:transit或者重定向的方法:用printf进行格式化输出,同时也具有方便的特点

重定向这儿的本质:将要发送的数据,存放到uart的Tx_Data_reg这个寄存器当中

2.Uart 接收和发送思路

PC串口助手发送一个字符串-----G030接收到字符串,并存放到rx数组中,将字符串发送出去—PC中的串口助手显示字符串(将rx中的字符串打印到串口助手的显示界面)

这儿代码存在的问题:发送一次,就不停地打印(因为rx中一直有数据),为了解决这个,引入memset函数,但是还是在空打印,所有再引入if(rx[0]==0)

6、实验

1、串口轮询实验

HAL_UART_Receive()

HAL_UART_Transmit()

2、printf/scanf() 重定向

3、串口控灯

Strstr()

串口控灯实验:

需求:由串口发送指令去控制单片机上的led的亮/灭

“led1_0n” -> led1亮 “led2_on” ->led2亮

流程:串口发送指令,然后是G030接收到指令,并存放在rx数组当中,接着是,用字符串比较函数:strstr,strcmp。。。。。最后是在符合判断的条件下,执行相关应用

” -> led1亮 “led2_on” ->led2亮

流程:串口发送指令,然后是G030接收到指令,并存放在rx数组当中,接着是,用字符串比较函数:strstr,strcmp。。。。。最后是在符合判断的条件下,执行相关应用

[外链图片转存中…(img-7i7tOBdO-1726622404136)]

[外链图片转存中…(img-dAtFrdqR-1726622404136)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梳子烟YAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值