【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
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!