目录

一.通信领域基础知识介绍

1.1 串行和并行通信

1.2 同步和异步传输

1.3 串口和COM口

1.4 通信协议标准以及物理层定义

1.5 物理层协议之TTL / RS-232 / RS-485

二.USART介绍

2.1 USART特点介绍

2.2 UART和TTL / RS-232 / RS-485

2.3 USART硬线流控介绍

2.4 USART帧格式介绍

2.5 USART对比其他总线

三.USART工程配置及使用

3.1 USART数据传输方式配置说明

3.2 USART中断配置配置说明

3.2.1 USART常用中断

3.2.2 USART中断配置实战说明

3.2.3 DMA常用中断

3.2.4 DMA中断配置实战说明

四.USART异步模式同步机制介绍


一.通信领域基础知识介绍

介绍USART之前,我们需要先了解一些通信协议领域的通用知识。

1.1 串行和并行通信

  • 串行:串行接口的基本传输单位是1位,即每次只能传输一个bit,通过协议组合成帧进行传输
  • 并行:一次性可以传输多个位,理论上每个位需要一条独立线束

1.2 同步和异步传输

Synchronous / Asynchronous 同步/异步,通信层面的异步/同步概念与软件层面不同:

  • 软件层面
    • 同步处理:同步调用意味着调用方主动等待并立即获得结果。
    • 异步处理:异步调用意味着调用方发起请求后立即返回,结果通过事件、回调或轮询等方式在后续通知。
  • 通信层面
    • 同步通信:通信双方使用同一根时钟线来控制通信,理论上有时钟线的情况下双方的节奏是一致的,因此称为同步。
    • 异步通信:双方互相不知道对方时钟频率,通过一些设计来规避双方的时钟不一致问题。

1.3 串口和COM口

  • 串口(Serial Port)通用称呼,是一个广义概念,严格来说所以串行通道都可以称之为串口,包括USB。但是在嵌入式MCU领域,一般说起串口都是默认指的USART的异步模式
  • COM:COM代表计算机中的逻辑串口设备名称(如COM1, COM2),是电脑对串口的抽象。电脑上的COM口一般就是通过USART实现的。

1.4 通信协议标准以及物理层定义

按照目前国际标准,一般将通信协议划分为5层(实际上广泛使用的标准)或者7层(ISO推荐)协议。按照从底层到上层分为:

  • 物理层
  • 数据链路层
  • 传输层
  • 网络层
  • 会话层
  • 表示层
  • 应用层

其中物理层定义了以下内容:

特性类别定义说明
过程特性比特在时间轴上的传输方式,如同步/异步、采样点、位时序
硬件特性接口芯片、收发器、电路驱动能力、端口数量
机械特性物理连接器、针脚排列、接口规格
电气特性电压电平范围、电流驱动、抗干扰能力、差分/单端方式
功能特性通道容量、点对点/多点拓扑、误码率、最大距离

1.5 物理层协议之TTL / RS-232 / RS-485

这三者都是物理层定义,规定了通信物理层定义

概念简要说明电气特性

TTL(Transistor-Transistor Logic)

原生电平

逻辑1:3.3V 或 5V,逻辑0为:0V

RS232

电压转换逻辑1:-3V 到 -15V逻辑0:+3V 到 +15V

RS485

电压转换+差分电平

逻辑 1:B线电压比A线电压高,典型差值 >+200mV。

逻辑 0:A线电压比B线电压高,典型差值 >+200mV。

其共模电压范围通常为 -7V 到 +12V


二.USART介绍

2.1 USART特点介绍

USART(即Universal Synchronous / Asynchronous Receiver/Transmitter,通用同步/异步收发器),其特性如下:

  • 串行通信
  • 同步/异步传输:支持同步传输(USART同步模式),以及异步传输(USART异步模式)
  • 物理层以及数据链路层协议:只负责数据的转发,不涉及应用逻辑。其物理层定义不完整,因此需要搭配其他物理层协议使用,如TTL、RS-232、RS-485
  • 线束数量不固定,可选搭配如下
    • Tx/Rx:数据传输线
    • GND:当通信双方不直接公地,一般需要增加GND线作为参考电平以保持通信稳定性
    • CTS/RTS:流控线,可选非标准协议定义内容,用于控制通信双方的传输,防止数据溢出或丢失
    • CLK:USART可使用同步模式进行通信,此时需要额外的时钟线

注意!!

USART的硬线流控CTS/RTC以及USART的同步传输模式,在实际项目中很少使用,因为这两者都会增加线束的数量、传输协议的复杂度。而USART最大的优点就是协议的简单以及线束数量少(最少只需要两根)。


2.2 UART和TTL / RS-232 / RS-485

USART的物理层定义并不完全,如下:

特性类别USART 覆盖情况缺失说明
过程特性完整无缺失,USART 定义了起始位、数据位、校验位、停止位,但功能简单
硬件特性缺失USART 本身不定义具体硬件,需依赖 TTL/RS232/RS485 芯片
机械特性缺失USART 不定义连接器规格,实际由外部标准决定
电气特性缺失USART 不规定电平和驱动能力,需要 TTL/RS232/RS485 补充
功能特性部分缺失USART 默认点对点,最大速率/距离未标准化,误码检测只有奇偶校

因此实际使用过中必须搭配一个物理层协议使用,常用搭配如下:

概念简要说明电气特性与USART的关系

TTL(Transistor-Transistor Logic)

原生电平

逻辑1:3.3V 或 5V,逻辑0为:0V

MCU内部USART外设输出的就是TTL电平。

优点:无需电平转换芯片,硬件成本低

缺点:抗干扰能力和传输距离比RS 232和RS 485差。

RS232

电压转换逻辑1:-3V 到 -15V逻辑0:+3V 到 +15V

用于USART通信时,将原生TTL电平进行了电压转换。

优点RS 232的电压范围更广,抗干扰更强。

缺点:需要额外的电平转换芯片,增加了硬件成本。

RS485

电压转换+差分电平逻辑1:-3V 到 -15V逻辑0:+3V 到 +15V

用于USART通信时,将原生TTL电平进行了电压转换,并变成了差分电平。

优点:因为使用差分电平,抗干扰能力极强,且传输距离得到大大提升。支持多点通信。

缺点:需要额外的电平转换芯片以及线束,且在车载电子领域和CAN定位重合且竞争

注意

在汽车电子领域,RS-485的生态位主要被CAN占据,其出场率较低。


2.3 USART硬线流控介绍

由于USART协议

CTS(Clear To Send)和RTS(Require To Send),不属于标准USART规定内容。本质上是通过硬线指示来完成流控效果,示意如下:

设备1设备2说明
RTS(发)CTS(收)当设备2收到设备1的RTS通知(一般是高电平到低电平跳变)时,代表设备1准备好接收数据了,设备2此时可以发送数据
CTS(收)RTS(发)当设备1收到设备2的RTS通知(一般是高电平到低电平跳变)时,代表设备2准备好接收数据了,设备1此时可以发送数据

2.4 USART帧格式介绍

参数说明
开始位1 bit,当USART数据传输线不传输数据时,它通常保持在高电压电平。为了开始数据传输,发送方将传输线从高电平拉至低电平一个时钟周期。当接收USART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位。

数据位 (Data Bits)

8bit 或 9bit,定义一帧有效数据,数据位包含要传输的实际数据。在通常情况下,数据首先以最低有效位发送,并且长度使用8位

停止位 (Stop Bits)

1至2bit,为了通知传输数据包的结束,USART发送端会将数据传输线驱动至高电压至少1到2位持续时间

校验位 (Parity)

1bit,可选,保证数据完整性。奇偶校验位是接收USART在传输过程中判断是否有任何数据发生变化的一种方法。电磁辐射、不匹配的波特率或长距离传输时,数据都有可能发生变化。接收USART读取数据帧后,它会计算值为1的位数,并检查总数是偶数还是奇数。如果奇偶校验位为0(偶校验),则数据帧中的1位应总计为偶数。如果奇偶校验位是1(奇校验),则数据帧中的1位应总计为奇数。当奇偶校验位与数据匹配时,USART知道传输没有错误。


2.5 USART对比其他总线

总线使用场景通信距离线束数量通信方向

通信单

元数量

同步&

异步

USART微控制和外部设备、模块之间、调试接口建议小于1.5mTx+Rx+GND(可选)全双工1 对 1异步
SPI(Serial Peripheral Interface)主要用于嵌入式系统内主芯片与外围芯片之间的短距离、高速通信建议小于3m

CS:片选线,选择和那个从模块通信;

MOSI:主模块给从模块发送数据

MISO:从模块给主模块发送数据

CLK:时钟线

全双工1(主)对N(从)同步
IIC(Inter-Integrated Circuit)适用于连接微控制器和各种外部设备,如温度传感器、EEPROM、实时时钟等,使用两根线进行双向通信。 建议小于3m

数据传输线+CLK

半双工

N(多主)对N(多从)

同步
LIN(Local Interconnect Network)主要用于汽车电子系统中的低速通信,如车门控制、座椅控制等。理论可达40mTx/Rx(共用一根) + GND(可选)半双工1(主)对N(从)异步
CAN(Controller Area Network)广泛用于汽车、工业控制和其他分布式系统中,具备高可靠性和抗干扰能力,支持多个设备在同一总线上通信。理论可达40mCAN_H+CAN_L半双工

N对N

(不分主从)

异步

注意

  • 传输速率一般来讲:SPI>IIC>USART>CAN>LIN。
  • SPI/IIC一般多用于片上通信,USART多用于片上通信及调试接口,CAN/LIN用于车辆间ECU远距离通信。
  • USART 更偏向点对点、调试和简单设备通信,其通信距离(短)和稳定性(稍显不足)使得它的竞争对手主要是SPI和IIC。

三.USART工程配置及使用

3.1 USART数据传输方式配置说明

属性说明
波特率

波特率配置一般由多个寄存器来对时钟进行分频,已达到更精准的频率控制。比如如下形式:

波特率 = 所选定外设时钟频率 / (波特率整数部分 + (波特率小数分子部分) / 波特率小数分母部分)

具体配置形式不固定,只需要记住可能存在多个参数配置来控制精度就行,本质上都是外设时钟 / 预分频值

停止位需要指定停止位的长度,可选范围是1bit / 1.5bit / 2bit,部分芯片可能不支持1.5bit模式
数据位定义

需要定义数据位是8位还是9位,如果是9位还需要指定第9位的含义。不同芯片对于第9位的支持情况不一样,这里按照最大组合情况介绍

  • 第9位是ODD(偶)校验
  • 第9位是EVEN(奇)校验
  • 第9位发送的是地址(此选项是给RS-485用的,因为RS485支持多节点通信,使用节点地址区分不同节点,此时该位可用于判断是数据帧还是用来标识节点地址的地址帧
  • 第9位发送的是数据
  • 无第9位
传输次序(接收/发送)

选择大小端模式,即接收/发送时是高Bit位(MSB)还是低Bit位(LSB)

传输模式

选择同步还是异步传输。

  • 同步传输:USART同步模式,此时会有时钟线,但是USART本身不是流水线搬运,无法像SPI那样一根时钟线控制Tx和Rx。因此此模式下一般是半双工,除非有两根时钟线或者芯片的USART驱动有特殊处理
  • 异步传输:USART异步模式,就是常说的全双工异步模式
时钟极性选择数据在时钟上升沿还是下降沿同步(全双工异步模式不需要此配置)。
传输方向选择传输方向,可以配置仅收或者仅发
USART通道一般外设提供不止一组USART硬件通道,需要选择使用哪一个硬件通道
时钟源选择选择USART的时钟源,为USART通信提供时钟参考基准,以满足波特率要求
传输类型
  • DMA
  • 中断
硬件流控

是否支持硬件流控,可以配置只支持CTS或者RTS,即单向流控

硬件FIFO模式是否启用硬件FIFO,并配置深度

3.2 USART中断配置配置说明

3.2.1 USART常用中断

信号意义触发条件说明
RXNE/RDR接收到新数据RX 寄存器中有未读取字节CPU读取数据寄存器,防止覆盖。DMA场景不需要。
TXE发送数据寄存器空TX 寄存器空,可以写入新的待发送数据(前面数据不一定发送完成)

CPU 写入下一个字节,DMA场景不需要

TC/TFE发送完成

前面一帧数据发送完成

标记发送结束,释放缓冲区
IDLE总线空闲接收线空闲一段时间(通常是一帧位时间)标记帧结束或数据终止
ORE接收溢出RX 寄存器未及时读取错误处理
NE噪声错误总线噪声导致接收错误错误处理
FE帧错误停止位或字节长度错误错误处理
PE奇偶校验错误奇偶位不匹配错误处理

3.2.2 USART中断配置实战说明

传输类型TXETCIDLERXNE
RS-485半双工 + DMA不使用,DMA直接判断数据必须使用,用于通知CPU判断是否要切换传输方向必须使用一般不需要,方向切换一般靠TC进行。
RS-485半双工 + 非DMA推荐使用,通知CPU填充发送数据(理论上TXE会比TC触发早,会更快一些)。必须使用,用于通知CPU判断是否要切换传输方向必须使用推荐使用,用于判断是否需要切换方向
普通传输 + DMA不使用,DMA直接判断数据必须使用,TC在此模式下不再是字节级别通知,而是传输单位的通知。这个"传输单元"取决于字长、传输计数、循环/块模式、DMA FIFO配置。必须使用一般不需要,数据搬运由DMA进行
普通传输+ 非DMA推荐使用,通知CPU填充发送数据(理论上TXE会比TC触发早,会更快一些)。不使用,使用TXE发送数据更快必须使用必须使用,因为没有DMA,需要CPU自行处理数据

3.2.3 DMA常用中断

中断名称触发条件典型用途
Transfer CompleteDMA 完成搬运CPU 处理已搬运完成数据或继续下一块搬运
Half TransferDMA 完成缓冲区一半CPU 提前处理一半数据,保持 RX 连续或平滑 TX 输出
Transfer ErrorDMA 地址错误、FIFO 溢出、配置错误错误处理

3.2.4 DMA中断配置实战说明

  • USART错误类型中断依实际项目情况选择是否使能:ORE、NE、FE、PE
  • 推荐基于DMA传输:对于高速或大数据量传输,强烈推荐使用DMA以减轻CPU负担(当不使用DMA时,MCU只有1~2个停止位的反应时间)并降低数据丢失风险。对于低速简单应用,可根据情况选择中断或轮询方式。
  • USART中断配置建议
    • USART发送端
      • DMA传输完成中断
      • 半传输中断(可选,用于连续大数据流平滑发送)
    • USART接收端
      • 理论最优(实现复杂,设计不过关容易出问题,比如中断嵌套)
        • 半传输中断(防止数据溢出,给CPU预留处理时间)
        • 传输完成中断(通知CPU全部处理完成)
        • USART IDLE中断(用于检测帧结束或总线空闲,防止数据量不够触发半传输中断)。
      • 项目中常用(实现简单,绝大部分场景够用)
        • 仅仅使用IDLE中断,不使用DMA全传输和半传输中断。

DMA详细介绍点此:【嵌入式原理系列-第七篇】DMA:从原理到配置全解析


四.USART异步模式同步机制介绍

在异步模式下,USART总线空闲时默认高电平。

发送方准备发送数据时(假设数据位为8位,不无奇偶校验位),会将总线电平拉低一个位时间,称为起始位,起始位之后开始进行数据位的传输,传输位传输完成后,最后再将总线拉高一个位时间称之为结束位。

每次起始位接收方会进行一次位同步,保证双方时序一致。通常USART异步模式下,采样点位于位中间,即0.5个bit处。

结合以上逻辑,可知异步模式下双发双方的速率可以有差距,但是必须保证速率差距在一定范围内。范围计算如下:

  • 如果发送方速率大于接收方速率:1 <= (发送方速率÷接收方速率)<= (11÷10.5)。即发送方速率不能比接收方快4.76%以上
  • 如果发送方速率大于接收方速率:(10÷10.5) <= (发送方速率÷接收方速率)<= 1。即发送方速率不能比接收方慢4.76%以上

总结,8位数据位+1位停止位+无校验位情况下,双方速率差应该小于4.76%。其他帧格式组合算法类似。


想了解更多嵌入式技术知识,请点击阅读我的其他文章

烟花的文章链接集合-CSDN博客

如果你觉得内容对您有帮助,别忘了点赞、收藏和分享支持下哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922467.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922467.shtml
英文地址,请注明出处:http://en.pswp.cn/news/922467.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MariaDB介绍和MariaDB包安装

文章目录MariaDB介绍和安装1.MariaDB介绍1.1 起源与背景1.2 核心特性1.2.1 高度兼容 MySQL1.2.2 优化的存储引擎1.2.3 企业级功能增强1.2.4 性能优化1.2.5 安全增强1.3 社区与生态1.4 应用场景1.5 总结2.MariaDB安装2.1 主机初始化2.1.1 设置网卡名2.1.2 设置ip地址2.1.3 配置镜…

双指针与滑动窗口算法精讲:从原理到高频面试题实战

引言&#xff1a;算法选择的十字路口 在算法面试中&#xff0c;双指针和滑动窗口如同两把瑞士军刀&#xff0c;能高效解决80%以上的数组和字符串问题。本文将深入解析这两种技术的核心差异&#xff0c;结合力扣高频题目&#xff0c;提供可直接复用的代码。 一、算法核心思想解析…

苹果MAC、MacBook air和pro安装windows双系统与iOS分发

文章目录1. main1.1 准备工作1.2 启动转换助理1.3 Windows安装1.4 苹果电脑安装Windows双系统切换2. 苹果(iOS)分发/上架2.1 上架App Store2.2 上架TestFlight2.3 webClip免签上架2.4 超级签名2.5 企业证书2.6 app分发系统Reference1. main 苹果电脑安装windows双系统 https:…

ArcGIS定向影像(1)——非传统影像轻量级解决方案

常常听到这样的需求&#xff0c;ArcGIS能让用户自己低成本的做出谷歌街景吗&#xff1f;现在 _ArcGIS Pro 3.2 和 ArcGIS Enterprise 11.2 _能够让用户不使用任何插件和扩展的情况下完成街景数据集的构建&#xff0c;数据管理&#xff0c;发布服务和调用的完整解决方案。非常体…

uni-app 网络之封装实战HTTP请求框架

前言在uniapp开发中&#xff0c;网络请求是每个应用都必不可少的功能模块。一个优秀的网络请求封装不仅能提高开发效率&#xff0c;还能增强代码的可维护性和可扩展性。本文将基于实际项目经验&#xff0c;详细介绍如何封装一个高效、可维护的Uniapp网络请求框架&#xff0c;并…

架构师成长之路-架构方法论

文章目录前言一、先搞懂&#xff1a;架构师不仅仅是“技术大佬”&#xff0c;更是“问题解决者”1.1 架构师的分类&#xff1a;不止“开发架构师”一种1.2 架构师要关注什么&#xff1f;别只盯着技术1.3 架构师解决问题的4步心法&#xff1a;从定义到落地1.4 架构师的成长攻略&…

uniapp在微信小程序中实现 SSE 流式响应

前言 最近需要使用uniapp开发一个智能对话页面&#xff0c;其中就需要使用SSE进行通信。 本文介绍下在uniapp中如何基于uni.request实现SSE流式处理。 在线体验 #小程序:yinuosnowball SSE传输格式 返回输出的流式块: Content-Type为text/event-stream 每个流式块均为 d…

STM32N6AI资料汇总

文章目录前言一、STM32N6硬件资源1.1 NUCLEO-N657X0-Q1.2 STM32N6570-DK1.3 正点原子STM32N647二、STM32N6软件资源2.1 STM32CubeN6例程资源包2.2 STM32图像信号处理器&#xff08;ISP&#xff09;调优软件2.3 正点原子N6开发板配套软件三、AI软件资源3.1 STM32N6 AI软件包总结…

Flask学习笔记(一)

1、环境准备pip install Flask使用Flask开发第1个入门程序&#xff1a;from flask import Flask app Flask(__name__) app.route(/) def hello_world():return Hello, World!if __name__ __main__:app.run()Flask构造函数将当前模块的名称(__name__)作为参数。2、route函数ap…

CSP认证练习题目推荐(4)

思维、贪心、综合 排队打水 这道题目不算难&#xff0c;但是不注意还是会出现很多错误&#xff0c;比如结构体的书写。以及自定义结构体排序。还有这里做的优化&#xff0c;使用前缀和记录打水的等待时间&#xff0c;但是这里很容易出错的点在于等待时间是应该是记录的前一个…

MySQL 视图的更新与删除:从操作规范到风险防控

MySQL 视图的更新与删除&#xff1a;从操作规范到风险防控 视图作为 “虚拟表”&#xff0c;其更新与删除操作常常让开发者困惑 ——“为什么更新视图会报错&#xff1f;”“删除视图会不会弄丢数据&#xff1f;” 实际上&#xff0c;80% 的视图操作问题都源于对 “视图依赖基表…

C 语言实现 I.MX6ULL 点灯(续上一篇)、SDK、deep及bsp工程管理

目录 一、汇编点灯转 C 语言实现 1. 关键字&#xff1a;volatile 2. 寄存器地址定义&#xff08;两种方式&#xff09; &#xff08;1&#xff09;直接宏定义地址 &#xff08;2&#xff09;结构体封装寄存器&#xff08;优化访问&#xff09; 3. 核心功能代码 &#xff…

DevOps实战(7) - 使用Arbess+GitPuk+sourcefare实现Node.js项目自动化部署

Arbess 是一款国产开源免费的 CI/CD 工具&#xff0c;工具支持一键部署&#xff0c;页面简洁易用。本文将详细介绍如何安装配置使用GitPuk、sourcefare、Arbess系统&#xff0c;使用流水线拉取GitPuk源码、使用sourcefare代码扫描、构建安装包并进行主机部署。 1、GitPuk 安装…

算法,蒜鸟蒜鸟-P1-理解“双指针”

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录引言1 双指针&#xff1a;Two Pointers1.1 左右指…

使用cookiecutter创建python项目

一、关于Python项目结构Python 项目并没有完全统一的 “固定结构”&#xff0c;但行业内有一些广泛遵循的约定俗成的目录结构&#xff08;尤其针对可分发的包或大型项目&#xff09;。同时&#xff0c;确实有工具可以快速生成这些标准化结构&#xff0c;提高开发效率&#xff0…

台积电生态工程深度解析:从晶圆厂到蜂巢的系统架构迁移

当半导体巨头将工厂视为生态系统&#xff0c;用工程思维解决环境问题概述&#xff1a;生态系统的工程化再造台积电近日开展的"积蜜"项目绝非简单的企业CSR行为&#xff0c;而是一场将生态系统视为复杂系统进行工程化改造的技术实践。本文将从系统架构、数据监控、循环…

从零实现一个简易计算器

最近在刷算法题时&#xff0c;遇到了实现计算器的问题。一开始觉得很简单&#xff0c;但真正动手实现时才发现其中有很多细节需要考虑。今天就来分享一下我的实现思路和学到的经验。问题分析我们需要实现一个能够处理加减乘除四则运算的计算器&#xff0c;要正确处理运算符的优…

Actix-webRust Web框架入门教程

文章目录引言Actix-web是什么&#xff1f;准备工作你的第一个Actix-web应用理解代码结构处理请求和响应接收请求数据返回响应中间件 - 增强你的应用状态管理和依赖注入实用示例&#xff1a;构建RESTful API测试你的Actix-web应用部署Actix-web应用结语额外资源引言 嘿&#xf…

若依框架前端通过 nginx docker 镜像本地运行

1. 前言 项目运行过程图&#xff1a;对于前端项目通过命令 npm run build 打包后&#xff0c;无法直接运行。存在如下错误&#xff1a;可以通过配置 nginx 服务器运行前端项目解决如上问题。 2. Nginx 运行 采用 docker 镜像的方式运行&#xff0c;docker-compose.yml 文件内容…

浅聊一下HTTP协议

在日常上网浏览网页、刷视频时&#xff0c;背后都离不开 HTTP 协议的支持。作为 Web 世界的 “交通规则”&#xff0c;它负责服务器和客户端浏览器之间的数据传输。这篇文章就带大家全面了解 HTTP 协议&#xff0c;从基本概念到通信细节&#xff0c;再到安全相关的 HTTPS&#…