【STM32学习笔记】USART串口

1.串口通信协议简介

物理层

规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在屋里媒体的传输。

(硬件部分)

协议层

协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。
(软件部分)

2.STM32串口功能框图讲解

1-RS232

2-USB转串口(TTL)

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

TTL(3.3V或5V表示高电平,0表示低电平)

RS-232(15V表示低电平,-15表示高电平)

1-RS232

1、RS232标准串口主要用于工业设备直接通信

1、电平转换芯片主要有MAX3232 ,SP3232

2-USB转串口(TTL)

1、USB转串口主要用于设备跟电脑通信

2、电平转换芯片一般有CH340、PL2303、CP2102、FT232

3、使用的时候电脑端需要装电平转换芯片的驱动

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

4-串口数据包的基本组成

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

结束位:由0.5、1、1.5或2个逻辑1的数据位表示

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

校验位:可选,为的是数据的抗干扰性

校验方法分为:

1-奇校验(odd)

2-偶校验(even)

3-0 校验(space)

4-校验(mark)

5-无校验(noparity)

3.代码讲解

1-引脚



有些引脚有重映射,例如USART2的TX引脚PA2和RX引脚PA3,这两个可以经过重映射到PD5和PD6

可以通过配置AFIO寄存器的USART2_REMAP来实现重映射

2-数据寄存器

数据寄存器-USART_DR:9位有效,包含一个发送数据寄存器TDR和一个接受数据寄存器RDR。一个地址对应了两个物理内存。

1.USART_CR1:M , 0 :8bit , 1 : 9bit(由M位控制,如果是0数据为8位,否则为9位)

2.USART_CR2:STOP

00: 1个停止位

01: 0.5个停止位

10: 2个停止位

11: 1.5个停止位

(注:USART4和USART5不能用0.5停止位和1.5停止位)

3.USART_CR1:PCE、PS、PEIE

PCE:检验控制使能(Parity control enable)

0:禁止校验控制;

1:使能校验控制;

PS:校验选择(Parity selection)

0:偶校验

1:奇校验

PEIE:PE中断使能(PE interrupt enable)(数据出错时产生的中断)

0:禁止产生中断

1:当USART_SR中的PE为’1‘时,产生USART中断

4.USART_SR:PE

PE:校验错误

0:没有奇偶校验错误

1:奇偶校验错误

发送数据和接收数据

截图

USART_CR1: UE(串口使能)、TE(发送使能)、RE(接收使能)

发送过程:

UE=1 TE=1

数据先经过TDR发送寄存器,然后再发送给发送移位寄存器

TXE:发送数据寄存器空

TC:发送完成

在SR寄存器内可查询标志位

TXEIE:转移完成中断

TCIE:发送完成中断

接收过程:

UE=1 RE=1

RXNE:读数据寄存器非空

RXNEIE:读数据非空中断

3-控制器

详见数据手册

4-波特率

USART_BRR:波特率寄存器

DIV_Mantissa:USARTDIV的整数部分

DIV_Mantissa:USARTDIV的小数部分

TX/RX波特率=fck/(16×USARTDIV)

USARTDIV:无符号的定点数

FCK:串口的时钟(注意区分APB2和APB1两条总线)

例如计算波特率为115200

72000000/(16×USARTDIV)

解得USARTDIV=39.0625,可算得DIV_Fraction=0.0625*16=1;DIV_Mantissa=39=27

设置USART_BRR的值为0x271