目录
一、概述
1.1 常见的通信类别/特点
1.2 常见几种通信
二、UART通信协议
2.1 UART通信介绍
2.2 UART通信协议
物理连接示意图:
三、STM32的UART接口
3.1 STM32的UART特点
3.2 STM32的UART框图分析
3.3 UART初始化步骤
3.4 STM32中UART使用
一、概述
通信时需要关注 总线构成(硬件) 和 通信协议(软件)。
1.1 常见的通信类别/特点
同步:指的是通信双方步调一致,一般需要通过时钟线连接双方的时钟。
一方作为主机控制时钟(控制通信速度),另一方作为从机接收时钟。
异步:通信双方的时钟是彼此独立的(也没有时钟线连接),一般需要使通信双方达到相同的速度。 即规定双方的波特率(bits / s)一致。
串行:数据线只有1或2根,每次只能传输1位数据。
并行:数据线一般有8或16,每次可以传输多位数据。
半双工:通信双方均可以给对方发送数据,但同一时间只能一方发送、另一方接收。
一般是因为数据线只有一组,所以同一时间,只有一方控制数据线。
全双工:通信双方可以同时给对方发送数据,并同时接收对方发送的数据。一般是
因为有多组数据线,所以同一时间,双方都可以控制自己发送数据的那组线。
1.2 常见几种通信
结合总线构成,判断其特点:
UART: Tx , Rx 异步、串行、全双工
IIC: SCL , SDA 同步、串行、半双工
SPI: SCK , MOSI , MISO 同步、串行、全双工
二、UART通信协议
2.1 UART通信介绍
通用异步收发器UART(Universal Asynchronous Receiver/Transmitter),是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。
一般将UART通信描述为异步串行通信,即串口通信,包括RS232、RS485、RS422、TTL等。 以上这些都属于串口通信,其区别是电平规范、硬件实现不同。
所以若两个设备实现串口通信,但是由于硬件原因,使用了不同的电平规范,则需要在通信中使用电平转换芯片。例如有CH340芯片(TTL和USB电平转换),用于STM32芯片和电脑进行串口通信。
2.2 UART通信协议
UART作为异步串行通信协议的一种,工作原理是将传输数据的每个二进制位一位接一位地传输。在UART通信协议中,信号线上的状态为高电平时代表‘1’,信号线上的状态为低电平时代表‘0’。由于异步通信,即两个uart设备之间通信的时候无时钟线,这时候就需要在两个uart设备上指定相同的传输速率,以及空闲位、起始位、校验位、结束位,也就是遵循相同的协议。
通信速度:双方一致即可,单片机中常用波特率 1200、2400、4800、9600、19200、38400、115200…
常用波特率一般有以下特点:能够用单片机波特率生成器生成,误差率小;在能接受的误差范围内,波特率较大。
数据帧格式:一帧数据构成, 1位起始位 + 5~8位数据位 + 0~1位校验位 + 0.5/1/1.5/2位停止位
起始位:1位低电平,标志一帧数据开始
数据位:5~8位,传输的有效数据
校验位:0~1位,无校验/奇校验/偶校验(数据位和校验位中逻辑’1’个数)
停止位:0.5/1/1.5/2位高电平,标志一帧数据结束
通信双方对一帧数据的规定必须一致。
传输数据方向:先传送数据低位,一对一通信。
物理连接示意图:
三、STM32的UART接口
3.1 STM32的UART特点
● 全双工异步通信
● 发送器和接收器具有单独使能位
● 传输检测标志:(标志一般对应外设寄存器中的某个位,通过这个位的状态 检测外设工作状态)
— 接收缓冲区已满
— 发送缓冲区为空
— 传输结束标志
● 奇偶校验控制:
— 发送奇偶校验位
— 检查接收的数据字节的奇偶性
● 十个具有标志位的中断源:
— CTS 变化
— LIN 停止符号检测
— 发送数据寄存器为空
— 发送完成
— 接收数据寄存器已满
— 接收到线路空闲
— 溢出错误
— 帧错误
— 噪声错误
— 奇偶校验错误
3.2 STM32的UART框图分析
3.3 UART初始化步骤
1、将使用到GPIO引脚复用为相应的UART的Tx和Rx(引脚初始化)
2、UART外设初始化(激活UART、数据帧设置、发送/接收器使能、UART使能),在stm32f4xx_rcc.c , stm32f4xx_gpio.c , stm32f4xx_usart.c 找到实现以上功能的函数
3.4 STM32中UART使用
通过对数据寄存器进行写操作,控制发送的内容。当接收数据后,通过对数据寄存器及逆行读操作,读出接收的内容。发送和接收控制使能是独立的,但是发送和接收的速度是一致的实现UART通信时,也会有GPIO配置【GPIO是芯片和外界数据交流的唯一通道】由于此时相应的GPIO引脚需要作为另一片上外设UART的发送/接收引脚(Tx/Rx),故将相应的引脚配置为复用模式,且将之具体复用为相应UART的Tx和Rx。
注意:串口助手的设置,如波特率、停止位、数据位、校验位等,必须要和STM32程序中设置匹配。