目录
串口通信协议
串口通信(Serial Communication)指的是数据通过一个串行的通道进行传输,每次传输一位数据。常见的串口通信协议包括:
- UART(Universal Asynchronous Receiver/Transmitter):通用异步收发器,用于异步串口通信。
- USART(Universal Synchronous/Asynchronous Receiver/Transmitter):通用同步/异步收发器,支持同步和异步串口通信。
- RS-232、RS-422、RS-485:串口通信的标准,用于不同的物理接口和通信距离要求。
串行/并行
- 串行通信:数据位按顺序一个接一个地传输,通常用于长距离通信和减少线路数。
- 并行通信:数据位同时通过多条线路传输,适合短距离高速度数据传输。
同步/异步
-
同步通信:发送和接收的数据流使用一个时钟信号来同步数据的发送和接收。发送方和接收方在同一个时钟信号的驱动下进行数据交换。
- 优点:适合高速度的数据传输。
- 缺点:需要额外的时钟信号线。
-
异步通信:不使用共享的时钟信号。数据以特定的格式(通常是起始位和停止位)进行传输,接收方通过检测数据流中的起始位来同步数据。
- 优点:不需要额外的时钟信号线,简化了设计。
- 缺点:适合较低的传输速度。
单工/半双工/全双工
-
单工(Simplex):数据只能单向传输。例如,广播系统中接收器只能接收信号,不能发送信号。
- 优点:简单,成本低。
- 缺点:只能进行单向通信。
-
半双工(Half-Duplex):数据可以双向传输,但不能同时进行。发送和接收不能同时进行,需要切换方向。例如,对讲机。
- 优点:比单工稍复杂,但能实现双向通信。
- 缺点:不能同时发送和接收,需控制通信方向。
-
全双工(Full-Duplex):数据可以同时双向传输。例如,电话通信。
- 优点:同时发送和接收数据,提高通信效率。
- 缺点:复杂度高,成本较高。
DR寄存器
在 STM32 系列微控制器中,DR
寄存器(数据寄存器)用于存储要发送或接收的数据。具体功能如下:
- 发送数据寄存器:存储要发送的数据。当数据写入该寄存器时,UART 模块将数据传输到发送线。
- 接收数据寄存器:接收接收到的数据。数据从接收线传输到该寄存器。
轮询方式
在轮询方式中,主程序会定期检查串口状态寄存器,以确定是否可以进行数据的发送或接收。这种方式简单,但可能导致 CPU 空闲时间浪费。
中断方式
在中断方式中,串口通信的操作(如数据发送和接收)通过中断触发,当相关事件发生时,处理程序(中断服务程序)会被调用,执行数据处理任务。
主要中断事件:
-
发送期间:
- 发送完成(TX Complete):当数据发送完成时触发。
- 清除发送(TX Empty):当发送数据寄存器为空时触发。
- 发送数据寄存器空(TXE):表示可以写入新的数据到发送数据寄存器。
-
接收期间:
- 空闲总线检测(Idle Line Detected):检测到总线空闲时触发。
- 接收数据寄存器非空(RXNE):表示接收数据寄存器中有数据可读。
DMA方式
DMA(Direct Memory Access,直接存储器访问)方式可以用来减少 CPU 的负担。使用 DMA 时,数据可以直接在内存和外设之间传输,而无需 CPU 介入。