二十七、通信接口

前言:本章为通信接口的简单介绍。下一章节讲解UART。

目录

一、通信接口简介

二、串口通信原理

三、串口通信的硬件连接

常见连接方式

四、口通信的电平标准

五、串口通信的参数

[六、UART 数据帧结构](#六、UART 数据帧结构)

[七、UART 时序图分析](#七、UART 时序图分析)

[八、UART 的同步与误差](#八、UART 的同步与误差)

九、总结


一、通信接口简介

在嵌入式系统中,通信接口是微控制器与外部设备进行数据交换的桥梁。常见的通信接口包括:

  • UART(通用异步收发器)

  • SPI(串行外设接口)

  • I²C(集成电路间通信)

  • CAN(控制器局域网)

  • USB、Ethernet 等高速接口

这些接口的区别主要在于数据传输方式、同步方式、传输速率和应用场景。

而在众多通信接口中,UART 串口通信是最基础、最常用的接口之一,几乎所有单片机都具备 UART 模块。

二、串口通信原理

UART(Universal Asynchronous Receiver/Transmitter) 中文称为通用异步收发器 。

它是一种异步 、全双工的串行通信方式,也就是说:

  • "异步"表示通信双方不共享时钟信号,而是依靠波特率来保持同步;

  • "全双工"意味着发送和接收可以同时进行。

UART 通信以比特为单位 在一条线上依次发送数据,因此被称为串行通信 。

相比并行通信,虽然速度略慢,但线路简单、成本低、抗干扰能力强。

三、串口通信的硬件连接

在 STM32C8T6 中,串口通信一般使用 USART1、USART2、USART3 等硬件外设。

每个 USART 都有两条主要信号线:

常见连接方式

1.MCU 与上位机通信(如电脑)

电脑通常没有直接的 UART 接口,因此需要使用 USB 转 TTL 模块(如 CH340、CP2102、FT232) 将信号转换后连接。

STM32 TX → USB-TTL RX

STM32 RX → USB-TTL TX

GND → GND

2.MCU 与 MCU 通信

两个 STM32 之间也可以通过交叉连接 TX/RX 实现通信。

四、口通信的电平标准

UART 只是通信协议规范,而具体的电平标准决定了信号电压范围。常见的有两种:

STM32 的 UART 口使用 TTL 电平 。

若要与电脑的 RS-232 串口通信,需要通过 MAX232 芯片进行电平转换。

五、串口通信的参数

UART 通信双方必须在通信前约定好相同的参数,否则会出现乱码或丢包。常见参数包括:

常用配置是 8N1:

  • 8 位数据

  • 无校验位(N)

  • 1 位停止位

六、UART 数据帧结构

在 UART 中,数据以帧(Frame)为单位发送。

一个典型的 8N1 数据帧如下图所示:

空闲线 起始位 数据位0~7 停止位

| | | |

|--------------|---------|-----------|

1 (高) 0 (低) bit0→bit7 1 (高)

解释:

  • 空闲状态:线路为高电平

  • 起始位:低电平表示传输开始

  • 数据位:从低位(LSB)开始发送

  • 停止位:高电平表示传输结束

七、UART 时序图分析

下面是 UART 的标准时序图(以 8N1 格式为例):

电平

高 ────────────────────────────────────────────

↓起始位 ↑停止位

┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐

低───┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └───────────

|<- 每一位的持续时间取决于波特率 ->|

例如:

波特率 = 9600 bps → 每位时间 = 1/9600 ≈ 104.17 μs

那么发送 1 帧(10 位数据:1+8+1)需要约 1.04 ms。

八、UART 的同步与误差

UART 是异步通信,因此接收方没有外部时钟,只能依靠波特率匹配。

在通信中允许少量误差(一般 ±2% 以内)。

若误差过大,会导致采样点偏移,从而产生错误。

因此,在 STM32 中,通常需要使用 定时器精确设置波特率分频系数,以保证通信稳定。

九、总结

UART 串口通信作为嵌入式系统中最常用的通信方式之一,具有以下优点:

  • 硬件结构简单

  • 软件实现方便

  • 调试友好(可通过串口调试助手直接查看数据)

在 STM32C8T6 中,UART 模块由 USART 外设 实现,不仅支持标准异步通信,还可支持同步模式、LIN、IrDA 等多种扩展功能。

相关推荐
铅笔小新z9 分钟前
【C语言】深入理解指针
c语言·开发语言
雨田言炎1 小时前
STM32之RCC系统时钟控制(芯片的心脏控制器)
stm32·单片机·嵌入式硬件
李永奉1 小时前
日常使用的锂电池上,新、旧锂电池的差异分析
单片机·嵌入式硬件·物联网·智能手机·电脑
额额额对了2 小时前
IMX6ULL 杂项设备 LED 驱动
stm32·单片机·嵌入式硬件
长春的KAKA3 小时前
Proxmark3 Iceman分支CLI命令总表
嵌入式硬件
半杯咖啡半行码3 小时前
STM32开发之IIC通信详解:从协议基础到FM24CL04实战
stm32·单片机·嵌入式硬件
硅基手札4 小时前
【I2C 技术系列 05】I2C 多主仲裁与时钟同步
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
szxinmai主板定制专家4 小时前
面向虚拟电厂协调控制:RK3588+FPGA+AI边缘控制器设计思路与算力评估
人工智能·嵌入式硬件·fpga开发·机器人·jetson·zynq·振动采集
Zw-awa4 小时前
DO 和 AO 到底怎么选:比较器替你决定了什么
stm32
硅基手札4 小时前
【I2C 技术系列 01】I2C 电气特性与物理层
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设