七、STM32——串口
1 基本概念
复习基本概念:同步、异步、全双工、半双工和单工。
1.1 同步 (Synchronous) 和 异步 (Asynchronous)
同步和异步是通信时钟同步的两种不同方式:
-
同步通信:数据传输是通过共享时钟信号来协调的,发送方和接收方必须以相同的速率和时序工作。在同步模式下,数据位在固定的时钟周期内传输,发送和接收设备使用同一个时钟信号来同步数据交换。
- STM32中的同步通信:如USART、SPI等接口都支持同步模式。例如,在SPI模式下,主设备和从设备之间共享一个时钟信号(SCK),确保数据传输的同步进行。
-
异步通信:数据传输不依赖于共享的时钟信号。数据的发送和接收是根据预先设定的波特率和时序来进行的。接收设备必须根据发送方的数据流的时间间隔来恢复时序。
- STM32中的异步通信:USART接口支持异步模式。在异步模式下,发送和接收设备之间无需共享时钟信号,只需要设置相同的波特率,确保数据以正确的时间间隔传输。
1.2 全双工 (Full-Duplex) 和 半双工 (Half-Duplex)
全双工和半双工描述了通信通道中数据传输的方向性和同时性。
-
全双工通信:通信双方可以在同一时刻同时发送和接收数据。全双工需要两个独立的通道或至少能够同时处理输入和输出的机制。
- STM32中的全双工通信:USART、SPI和I2C都可以支持全双工通信。例如,USART的全双工模式允许在同一时刻进行发送和接收数据。SPI协议也是全双工的,它使用两个数据线:MOSI(主设备输出从设备输入)和MISO(主设备输入从设备输出),允许数据同时在两个方向上传输。
-
半双工通信:通信双方不能同时发送和接收数据,而是交替进行。换句话说,设备在发送数据时,另一个设备只能接收,反之亦然。
- STM32中的半双工通信:例如,USART可以在半双工模式下工作,通常用于对讲机或某些远程控制设备等需要轮流传输的情况。在这种模式下,传输线的方向在发送和接收之间进行切换。
1.3 单工 (Simplex)
-
单工通信是最简单的通信方式,它只允许数据在一个方向上传输。一个设备只能发送数据,另一个设备只能接收数据。没有数据返回的机制。
- STM32中的单工通信:在一些简单的应用中,STM32可以配置为单工模式。例如,某些传感器只发送数据而不接收反馈,在这种情况下,STM32作为接收端只接收数据,形成单向的数据流。
1.4 STM32中这些通信方式的应用
在STM32微控制器中,常见的通信接口,如USART、SPI和I2C,都会根据不同的工作模式提供同步、异步、全双工、半双工等不同的通信方式。
USART:
-
支持同步模式和异步模式。
-
支持全双工和半双工模式。在全双工模式下,它可以同时发送和接收数据,而在半双工模式下,数据传输是交替的。
SPI:
-
是同步的通信协议,使用共享时钟线来同步数据传输。
-
它支持全双工通信,即数据可以同时从主设备传输到从设备,也可以从从设备传输到主设备。
I2C:
- 是同步的通信协议,但它是半双工的,因为数据在总线上是通过主设备控制传输的,只能在任意时刻由一个设备发送数据。
2 波特率
-
波特率(bps)是指:每秒传输多少位。
-
9600波特率,表示每秒传输1200(9600/8)个字节,每位理论用时104us
-
38400波特率,表示每秒传输4800个字节,每位理论用时26us
-
115200波特率,表示每秒传输14400个字节,每位理论用时8.68us
-
注意:
-
中断函数执行过程中,不能使用延时,因为延时函数也是通过中断进行计数的。
-
如果使能串口空闲中断,如果不清除串口空闲中断标记,会一直触发空闲中断处理函数。
-
STM32空闲中断的极限时间大约为2字节的时间,既超过2字节的传输时间,则会出现空闲中断,这2字节大约多少时间,根据波特率设定有关。这个空闲中断极限时间无法软件设定。
3
参考
参考1:STM32学习笔记—–什么是同步/异步/全双工/半双工/单工?
https://blog.csdn.net/2401_84769586/article/details/144307158
https://zhuanlan.zhihu.com/p/18506959446
https://www.cnblogs.com/mokongking/p/18632353
https://download.csdn.net/blog/column/9071196/103474643
https://blog.csdn.net/qq_44758496/article/details/132206223