当前位置: 首页 > news >正文

单片机通信协议--USART(串口通信)

文章目录

  • 单片机通信协议--USART(串口通信)
    • 通信协议
      • 并行通信
      • 串行通信
    • USART(串口通信)
      • 通信方式
      • 发送接收原理图
      • 数据格式
      • 通信流程
    • USART 同步/异步收发器
      • USART简介
      • USART框图
      • USART模块有哪些引脚
      • USART引脚在哪?如何配置?

单片机通信协议–USART(串口通信)

通信协议

作为讲解单片机通信协议的第一篇,先来简单介绍一下是通信协议

单片机(微控制器)中的通信协议是实现单片机与外设(传感器、显示屏、其他单片机等)或外部系统之间数据交换的规则集合,包括信号时序、数据格式、错误处理等。这些协议根据硬件接口、传输方式和应用场景的不同,可分为并行通信串行通信两大类,其中串行通信因布线简单、成本低,在单片机中应用更广泛

并行通信

并行通信通过多根数据线同时传输多位数据(如 8 位、16 位),配合时钟线和控制线实现同步;并行通信的典型应用有单片机与并行 LCD1602 显示屏的连接(8 位数据总线 + RS、RW、E 控制信号)、单片机内部外设(如 RAM、Flash)与 CPU 的通信,在这里我们不做过多介绍

串行通信

串行通信通过单根或两根数据线逐位传输数据,布线简单(通常 2-4 根线),适合中短距离通信,是单片机外部通信的主流方式。根据是否需要时钟线同步,又分为异步通信同步通信。串行通信协议中常用的协议有异步串行通信(UART/USART)SPI(Serial Peripheral Interface,串行外设接口)I2C(Inter-Integrated Circuit,集成电路总线)单总线协议(1-Wire),下面对这四种协议进行对比:

对比维度USART(异步串行)IIC(I2C)SPI1-Wire(单总线)
硬件接口线数2 线(TX 发送、RX 接收,全双工)2 线(SCL 时钟、SDA 数据,半双工)4 线(SCLK 时钟、MOSI 主发、MISO 主收、CS 片选)1 线(DATA 数据,双向)+ 上拉电阻
同步方式异步(无时钟线,靠波特率同步)同步(SCL 时钟线,主机控制)同步(SCLK 时钟线,主机控制)异步(主机通过时序控制同步)
传输速率中等(通常≤115200bps,最高几 Mbps)中低速(标准 100kbps,快速 400kbps,高速 3.4Mbps)高速(可达几十 Mbps,取决于硬件)低速(通常≤16kbps)
拓扑结构点对点(多设备需额外控制)多主多从(通过 7/10 位地址区分设备)一主多从(通过 CS 片选区分设备)一主多从(通过 64 位 ROM 地址区分设备)
数据方向全双工(同时收发)半双工(同一时间只能收或发)全双工(同时收发)半双工(同一时间只能收或发)
错误检测机制可选校验位(奇 / 偶 / 无),无应答机制内置应答(ACK/NACK),部分设备支持 CRC无内置机制,需软件实现校验简单 CRC 校验(部分设备支持)
抗干扰能力一般(单端信号)一般(单端信号,线少干扰相对较低)一般(单端信号)较弱(单线传输,易受干扰)
典型应用场景调试打印、蓝牙 / GPS 模块、上位机通信温湿度传感器、EEPROM、RTC 实时时钟SPI Flash、OLED 屏、高速 ADC/DAC、无线模块单总线温度传感器(DS18B20)、身份识别芯片
优势硬件简单,点对点通信方便,无需时钟线布线极简(2 线),多设备互联成本低速率高,全双工,适合大数据传输布线极致简单(1 线),适合低成本场景
劣势速率有限,多设备通信复杂速率中等,总线竞争需仲裁线数较多,多从机时需多个 CS 引脚速率极低,抗干扰差,通信效率低

对以上表格中的一些名词进行解释:

名词解释
【全双工】由两根数据线,一根用来接收,一根用来发送
【半双工】一根数据线,既可以用来发送,也可以用来接收
【单工】无法做到同时发送和接受数据
【同步通信】有时间线,不需要约定采样频率
【异步通信】需要约定合适的采样频率,用于在约定的频率内采集数据

USART(串口通信)

USART(Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步 / 异步收发器)是单片机中常用的串行通信协议,支持异步通信(最常用)和同步通信两种模式,其中异步模式(通常简称 UART)因硬件简单、使用灵活,在嵌入式领域应用最广泛

通信方式

  • 异步模式(UART):无需时钟线,通过波特率(收发双方约定的传输速率)同步数据,仅需 2 根线(TX 发送、RX 接收)即可实现全双工通信
  • 同步模式(USART):需额外时钟线(CLK),由主机提供时钟信号同步,适合更高精度的高速通信(较少用)

发送接收原理图

在这里插入图片描述

其中VCC和GND用于供电,TX和RX用于收发数据,设备1的TX要与设备2的RX相接,设备1的RX要与设备2的TX相接,它们的高低电平是相对于GND的。电平标准是数据0和数据1的表达方式,是传输线缆中认为规定的电压和数据的对应关系,串口常用的电平标准有以下的几种:

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

数据格式

每帧数据由以下部分组成(按传输顺序):

  • 起始位:1 位低电平(逻辑 0),标志数据帧开始
  • 数据位:5-9 位(通常 8 位,即 1 字节),表示有效数据(可配置高位在前或低位在前)
  • 校验位(可选):1 位,用于简单错误检测,支持奇校验(数据位中 1 的个数为奇数)、偶校验(1 的个数为偶数)或无校验
  • 停止位:1-2 位高电平(逻辑 1),标志数据帧结束,保证帧间隔

例:常见配置为 “8 位数据位 + 无校验 + 1 位停止位”,总帧长 10 位:

在这里插入图片描述

通信流程

在没有进入起始位之间电平的极性呈现出高电平,在进入起始位后电平转换为低电平表示开始发送数据,数据呈现出8个字节一位的特性,进入最后一位后低电平转化为高电平,方便下一次数据的发送,大概原理入下图所示

在这里插入图片描述

USART 同步/异步收发器

USART简介

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发器是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里

  • 自带波特率发生器,最高达4.5Mbits/s
  • 可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
  • 可选校验位(无校验/奇校验/偶校验)
  • 支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN
  • STM32F103C8T6 USART资源: USART1、 USART2、 USART3

USART框图

在这里插入图片描述

将框图简化后得到如下图示:

在这里插入图片描述

当我们发送数据的时候,数据会放在发送数据寄存器中,USART模块会通过TX引脚发送数据对应的波形,对侧设备的RX引脚接收到波形之后,通过解析可以拿到数据

当我们接收数据的时候,会从 RX引脚得到波形图,依据双方规定的数据帧格式进行解析得到数据,然后把数据放在接收数据寄存器中,我们就可以读到数据

通过配置波特率寄存器中的值来设置分频器的值,时钟频率除以分频器中的值再除以16就可以得到波特率。例如 当我们需要把波特率设置为115200时,STM 32的时钟频率为72MHz,我们就可以反向推出波特率寄存器中的值:

在这里插入图片描述

右上角的TE,TxC等都是USART中的状态寄存器,我们可以通过里面的值来判断收发状态:

编号标志位名称英文全称功能说明置 1 条件
Bit 5RXNERead Data Register Not Empty接收数据寄存器非空(有数据可读)接收到 1 帧完整数据,存入接收缓冲区
Bit 6TCTransmission Complete发送完成(整帧数据发送结束)发送缓冲区空 + 移位寄存器(发送移位)也空(即最后 1 位已发送)
Bit 7TXETransmit Data Register Empty发送数据寄存器空(可写新数据)发送缓冲区的数据已转移到移位寄存器,缓冲区空闲
Bit 3FEFraming Error帧错误(接收时检测到无效停止位)接收数据时,停止位不是规定的高电平(如配置 1 个停止位,但实际未检测到高电平)
Bit 4OREOverrun Error溢出错误(接收缓冲区未读取,新数据覆盖旧数据)接收缓冲区已满(RXNE=1),但新数据已接收完成,旧数据被覆盖
Bit 2NENoise Error噪声错误(接收数据时检测到干扰)接收数据过程中检测到不符合波特率的噪声信号(仅异步模式)
Bit 1PEParity Error奇偶校验错误(启用校验时,校验位不匹配)接收数据的校验位与计算出的校验位不一致(需提前配置校验模式)

USART模块有哪些引脚

在这里插入图片描述

  • USARTx_Tx:数据的发送引脚,将数据发送出去
  • USARTx_Rx:数据的接收引脚,用来接收数据
  • USARTx_CTS:全称 “Clear To Send”(清除发送),作用是接收方通知发送方 “是否允许继续发送数据”,避免因接收方缓冲区满导致数据溢出(比软件流控更高效、实时)
  • USARTx_RTS:全称 “Request To Send”(请求发送),与USARTx_CTS 是配对使用的 “双向控制信号”;核心作用是 发送方主动通知接收方 “我要发数据了,请你准备接收”,配合 CTS 完成全双工通信的双向流量控制,避免数据溢出
  • USARTx_CK:USARTx_CK 是 USART(通用同步异步收发传输器)同步模式(Synchronous UART,简称 Sync UART) 专用的时钟信号引脚,全称 “Clock”,核心作用是为同步通信提供统一的时钟基准—— 区别于我们常说的异步 UART(无需时钟,靠波特率同步),同步 UART 需通过 CK 信号实现发送方与接收方的严格时序对齐,提升通信速率和可靠性

USART引脚在哪?如何配置?

引脚类型默认映射(无重映射)重映射(Partial Remap)配置要点(GPIO / 寄存器)
TX(发送)PA9PB6配置为「复用推挽输出」(GPIO_MODE_AF_PP);重映射需使能 AFIO_USART1_REMAP 位
RX(接收)PA10PB7配置为「复用输入」(GPIO_MODE_AF_INPUT);重映射需使能 AFIO_USART1_REMAP 位
CK(同步时钟)PA8-(无重映射引脚)仅默认映射有效;配置为复用推挽输出(主)/ 复用输入(从);异步模式可悬空
RTS(请求发送)PA12PB14需启用 USART_CR3 的 RTSE 位;配置为复用推挽输出;重映射需使能 AFIO_USART1_REMAP 位
CTS(清除发送)PA11PB13需启用 USART_CR3 的 CTSE 位;配置为复用输入;重映射需使能 AFIO_USART1_REMAP 位

通过查看stm32f103c8t6的引脚分布图可以找到USART1的引脚映射,注意此时输出和输入都应该选择复用模式,因为CPU不是直接向引脚写数据,而是操作USART模块写;表格中的重映射作用为:当PA9这类默认映射引脚被占用时,使能 AFIO_USART1_REMAP 位,就可以通过PB6发送数据

在这里插入图片描述

http://www.dtcms.com/a/586164.html

相关文章:

  • 1.21 Profiler提供的API
  • 网站建设维护的知识wordpress搜索被攻击
  • 网站的文件夹wordpress引导页
  • 自然语言处理实战——基于k近邻法的文本分类
  • 柳南网站建设珠海市横琴建设局网站
  • 11.8 脚本网页 塔防游戏
  • FreeRTOS 使用目录
  • 网站代码框架云南安宁做网站的公司
  • 企业网站源码简约郑州住房城乡建设官网
  • 研发地网站建设第三次网站建设的通报
  • 企业网站分为哪四类中国与俄罗斯最新局势
  • 为什么最近好多网站维护企业所得税优惠政策2021年小微企业
  • Java基础——集合进阶2
  • Git 中 behind 和 ahead of 含义详解:分支同步状态一眼看透
  • 青岛公司建站婚纱网
  • 深入解析 LeetCode 1470:重新排列数组
  • 第23集科立分板机:自动分板机操作规范指南
  • 基于ZYNQ的软硬件协同加速实时高清视频处理系统:从概念到实现
  • Linux 软链接与硬链接详解:Android 系统源码开发实战指南
  • ModelScope使用技巧总结详解
  • 手机网站自动适配二手电商怎么做
  • 定积分的几何应用(一):平面图形面积计算详解
  • Kubernetes V1.24+ Docker运行时 grafana容器指标显示异常
  • 建设网站的风险wordpress上一篇文章
  • 面对撞库 网站应该怎么做珠海网站建设公司怎么样
  • STM32 F103外部晶振8MHz改为12MHz,如何配置?
  • 网站建设必须要具备哪些知识自己做的视频可以传别的网站去吗
  • 网站报名照片怎么做广告设计公司员工荣誉证书
  • 常见的静态网站开发技术邢台网站建设优化
  • 如何做二维码链接网站做网站需要提供些什么页面