STM32——串口通信原理

一、硬件部分

RS232通信和TTL的区别只有一点,那就是在于硬件机制(电平),如果需要做RS232和TTL的转换,那就需要借助转换芯片来完成。
在这里插入图片描述

TTL RS232
0-5V -15 - 15V
高电平置1,低电平置0 高电平置0,低电平置1

1、RS232标准

在这里插入图片描述

2、USB转串口(TTL)

在这里插入图片描述

3、原生的串口到串口(TTL->TTL)

在这里插入图片描述

二、串口通信协议

在这里插入图片描述

起始位:由一个逻辑0的数据位表示

停止位:由0.5、1、1.5或2个逻辑1的数据位表示,通常选用1个位

有效数据:起始位后面紧接着就是有效数据,有效数据的长度常被约定为5、6、7、8或9位

校验位:校验位是可选的,为数据提供抗干扰性。
校验的方法主要有:
1、奇校验(odd):有效数据和校验位中“1”的个数为奇数
2、偶校验(even):有效数据和校验位中“1”的个数为偶数
3、0校验(space):不管有效数据内容是什么,校验位总是0
4、1校验(mark):同上,校验位总是1
5、无校验(noparity):数据包中不包含校验位

三、STM32串口通信功能框图

使用单片机外设之前,要先看看USART(通用同步异步收发器)的功能框图:
在这里插入图片描述
图片来源:STM32中文参考手册 25-3章节

我们将上面的功能框图划分成四个部分:

1、引脚

通过上图我们可以看到一共有8个引脚:

引脚 功能
TX 数据发送
RX 数据接收
SCLK 时钟,仅同步通信时使用
nRTS 请求发送(Request To Send)
nCTS 允许发送(Clear To Send)
SW_RX、IRDA_OUT、IRDA_IN 红外相关配置

在这里插入图片描述
在这里需要注意的是:USART1-3是支持同步通信的,但是其挂载的总线不同,如果要从USART1换成USART2,那么其时钟也要修改
对于一款芯片的引脚功能,可以通过STM32F10X数据手册——Pinouts and pin description查询
ST每个系列的芯片都有一个数据手册,里面有引脚的详细功能,对于部分引脚来说,都是多个功能复用的,在写程序的时候享用到哪个功能,就在初始化时对它进行相应的配置,即通用功能配置和相应功能的初始化配置。

2、USART通信相关寄存器(最好过一遍,或者在试验之后回过来看一下,了解一下其工作机制)

如下图所示,USART_DR寄存器是9位有效的,包含一个发送数据寄存器TDR和一个接收数据寄存器RDR,是一个地址对应的两个物理内存。对应的是USART的全双工、半双工通信机制。
在这里插入图片描述
图片来源:STM32中文参考手册 25.6.2章节

我们先来看一下串口数据格式:
在这里插入图片描述
具体用多少位,是由USART_CR1寄存器决定的:
在这里插入图片描述
在这里插入图片描述
这里的n表示不确定,是由另外的寄存器来配置的,控制停止位的寄存器是USART_CR2:
在这里插入图片描述
在这里插入图片描述
校验位是由USART_CR1寄存器控制
在这里插入图片描述
在这里插入图片描述
当校验位出错时,就会产生校验错误,这时USART_SR的PE位就会置1:
在这里插入图片描述

3、波特率

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36535414/article/details/121383498

相关文章