引言
在嵌入式系统中,通信是设备之间数据传输的基础。STM32微控制器支持多种通信协议,如USART、I2C、SPI等。理解通信的基本概念对于后续学习外设编程至关重要。本笔记基于《零死角玩转STM32》的"通信的基本概念"章节,详细讲解通信的核心原理,帮助新手小白建立扎实的基础。
1. 串行与并行通信
通信方式分为串行和并行两类,它们决定了数据位的传输形式。
-
串行通信:数据位按顺序依次传输,只需一条数据线。优点是成本低、抗干扰强、适合远距离通信,但传输速率较慢。常见应用如UART、USB、以太网。
-
并行通信:多个数据位同时通过多条数据线传输。优点是速率高,但成本高、抗干扰弱、距离短。例如,STM32的GPIO口可配置为并行模式,用于LCD屏控制。
特性对比见下表:
| 特性 | 串行通讯 | 并行通讯 |
|---|---|---|
| 通讯距离 | 较远 | 较近 |
| 抗干扰能力 | 较强 | 较弱 |
| 传输速率 | 较慢 | 较高 |
| 成本 | 较低 | 较高 |
原理:串行通信逐位传输,节省引脚资源;并行通信一次传输多比特,但需要同步时钟,易受干扰。在STM32中,大多数外设(如串口)采用串行方式,以平衡效率和成本。
2. 全双工、半双工和单工
数据流向决定了通信的灵活性:
-
全双工:双方可同时收发数据(如电话通话)。例如,STM32的USART支持全双工,TX和RX引脚独立工作。
-
半双工:双方可收发数据,但不能同时进行(如对讲机)。例如,I2C总线在半双工模式下,SDA线分时用于发送和接收。
-
单工:数据只能单向传输(如广播)。例如,STM32的ADC读取传感器数据时,数据仅从传感器流向MCU。
应用场景:全双工适合实时交互(如调试串口),半双工适合多设备共享总线(如传感器网络),单工适合简单数据采集。
3. 同步与异步
时钟同步方式影响通信的可靠性和效率:
-
同步通信:收发方使用共享时钟信号,数据位在时钟边沿采样。效率高,但时钟偏差会导致错误。常见于SPI、I2C。

-
异步通信:无共享时钟,双方依赖预定义的波特率。数据包包含起始位、停止位等标识符,容错性强,但效率较低。常见于UART。

对比:同步通信数据中有效比例高,但对时钟精度要求严格;异步通信通过帧结构保证可靠性,时钟允许误差大。在STM32中,配置通信协议时需根据场景选择同步或异步模式。
4. 通信的速率
速率是衡量通信性能的关键:
-
比特率:每秒传输的二进制位数(bit/s)。例如,115200 bit/s表示每秒传输115200比特。
-
波特率:每秒传输的码元个数。一个码元可携带多个比特(通过调制),但在二进制系统中,波特率等于比特率。
码元概念:
-
单二进制位码元:0V代表"0",3.3V代表"1",每个码元携带1比特。
-
多二进制位码元:如4电平调制(0V/2V/4V/6V),每个码元可表示2比特(00/01/10/11),波特率相同时比特率翻倍。
在STM32中,设置USART波特率时,实际是配置比特率。需确保收发方波特率一致,否则数据错乱。
总结
-
串行/并行是数据传输形式,影响引脚数和速率。
-
全双工/半双工/单工决定数据流向灵活性。
-
同步/异步关乎时钟同步方式,影响效率和可靠性。
-
比特率和波特率是速率核心参数,需匹配硬件配置。
掌握这些概念后,后续学习STM32的具体通信外设(如USART、SPI)将更轻松。建议结合实验(如串口通信)加深理解。
本文档参考《零死角玩转STM32》,及配套章节PPT