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串口通信功能框图

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

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_CR1寄存器决定的: 这里的n表示不确定,是由另外的寄存器来配置的,控制停止位的寄存器是USART_CR2: 校验位是由USART_CR1寄存器控制 当校验位出错时,就会产生校验错误,这时USART_SR的PE位就会置1:

3、波特率

经验分享 程序员 微信小程序 职场和发展