【STM32】-串口通讯

发布于:2025-07-05 ⋅ 阅读:(22) ⋅ 点赞:(0)

1、串口通讯

串口通信是一种设备间常用的串行通信方式,串口按位(bit)发送和接受字节。而串口通信协议是指规定了数据包的内容(起始位、主体数据、校验位和停止位),常见的协议有RS232、RS485、RS422等。
对于通信协议,采用分层的方式分为物理层和协议层。

  • 物理层:电气特性、机械接口、信号类型等
  • 协议层:数据传输的格式、时序和控制逻辑等。

2、RS232

RS232(Recommended Standard 232)是由 EIA(电子工业协会)制定的串行通信标准。属于全双工,异步通信。

2.1、物理层特性

1、电气特性

  • 逻辑电平定义:
    • 逻辑“1”:-3V~-15V
    • 逻辑“0”:+3V~+15V
  • 传输距离
    • 无调制解调器时,最大约15m。
  • 传输速率
    • 常见标准速率为9600bps、19200bps、115200bps等。

2、机械接口
常见的接口类型为DB-9接口(现在一般只用TXD、RXD和GND信号),以及DB-25接口(早期使用)。
一般是将发送设备的TXD接口连接到接收设备的RXD接口,发送设备的RXD接口连接到接收设备的TXD接口。

3、信号类型

  • 数据信号:
    • TXD(Transmit Data):发送数据。
    • RXD(Receive Data):接收数据。
  • 控制信号:
    • RTS(Request To Send):请求发送数据。
    • CTS(Clear To Send):允许发送(对 RTS 的响应)。
    • DTR(Data Terminal Ready):终端就绪。
    • DSR(Data Set Ready):设备就绪。
    • DCD(Data Carrier Detect):检测到载波(用于调制解调器)。

2.2、协议层规范

1、数据传输格式

  • 帧结构:
    在这里插入图片描述
起始位(1位,低电平) + 数据位(5-8位,低位在前) + 校验位(01位) + 停止位(1/1.5/2位,高电平)
  • 关键参数:

    • 波特率:每秒传输的码元数,需收发双方一致(如 9600bps)。
    • 数据位长度:常见 5、6、7、8 位(8 位时可传输任意字节数据)。
    • 校验方式:无校验(None)、奇校验(Odd)、偶校验(Even)。
    • 停止位长度:1 位(常用)、1.5 位(极少)、2 位。
  • 数据帧编码类型
    虽然RS232的数据帧结构(起始位+数据位+校验位+停止位)是固定的,但数据位的内容可以采用多种编码格式。

    • ASCII编码:将每个字符映射为7位或8位二进制值(如 'A’→0x41)。
    • 二进制编码:直接传输原始二进制数据。
    • 十六进制字符串:将二进制数据转换为ASCII字符表示(如0XAB->“AB”)
    • 自定义协议:按特定协议组织数据(如Modbus的功能码+数据域+CRC校验)。

常见数据编码类型优缺点和应用场合对比:

编码方式 优点 缺点 典型应用场景
ASCII 可读性强、调试方便 传输效率低 调试信息、文本协议
二进制 传输效率高、适合大数据 调试困难 传感器数据、固件升级
十六进制 兼容性好、易解析 双倍占用带宽 调试工具、兼容性协议
自定义协议 功能强大、可扩展性高 开发复杂度高 工业控制、设备通信

3、RS485

RS485 是一种基于差分信号传输的串行通信标准,由 EIA/TIA-485 定义,主要解决 RS232 在远距离、多节点通信中的不足。属于半双工、异步串行。

3.1、物理层特性

1、电气特性

  • 差分信号传输:
    • 逻辑 “1”:A 线电压比 B 线高 200mV 以上(如 A=+2V,B=0V)。
    • 逻辑 “0”:B 线电压比 A 线高 200mV 以上(如 A=0V,B=+2V)。
    • 抗干扰性:差分信号可抑制共模干扰,适合工业环境。
  • 传输距离与速率:
    • 标准传输距离:1200 米(速率≤100kbps)。
    • 高速传输:速率 10Mbps 时,距离≤12 米(需匹配终端电阻)。
  • 节点数量:
    • 理论支持 32 个节点(使用 120Ω 终端电阻)。
    • 通过增加收发器可扩展至 128/256 个节点。

在这里插入图片描述

2、机械接口

  • 常见接口类型:
    • DB-9 接口:工业设备常用,通常只使用 A、B、GND 三根线。
    • RJ45 接口:部分设备使用(如安防摄像头),见到过用这个接口的,但是没用双绞,也是震惊了!还是量产产品。
    • 端子排:便于布线和工业应用。
  • 线缆要求:
    • 屏蔽双绞线(STP),特性阻抗 120Ω。
    • 推荐线规:24AWG(0.51mm²)或更粗。

3、. 信号类型

  • 数据信号:
    • A 线(Data+):差分正信号。
    • B 线(Data-):差分负信号。
  • 控制信号:
    • DE(Driver Enable):发送使能(高电平有效)。
    • RE(Receiver Enable):接收使能(低电平有效)。
    • 多数收发器将 DE 和 RE 短接,通过一个引脚控制收发方向。

3.2、协议层规范

RS485 本身只定义物理层,协议层需结合上层协议(如 Modbus、Profibus 等)或自定义。

4、RS422

RS422(EIA-422)是由电子工业协会(EIA)制定的全双工差分串行通信标准,基于 RS485 发展而来,主要用于高速、长距离数据传输。

4.1、物理层特性

1、 电气特性

  • 差分信号传输:
    • 逻辑 “1”:差分电压 ≥ +200mV(如 A=+2V,B=0V)。
    • 逻辑 “0”:差分电压 ≤ -200mV(如 A=0V,B=+2V)。
    • 抗干扰性:差分信号抑制共模噪声,适合工业环境。
  • 传输距离与速率:
    • 标准传输距离:1200 米(速率≤100kbps)。
    • 高速传输:10Mbps 时距离可达 12 米(需匹配终端电阻)。
  • 驱动能力:
    • 单个驱动器可支持最多 10 个接收器(负载系数 0.1)。
      2、机械接口
  • 常见接口类型:
    • DB-9/DB-25 接口:工业设备常用,通常使用 4 根数据线(TX+、TX-、RX+、RX-)。
    • RJ45 接口:部分高速设备使用。
  • 线缆要求:
    • 屏蔽双绞线(STP),特性阻抗 100-120Ω。
    • 推荐线规:24AWG(0.51mm²)或更粗。
      3、信号类型
  • 数据信号:
    • 发送差分对:TX+(发送正)、TX-(发送负)。
    • 接收差分对:RX+(接收正)、RX-(接收负)。
  • 控制信号:
    • 无需方向控制信号(全双工),发送和接收可同时进行。

4.2、协议层规范

RS422 仅定义物理层,协议层需结合上层协议(如 Modbus、自定义协议)。

5、上述串口通信协议对比

特性 RS232 RS485 RS422
传输方式 单端信号(2线) 差分信号(2线) 差分信号(4线)
电平范围 ±3V~±15V -7V~+12V -7V~+12V
传输距离 ≤15米 ≤1200米 ≤1200米
传输速率 最高115.2kbps 10Mbps(12米) 10Mbps(12米)
节点数 点对点(1主1从) 多节点(≤32/128) 1主多从(≤10)
通信模式 单工/半双工 半双工 全双工
典型应用 近距离调试 长距离多节点通信 高速数据传输

6、如何使用stm32实现串口通讯

STM32的USART实现串口通讯,需要结合硬件电路和软件驱动。即在于电平转换方式、通信模式等方面。
STM32的USART输出的是TTL电平,通常约3.3V表示逻辑高电平,接近0V表示逻辑低电平。

6.1、使用stm32实现232通讯

1、硬件连接
由于232的通信模式基本与STM32自带的USART逻辑一致,所以一般只需要做电平转换即可。

STM32              MAX232(电平转换芯片)           PC/设备
┌─────────┐         ┌───────────┐                 ┌───────┐
│         │         │           │                 │       │
│  USART1 ├──TXD───→│T1IN       │                 │       │
│         │         │    T1OUT──┼──DB9(2-RXD)────→│       │
│         │         │           │                 │       │
│  USART1 ├──RXD───←│R1OUT      │                 │       │
│         │         │    R1IN───┼──DB9(3-TXD)────←│       │
│         │         │           │                 │       │
│   GND   ├───┬────→│GND        │                 │  GND  │
└─────────┘   │     │           │                 │       │
              │     └───────────┘                 └───────┘
              │
              └───→ VCC(+5V,为MAX232供电)

2、软件驱动
软件方面一般使用STM32的USART接口即可,需要配置波特率、数据位长度、校验方式和停止位长度。

6.2、使用stm32实现485通讯

1、硬件连接
硬件方面,需要将STM32的USART口输出的TTL电平转换成485逻辑(差分信号),同时有独立IO控制485收发状态。(也有专用芯片可以省略这个IO信号)

STM32              MAX485(RS485收发器)           另一RS485设备
┌─────────┐         ┌───────────┐                 ┌───────┐
│         │         │           │                 │       │
│  USART1 ├──TXD───→│DI         │                 │       │
│         │         │           │                 │       │
│  USART1 ├──RXD───←│RO         │                 │       │
│         │         │           │                 │       │
│   PB12  ├──DE/RE─→│           │                 │       │
│         │         │    A──────┼─────────────────┼──A    │
│   GND   ├───┬────→│GND        │                 │       │
└─────────┘   │     │           │                 │       │
              │     │    B──────┼─────────────────┼──B    │
              │     └───────────┘                 │       │
              │                                   │       │
              └───→ VCC(+5V,为MAX485供电)      └───────┘

2、软件驱动
需要配置波特率、收发模式,同时需要配置方向控制引脚。发送前切换为发送模式,发送后切换为接收模式。

6.3、使用stm32实现422通讯

1、硬件连接
由于422需要4根信号线,所以使用两个USART口进行控制,一个用于发送,一个用于接收。

STM32              SN75174(RS422发送器)        另一RS422设备
┌─────────┐         ┌───────────┐                 ┌───────┐
│         │         │           │                 │       │
│  USART1 ├──TXD───→│INPUT      │                 │       │
│         │         │           │                 │       │
│  USART2 ├──RXD───←│           │                 │       │
│         │         │    A+─────┼─────────────────┼──A+   │
│   GND   ├───┬────→│GND        │                 │       │
└─────────┘   │     │           │                 │       │
              │     │    A-─────┼─────────────────┼──A-   │
              │     └───────────┘                 │       │
              │                                   │       │
              └───→ VCC(+5V,为收发器供电)      └───────┘

另一RS422设备       SN75175(RS422接收器)        STM32
┌───────┐         ┌───────────┐                 ┌─────────┐
│       │         │           │                 │         │
│       │         │    INPUT+─┼─────────────────┼──USART2 │
│       │         │           │                 │  RXD    │
│       │         │    INPUT-─┼─────────────────┼──       │
│       │         │           │                 │         │
│       │         │    OUTPUT─┼─────────────────┼──USART1 │
│       │         │           │                 │  TXD    │
│       │         │    GND────┼─────────────────┼──GND    │
└───────┘         └───────────┘                 └─────────┘

2、软件驱动
需要将一路USART配置为接收模式,一路配置为发送模式。其它与485一致。


网站公告

今日签到

点亮在社区的每一天
去签到