初学者STM32—USART
一、简介
USART(Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步/异步收发器)是一种常见的串行通信协议,广泛应用于微控制器、传感器、模块和其他电子设备之间的数据传输。本节课主要学习USART的基本结构以及其原理。
二、通信接口
通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
在STM32芯片当中,有一些功能是没有的,比如蓝牙、WIFI、陀螺仪等,这些外挂的模块是存有数据的,但是需要将数据传输到STM32里面,这就需要通过USART串口通信进行数据传输给芯片
通信协议:制定通信的规则,通信双方按照协议规则进行数据收发,下图为不同通信模式的通信协议。
1、工作方式
半双工:发送的时候不能接收,接收的时候不能发送
全双工:发送和接收能够同步进行
2、时钟
为了让数据传输的时候要能够准确的采集数据,就引入了时钟,时钟分为同步、异步两种
I2C和SPI因为有单独的时钟线,所以能够实现同步
USART、CAN、USB没有时钟线,所以只能通过约定采样频率和引入帧头帧尾进行采样位置对齐
3、电平特性
单端:通信的高低电平是相对于GND的,所以双方必须接GND引脚,否则无法通信
差分:靠两个差分引脚电压差实现信号传输,可以不需要接GND,但是一些USB协议里需要,不接GND是不行的。
4、引脚说明:
USART TX:发送 RX:接收
I2C SCl:时钟线 SDA:数据线
SPI SCLK:时钟 MOSI:主出从入 MISO:出入从出 CS:片选
片选:因为片选的存在所以SPI能够实现多设备的接入
三、串口通信的设备
串口是一种广泛应用的通信接口,具有成本低、使用简便和线路简单的特点,能够实现两个设备间的双向通信。一般来说串口是点对点的设备,两个设备之间的通信。
通过串口,单片机可以与其他单片机、计算机以及各类功能模块进行通信。这不仅大幅拓展了单片机的应用范围,还显著提升了单片机系统的硬件能力。
图中的的设备都是可以通过USART实现设备之间的通信
1、USB转串口模块,采用的是CH340芯片,它可以实现将串口协议转USB协议
2、陀螺仪传感器,可以测量角速度、加速度等参数,左侧引脚是串口,右侧是I2C
3、蓝牙模块,下面接口是串口连接,这样就可以实现单片机与手机的互联硬件电路
在简单双向串口通信中,需要连接两根通信线:发送端(TX)和接收端(RX),TX和RX需要交叉连接
若仅需单向数据传输,则只需连接一根通信线即可
当通信双方电平标准不一致时,需添加电平转换芯片
假设设备1是STM32,设备2是蓝牙模块,蓝牙模块是没有电源的,那么VCC就可以连接STM32的VCC实现子模块的供电(要满足供电要求,不同电平需要加电平转换模块)
电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
TTL电平:+3.3V或+5V表示1,0V表示0
RS232电平:-3~-15V表示1,+3~+15V表示0
RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)(通信距离可达上千米)
四、串口参数以及时序
波特率:决定串口通信传输速率的参数,常见的波特率包括9600、19200、115200等。波特率越高,相同时间内传输的数据越快。波特率设置需保证通信双方一致,否则会导致数据解析错误。
起始位:数据帧开始的标识信号,始终保持低电平状态,其作用是通知接收方准备接收数据,并作为同步时钟的参考点。
数据位:承载实际数据的有效位,高位表示1(高电平),低位表示0(低电平),按从低到高顺序传输
校验位:基于数据位计算得出的校验值,用于检测传输准确性
校验位用于检测数据传输中的错误,常见校验方式包括:
偶校验:数据位和校验位中 1
的个数为偶数。
奇校验:数据位和校验位中 1
的个数为奇数。
无校验:不添加校验位。
停止位:标记数据帧结束的间隔信号,始终保持高电平
无校验位:八位载荷
有校验位:八位载荷 ,一位校验
在末尾插入一个校验位
偶:传输的是0000 1111就插入一个0,如果传输的是0000 1110就插入一个1,使1满足偶数个
奇:传输的是0000 1111就插入一个1,如果传输的是0000 1110就插入一个0,使1满足奇数个
但是不一定是百分百正确判断,它的存在只是减少数据传输的不正确。 假设有两个数据出错了,但是没有改变奇偶特性就不会检出错误。
五、总结
USART是一种通用串行通信协议,用于微控制器与外部设备的数据传输。其支持同步/异步通信,具有全双工和半双工两种工作方式。通信协议包含起始位(低电平)、数据位(高低电平表示1/0)、可选校验位(奇偶校验)和停止位(高电平)。电平标准包括TTL、RS232和RS485三种,波特率需双方一致以确保通信正确。USART通过TX(发送)和RX(接收)引脚实现设备间连接,适用于STM32与传感器、蓝牙模块等外设的数据交互,具有成本低、接线简单的特点。不同电平设备通信时需使用转换芯片。