【STM32】USART串口协议&串口外设-学习笔记

发布于:2025-03-16 ⋅ 阅读:(17) ⋅ 点赞:(0)

串口协议

通信接口 

  • 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。比如STM32芯片内部集成了很多功能模块,像定时器计数、PWM输出、AD采集等等。这些都是芯片内部的电路,这些电路的配置寄存器,数据寄存器都在芯片内部里面,操作这些寄存器直接读写就可以了。但是也有一些功能是STM32里面没有的,像蓝牙无线遥控功能、陀螺仪加速度计测量姿态功能,这些STM32芯片里面没有,只能外挂芯片,那外挂芯片都在STM32外边,STM32如何才能获取外挂数据呢?这就需要我们在两个设备之间连接一条或者多条通信线。通过两根通信线路发送或者接收数据、完成数据交换,从而实现控制外挂模块和读取外挂模块数据的目的。
  • 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发。

名称

引脚

双工

时钟

电平

设备

USART

TXRX

全双工

异步

单端

点对点

I2C

SCLSDA

半双工

同步

单端

多设备

SPI

SCLKMOSIMISOCS

全双工

同步

单端

多设备

CAN

CAN_HCAN_L

半双工

异步

差分

多设备

USB

DPDM

半双工

异步

差分

点对点

TX、RX:

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)即通用同步异步收发器。它是一种通用串行通信接口,可用于微控制器与其他设备间的串行数据传输。USART既能工作在异步模式(不需要外部时钟信号),实现与各种没有同步时钟要求的设备通信;也能工作在同步模式,通过外部时钟信号来实现更高的数据传输速率和更精确的同步。在异步模式下,它使用两根线(TX(Transmit)发送线和RX (Receive)接收线)进行数据传输,数据按照一定的格式(起始位、数据位、校验位、停止位)进行封装和传输。在同步模式下,除了TX和RX线外,还需一根时钟线(SCK)来同步数据传输。它常用于连接计算机、传感器、调制解调器等设备。 

SCLSDA:

I2C 是一种串行通信协议,用于连接微控制器、传感器、显示屏等设备之间进行通信。在 I2C 中,SCL (Serial Clock) 和 SDA (Serial Data) 是两根信号线,负责在设备之间传输数据和同步时钟信号。

  • SCL (Serial Clock):这是一个时钟信号线,控制数据传输的时序。所有设备都通过这个时钟信号来同步数据传输。

  • SDA (Serial Data):这是一个数据信号线,用于在设备之间传输数据。设备通过 SCL 信号线上的时钟信号来同步 SDA 数据信号的传输。

通过 SCL 和 SDA 两根信号线,I2C 支持多个设备在同一总线上进行通信,并且通过地址识别不同设备。这使得 I2C 协议在连接多个设备时非常灵活和方便。

SCLKMOSIMISOCS:

SPI(Serial Peripheral Interface)是一种高速的、全双工、同步的通信总线。

SCLK(Serial Clock):即串行时钟线,用于在主设备和从设备之间同步数据传输,主设备通过它产生时钟信号,控制数据的传输速率和节奏。

MOSI(Master Output Slave Input):主设备输出从设备输入线,主设备通过这条线向从设备发送数据。

MISO(Master Input Slave Output):主设备输入从设备输出线,从设备通过这条线向主设备返回数据。

CS(Chip Select):片选线,也叫从机选择线,用于主设备选择与之通信的特定从设备,当主设备要与某个从设备通信时,会将该从设备对应的CS线拉低,选中该从设备 。

CAN_HCAN_L:差分数据脚

CAN(Controller Area Network)即控制器局域网,是一种用于实时应用的串行通讯协议总线,最初由德国博世公司开发,用于汽车内部的电子系统之间的数据传输。

它具有以下特点:

1. 多主控制:网络上任意一个节点均可在任意时刻主动向网络上其他节点发送信息,而不分主从,通信方式灵活。

2. 报文标识符:CAN协议采用标识符来区分不同的信息,而非节点地址,标识符不代表节点地址,而是表示数据的含义,通过设置标识符的优先级,可实现不同数据的优先传输。

3. 可靠性高:CAN协议具有完善的错误检测和处理机制,当检测到错误时,会自动重发数据,以确保数据传输的准确性。

4. 通信速率快:CAN总线的通信速率在不同的网络规模下有所不同,最高可达1Mbps(在40米距离内),适用于对实时性要求较高的应用场景。

5. 节点数量多:CAN总线可挂接的节点数主要取决于总线驱动电路,目前可达110个。

CAN通信广泛应用于汽车电子、工业自动化、智能楼宇、医疗器械等领域。例如在汽车中,它连接发动机控制单元、防抱死制动系统、仪表盘等多个电子控制单元,实现各部件之间的高效数据交互。

DPDM:

USB(通用串行总线)中的 DP 和 DM 分别指的是数据线的正、负差分信号线。差分信号传输是一种利用两根信号线之间的电压差来传输数据的方式,具有抗干扰能力强的特点。DP 为正差分信号线,DM 为负差分信号线,它们共同负责在 USB 设备与主机之间传输数据。在 USB 通信过程中,数据通过 DP 和 DM 线以差分信号的形式进行传输,接收端通过检测 DP 和 DM 之间的电压差来还原数据。

全双工和半双工的区别:

全双工和半双工是通信领域中两种不同的数据传输模式,它们的区别如下:

  • 数据传输方向:全双工允许数据在两个方向上同时传输,就像双向车道,车辆可以同时双向行驶。例如打电话时,通话双方能同时说话和倾听。而半双工只能在一个方向上传输数据,同一时间内,发送方和接收方不能同时进行数据传输,如同单车道,车辆只能单向行驶,在某一时刻要么是 A 向 B 发送数据,要么是 B 向 A 发送数据。
  • 通信效率:全双工由于能同时双向传输数据,通信效率较高,适用于对实时性要求高且数据量较大的场景,如高速网络通信、视频会议等。半双工通信效率相对较低,因为数据需要分时在两个方向传输,适用于数据传输量不大且对实时性要求不是极高的场景,像早期的对讲机通信,一方讲话时另一方只能听,说完后切换到接收模式。
  • 硬件复杂度:全双工通信需要更复杂的硬件电路来支持同时双向传输,成本相对较高。半双工硬件相对简单,成本较低。

 单工通信是指数据只能在一个方向上传输,就像广播电台向听众广播消息,听众无法向电台发送反馈,是一种单向的传输方式。

同步通信和异步通信: 

  • 同步通信:有时钟线指引进行数据采样。
  • 异步通信:没有时钟线指引进行数据采样。

同步通信和异步通信是数据通信的两种重要方式,区别如下:

  • 时钟信号:同步通信依靠统一的时钟信号来协调发送端和接收端的数据传输。发送端和接收端按照精确的时钟节拍来发送和接收数据,如同大家按照同一个指挥者的节奏行动。例如在高速数据总线中,使用同步通信能确保数据快速且准确地传输。而异步通信不需要统一的时钟信号,数据传输以字符或字节为单位,每个字符或字节前后会附加起始位和停止位,接收端根据这些标志位来识别数据的开始和结束,就像每个人按照自己的节奏,但在交接时通过特定信号来沟通。比如串口通信常采用异步通信方式。
  • 传输效率:同步通信由于数据传输按统一时钟节拍,没有额外的起始和停止位开销,所以在数据量大、传输速率要求高的场景下,传输效率较高。而异步通信每个字符或字节都有起始位和停止位,增加了传输的额外开销,传输效率相对较低,适用于数据量较小、传输速率要求不高的场景。
  • 硬件复杂度:同步通信需要精确的时钟同步机制,硬件设计相对复杂,成本较高,对线路的质量和稳定性要求也较高。异步通信硬件设计相对简单,成本较低,对线路要求相对宽松。

单端信号与差分信号:

串口引脚的高低电平对应GND的电压差,所以单端信号的通信的双方必须共地,就是把GND连接在一起。不接地无法通信。

  • 单端信号是指仅使用一根信号线来传输信号,以地为参考电平。发送端通过改变该信号线上的电压来表示不同的逻辑状态,接收端则将信号线上的电压与地电平进行比较,从而判断信号的逻辑值。例如,在常见的 TTL(晶体管 - 晶体管逻辑)电平标准中,单端信号以高于某个阈值(如 2V)表示逻辑高电平,低于某个阈值(如 0.8V)表示逻辑低电平。 
  • 差分信号是一种信号传输的方法,它利用两根信号线之间的电压差来表示信号。

 点对点通信和多设备通信:

点对点通信和多设备通信是两种不同的通信模式,它们的区别如下:

  • 通信对象:点对点通信是指在两个特定设备之间进行的通信,就像两个人之间一对一的对话。例如,手机与蓝牙耳机配对后,二者之间的通信就是点对点通信。多设备通信则涉及多个设备之间的信息交互,如同一场多人会议,多个参与者都能交流信息。比如,在一个智能家居系统中,智能音箱、智能灯光、智能门锁等多个设备之间相互通信。
  • 通信方式与协议:点对点通信相对简单,通常采用较为直接的通信协议,双方设备直接进行数据传输和交互。例如蓝牙的点对点连接,使用特定的蓝牙协议进行数据传输。多设备通信更为复杂,需要更复杂的通信协议来协调各设备之间的通信,确保数据准确无误地在不同设备间传输。例如,在物联网场景中,多个传感器和执行器通过 MQTT 等协议进行多设备通信,该协议要处理设备的发现、连接、数据路由等多种功能。
  • 应用场景:点对点通信适用于对隐私和安全性要求较高,且只需要两个设备交互信息的场景,如移动支付时手机与 POS 机的通信。多设备通信适用于需要信息共享、协同工作的场景,如智能工厂中各种生产设备之间的通信,以实现自动化生产流程。

 串口通信

  • 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信
  • 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力 

串口通信是一种常用的串行通信方式,数据按位顺序逐位传输。其特点如下:

  • 通信方式:通常采用异步通信,以字符或字节为单位传输数据,每个字符或字节前后附加起始位和停止位,不需要统一时钟信号,接收端依据这些标志位识别数据的开始与结束。比如计算机与外部设备如打印机、调制解调器等常通过串口通信连接。
  • 传输速率:串口通信速率相对较低,常见的波特率有 9600、19200、115200 等。波特率表示单位时间内传输的码元数,不同的应用场景选择不同波特率,如低速数据采集可选用 9600 波特率。
  • 通信接口:常见的串口通信接口有 RS - 232、RS - 485、RS - 422 等。RS - 232 一般用于短距离(小于 15 米)通信,电平标准与 TTL 电平不兼容;RS - 485 适用于远距离(可达 1200 米)、多节点的通信场景,支持半双工通信;RS - 422 类似 RS - 485,但支持全双工通信。

硬件电路 

  • 简单双向串口通信有两根通信线(发送端TX和接收端RX)
  • TX与RX要交叉连接
  • 当只需单向的数据传输时,可以只接一根通信线
  • 当电平标准不一致时,需要加电平转换芯片,相同电平才能互相通信

 

 电平标准

电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

  • TTL电平:+3.3V或+5V表示1,0V表示0
  • RS232电平:-3~-15V表示1,+3~+15V表示0
  • RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号) 

 有关串口和电平标准可参考此文章区分:串口,COM口,UART,USART_uart和串口的区别-CSDN博客

串口参数及时序 

  • 波特率:串口通信的速率
  • 起始位:标志一个数据帧的开始,固定为低电平
  • 数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
  • 校验位:用于数据验证,根据数据位计算得来
  • 停止位:用于数据帧间隔,固定为高电平 

 

 通用同步异步收发器(USART)

 

 

串口时序 

 

 串口外设

 USART简介

  • USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器
  • USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里
  • 自带波特率发生器,最高达4.5Mbits/s。相当于一个分频器,比如APB2总线给一个72MHz的时钟频率,波特率发生器进行时钟分频,得到我们想要的波特率时钟
  • 可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
  • 可选校验位(无校验/奇校验/偶校验)
  • 支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN
  • STM32F103C8T6 USART资源: USART1(APB2总线设备)、 USART2、 USART3 (两个是APB1总线的设备)

硬件数据流控

 USART框图

 

 

引脚定义表:  

 

引脚复用 

 USART基本结构 

 数据帧

 

 

 起始位侦测

 

数据采样 

1个停止位:对1个停止位的采样在第8,第9和第10采样点上进行 

当在接收帧中检测到噪音时,在RXNE位的上升沿设置NE标志

 

 

 波特率发生器

 

 

 

实际使用库函数会帮我们自动算。 

CH340模块原理图:32:19