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

串口通信介绍

参考

  • 【Iot】什么是串口?什么是串口通信?串口通信(串口通讯)原理,常见的串口通信方式有哪些?
  • 简单实现串口通信
  • UART串口通信

一、定义

串口通信是一种数据通信方式,它通过一根信号线将数据一个比特一个比特地、按顺序依次进行传输。

  • 串口是串行接口的简称,也称串行通信接口串行通讯接口,通常指COM接口
  • 串口是可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。即
    • CPU ---- 并行数据 ----> 串口 ---- 转化为串行数据流 ----> 发送
    • ---- 接受串行数据 ----> 串口 ---- 转化为并行数据 ----> CPU
    • 这种功能由串行接口电路来完成

分类

  • 并行通信与串行通信
    • 并行通信:一次可以同时发送8个、16个或更多比特(比如老式的打印机线缆)。速度快,但需要更多电线,成本高,易受干扰。相对少见
    • 串行通信:所有数据排成一队,依次通过。速度相对慢,但节省线路、成本低、抗干扰能力强、传输距离远。相对更常见
    • 虽然串行通信一次只传一个比特,但通过提高传输速度(波特率),其总体验速度可以非常快。比如现代的USB、PCIe、SATA都是串行通信。
  • 同步和异步通信
    • 同步通信:数据的发送和接收是在预定的时钟信号下进行的,数据的发送方和接收方需要共享相同的时钟源,以确保数据的同步
    • 异步通信:数据的发送和接收不依赖于共享时钟信号,每个数据块之间有一定的间隔,而不需要严格的时序同步。
  • 单工和双工通信
    • 单工通信:一种单向通信模式,数据只能在一个方向上传输
    • 半双工通信:一种双向通信模式,但是通信双方不能同时进行数据传输。在任意时刻,只有一个设备可以发送
    • 全双工通信:一种双向通信模式,其中通信的双方能够同时进行发送和接收操作,允许双方同时传输数据

二、工作原理

要实现成功的串口通信,通信双方必须事先约定好一些规则,这通常通过UART来实现。

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器),是一块硬件芯片或单片机上的一个模块,负责完成串行通信中最核心的工作:

  • 在发送端,UART将来自CPU的并行数据(例如一个8位的字节)转换成串行数据流,并通过TX线一位一位地发送出去
  • 在接收端,UART监听RX线,将接收到的串行数据流重新组装成并行数据,供CPU读取

通信参数

UART是一个异步串行通信协议,而要实现异步通信,通信双方必须严格约定以下参数

  • 波特率:即数据传输的速度,单位是bps
    • 常见的值有:9600, 19200, 38400, 115200等
    • 通信双方的波特率必须一致! 如果一方用9600发送,另一方用115200接收,收到的将是乱码
  • 数据位:指一个数据帧中实际数据位的数量
    • 可以是5, 6, 7, 8位
    • 最常用的是8位,正好对应一个字节
  • 停止位:在每个数据包末尾发送的信号,用于表示该数据包传输结束
    • 可以是1位、1.5位或2位,最常用的是1位
  • 奇偶校验位:一种简单的错误检查机制
    • 该位是可选的,可以是无、奇校验或偶校验
    • 通过计算数据位中“1”的个数,来确保数据在传输过程中没有出现单比特错误
    • 但无法检测多比特错误,因此现在很多应用中为了简单都设为“无
  • 流控制:也称为“握手”,用于控制数据传输的节奏,防止数据丢失
    • 当接收方处理不过来时,可以通过特定的信号线(如RTS/CTS)告诉发送方“暂停发送”
    • 在简单应用中经常被省略

三、串行通信协议

串行按照数据同步的方式,可以分为异步串行通信同步串行通信

3.1 异步串行通信

异步串行通信

  • 特点:没有统一的时钟线。发送和接收设备使用各自独立的时钟,并依靠事先约定好的波特率来保持同步。每个数据字节都被包装在包含起始位和停止位的帧中。
  • 优点:硬件简单,只需要少量信号线(最少2根:TXD和RXD)。
  • 缺点:额外的起始/停止位开销降低了效率;时钟可能轻微不同步,限制了波特率和数据长度的上限。
  • 常见协议:
    • UART (Universal Asynchronous Receiver/Transmitter):这是最基础、最常见的异步串行协议。我们常说的“串口”通常就是指UART。
    • RS-232:是UART的物理层电气标准(定义电压、接口等)。老式电脑的COM口就是RS-232。
    • RS-422 & RS-485:是更先进、抗干扰能力更强、支持远距离和多点通信的异步串行标准,常用于工业环境。

UART

UART 是所有串行通信的“大脑”,它工作在集成电路的内部层面

  • 一块硬件芯片或微控制器中的一个集成模块。它的核心功能是进行并行与串行数据的转换
  • 采用异步通信,发送和接收方依靠预先约定好的波特率(Baud Rate) 来同步
  • 数据被组织成帧(Frame) 依次发送
    • 一个标准的UART数据帧结构如下
      • 空闲状态: 数据线处于高电平(逻辑1)状态
      • 起始位(Start Bit): 一个位的低电平(逻辑0)。这是一个同步信号,告诉接收方:“注意,数据要来了。”
      • 数据位(Data Bits): 紧接着起始位之后,是要传输的实际数据,通常是5-9位(最常用的是8位,一个字节)。低位(LSB)先行,即最先发送最低有效位。
      • 奇偶校验位(Parity Bit):可选。用于极简单的错误检测,可以是奇校验、偶校验或无。
      • 停止位(Stop Bits): 1位、1.5位或2位的高电平(逻辑1)。用于标志数据包的结束。接收方靠识别这个从低到高的跳变来确认帧结束。
  • 电气特性(物理层 - 板级):使用 TTL/CMOS 电平
    • 逻辑 1: 高电平(通常是 +3.3V 或 +5V)
    • 逻辑 0: 低电平(0V)
    • 特点:信号电压低、传输距离极短(通常不超过几十厘米)、抗干扰能力弱,主要用于电路板内部或板与板之间的短距离通信。
  • 关键引脚:
    • TXD (Transmit Data): 数据发送引脚
    • RXD (Receive Data): 数据接收引脚
    • GND (Ground): 共同参考地,必不可少,它为双方提供了相同的电压基准

在这里插入图片描述

RS232

UART 的“肌肉和骨骼”,它负责将信号传输到更远的地方

  • 一个定义串行通信物理接口的古老标准。它规定了电压、阻抗、连接器、针脚定义等
  • 核心是解决 UART 的 TTL 电平传输距离短的问题。它采用了更高的电压负逻辑
  • 电气标准
    • 逻辑 1: -3V 至 -15V 的电压(称为 Mark)
    • 逻辑 0: +3V 至 +15V 的电压(称为 Space)
    • 特点:高电压和负逻辑的设计使其抗共模干扰的能力大大增强,传输距离更远(理论上可达15米,在降低波特率时甚至可以更远),适合在相对复杂的工业环境中使用。
  • 物理接口
    • 最常见的接口是 DB9 连接器(9针),也有DB25(25针)

在这里插入图片描述

UART和RS232、RS422等的区别

  • UART 是一种异步串行通信的协议和硬件接口,核心是协议和实现该协议的硬件控制器(通常集成在单片机或CPU中)
    • 一种硬件芯片或模块,负责处理异步串行通信的底层细节
    • 主要进行的工作是并行转串行(发送)串行转并行(接收)
    • 其信号特性一般使用设备自身的TTL/CMOS电平
      • 逻辑1:高电平(通常是+3.3V或+5V);逻辑0:低电平(0V)
      • 这种信号非常脆弱,抗干扰能力差,传输距离很短(通常不超过几十厘米),只能在电路板内部或板间短距离通信
    • 主要定义了数据帧格式(起始位、数据位、校验位、停止位)和通信时序(依靠双方约定的波特率来同步)
  • RS232 是一种标准的串行通信接口,核心是物理层的电气标准
    • 解决UART的TTL电平信号传输距离短、抗干扰能力弱的问题,将UART产生的TTL电平信号转换成能在更长距离(可达15米)、更复杂环境中稳定传输的信号
    • 其信号特性为使用负逻辑和更高的电压
      • 逻辑1:-3V to -15V (称为Mark)
      • 逻辑0:+3V to +15V (称为Space)
      • 这种高电压、负逻辑的设计使其抗共模干扰的能力大大增强,适合工业环境
    • 主要定义了电压、阻抗、连接器、针脚定义等物理特性,如电气特性(信号的电压标准)、机械特性(通常使用DB9或DB25连接器)、功能特性(定义了每个针脚的功能,如TXD、RXD、RTS、CTS、DSR、DTR等(流控制信号))

协同工作

  • 发送路径(电脑 -> 外部设备)
    • CPU准备好要发送的数据。
    • 主板上的UART控制器将数据打包成帧,以TTL电平从芯片引脚输出(TXD为+5V/0V)。
    • 电脑内部的RS-232驱动芯片(如MAX232)捕获到这个TTL信号,并将其转换为RS-232电平(例如,0V变成+12V,+5V变成-12V)。
    • 转换后的信号通过DB9连接器串口线发送出去
  • 接收路径(外部设备 -> 电脑)
    • RS-232线上的电平(例如-12V)通过DB9连接器进入电脑。
    • RS-232驱动芯片将其转换回TTL电平(例如,-12V变成+5V,+12V变成0V)。
    • 这个TTL电平信号被送入UART控制器。
    • UART控制器解析比特流,去除帧信息,将得到的字节数据送给CPU。

在这里插入图片描述

3.2 同步串行通信

同步串行通信

  • 特点:有时钟信号线(SCLK/CLK)。发送方在发送数据的同时,会提供一条专门的时钟信号线,接收方根据这个时钟信号来精确采样数据位。数据是连续传输的,没有起始/停止位。
  • 优点:效率高,速度更快,没有时钟不同步问题。
  • 缺点:需要更多的线(至少增加一条时钟线),主从设备之间的时钟布线要求更高。
  • 常见协议:I²C, SPI, CAN 等(下面会详细介绍)都属于同步通信。

I²C

全称为Inter-Integrated Circuit,是一种同步串行通信方式,通常用于同一块电路板上芯片之间的短距离通信

  • 需要两条线:SDA(数据线)和 SCL(时钟线)
  • 多主多从,地址寻址。
  • 速度标准包括(100kbps)、快速(400kbps)、高速(3.4Mbps)等。
  • 主要应用:连接传感器(温度、加速度)、EEPROM存储器、RTC时钟、IO扩展芯片等

SPI

全称为Serial Peripheral Interface,同样用于同一块电路板上芯片之间的短距离通信

  • 四条线:MOSI(主出从入)、MISO(主入从出)、SCK(时钟)、SS/CS(片选)
  • 全双工,高速(可达50Mbps+),硬件简单但占用IO多
  • 主要应用:连接Flash存储器、SD卡、显示屏、ADC/DAC转换器、RFID模块等需要高速传输的设备

CAN

全称为Controller Area Network,主要用于设备之间、板卡之间或长距离的通信

  • 使用双线差分信号,抗干扰能力极强
  • 多主架构,具有无损仲裁和错误检测机制,可靠性极高
  • 主要应用:汽车电子(绝对主流)、工业自动化、医疗设备

四、物理接口

串口通信是一种依赖信号线的通信方式

  • 简单双向串口通信有两根通信线,发射端TXD和接收端RXD
  • 通信双方的发射端和接收端要交叉连接,实现TXD连接RXD
  • 当只需单向的数据传输时,可以直接一根通信线
  • 当通信双方的电平标准不一致时,需要加电平转换芯片

在这里插入图片描述
其中GND为Ground,即地线。

常见的物理接口有DB9、DB25、RJ45、USB、端子排等

DB9

全称为D-Subminiature 9 pin,是最经典、最广为人知的串口接口,通常是RS-232标准的物理化身

  • 特点:D型金属外壳,9针(公头)或9孔(母头)
  • 常见用途
    • 老式电脑的COM口(通常是公头)
    • 网络设备(如路由器、交换机)的Console控制台端口(通常是母头)
    • 各种工业控制和测量设备
  • 针脚定义
    • Pin 2: RXD (接收数据)
    • Pin 3: TXD (发送数据)
    • Pin 5: GND (信号地)
    • 其他针脚用于流控制(如RTS, CTS, DTR, DSR),在简单应用中常被忽略

DB25

全称为D-Subminiature 25 pin,属于是DB9的“老大哥”,但现在较少见。

  • 特点:更大的D型接口,有25个针脚
  • 常见用途:早期电脑的串行端口,也曾经用于并行打印机端口。其串口功能与DB9相同,只是提供了更多未使用的针脚和更完整的流控制信号

RJ45

全称为Registered Jack 45,就是常见的网线接口。现在,这已经成为网络设备控制台端口的事实标准。

  • 特点:塑料水晶头接口,小巧便宜
  • 常见用途:
    • 几乎所有现代路由器、交换机、防火墙等网络设备的Console口
    • 需要配合Rollover Console线(又称配置线)使用,线序是反的
  • 优势:相比DB9,RJ45接口更小、更便宜、更普及

不能直接插到网络插座上,因为这只是借用了RJ45的物理外形,信号仍然是串行信号,不是以太网信号

USB

全称为Universal Serial Bus,现代电脑连接串口设备的绝对主流方式

  • 特点:现代电脑的标配接口
  • 常见用途:
    • 数据传输与存储:最基础、最原始的功能,用于在不同设备间快速交换数据
    • 人机交互设备:连接计算机与输入输出设备的主流接口
    • 音视频传输:能够传输高质量的音频和视频信号
    • 网络与通信:可以扩展计算机的网络功能
    • 设备供电与充电:提供了一个标准化的直流电源,极大地简化了电子设备的充电方式
    • 开发与调试:连接和调试其他设备的生命线
      • 嵌入式开发,通过USB转串口(如FTDI、CH340芯片)工具连接和调试单片机(如Arduino、STM32)、路由器等
      • 设备调试:安卓手机的ADB调试、iOS系统调试等

通过USB转串口线(或转换器)可以连接嵌入式设备

  • 线缆内部有一个桥接芯片(如FTDI、PL2303、CH340、CP2102)
  • 可以在电脑上模拟一个虚拟COM端口,操作系统会为其分配一个COM号(如COM3, COM4)
  • 应用程序(如MobaXterm, Putty)就像操作传统COM口一样操作它

端子排

即Terminal Block / Screw Terminal,常见于工业环境、工控设备、PLC和一些开发板上

  • 特点:直接使用螺丝压接导线,没有特定的外壳形状
  • 常见用途:
    • RS-485和RS-422通信,通常标记为A+, B-或D+, D-。
    • 一些微控制器开发板(如Arduino、树莓派)引出的TTL UART引脚,标记为TXD, RXD, GND
  • 优势:连接牢固,抗振动,适合恶劣的工业环境
http://www.dtcms.com/a/394479.html

相关文章:

  • 2025windows系统40系英伟达GPU显卡Pytorch环境配置(base:py3.8)
  • 第15章 报警管理
  • Java并发安全解析
  • 三次样条曲线速度规划方法介绍
  • 重拓扑建模之陶瓷摆件的诞生
  • 计算机视觉数据预处理核心:空间变化与归一化的深度解析与实战指南
  • PCIe 8.0协议规范0.3版本发布!
  • 【Leetcode hot 100】199.二叉树的右视图
  • Product Hunt 每日热榜 | 2025-09-21
  • CMake进阶教程:库文件构建、发布及列表操作技巧
  • 因果推断DAGs和控制变量:如何使用有向无环图选择因果推断的控制变量
  • Nginx优化全攻略(上):基础配置优化!
  • 七、Scala 包、样例类与样例对象
  • CSP - 2025 普及组初赛试题及解析
  • Matlab实现点云的体素下采样
  • 淘宝 item_search_img(拍立淘)API 接口获取与应用指南
  • Python网络请求库requests使用详述
  • B站 弹幕 相关工具
  • 23 webUI应用基础案例-线稿上色
  • 【MicroPython编程】-深入了解MicroPython 的垃圾收集
  • STM32F429I-DISC1【板载LED呼吸灯】
  • OBOO鸥柏工业触摸屏:信创国产化芯片驱动,展现军工级卓越性能
  • Ubantu命令行指令大全
  • 字节面试题:正则化技术如何影响网络梯度
  • Java进阶教程,全面剖析Java多线程编程,死锁,笔记15
  • 【含文档+PPT+源码】基于SpringBoot+Vue的车牌识别实时交通流量统计系统
  • C++动态规划4
  • chmod命令
  • kernel 6.6中新增的EEVDF特性
  • MATLAB M代码解释器设计与C++实现