STM32串口通信的基本概念
STM32的串口通信
通信方式
一、同步通信、异步通信
- 同步通信
通信中双方使用频率一致的时钟 - 异步通信
通信中的接收方并不知道数据什么时候会到达,收发双方可以有各自自己的时钟 - 异同点:
1.同步通信效率高;异步通信效率较低;
2.同步通信较复杂,双方时钟的允许误差较小;
3.异步通信简单,双方时钟可允许一定误差。
二、并行通信、串行通信
- 串行通信
各位数据被逐位按顺序传送,最少只需一根传输线即可完成,成本低但送速度慢。 - 并行通信
并行通讯中,基本原理与串行通讯没有区别。只不过使用了成倍的信号线路,从而一次可以传送更多bit的信号。 - 特点:
- 串行通信用一根线只能一位一位的发送数据,所以发送速度慢,但是占用资源少,可以远距离传输。
- 并行通信使用了成倍的信号线路,可以在同一时刻发送多位数据,发送速度快,但是占用资源多,只能近距离传输。
三、单工,半双工,全双工
- 单工
只能单向的收数据或者单向的发数据 - 半双工
可以收数据也可以发数据,但是同时只能进行一种 - 全双工
可以同时收发数据
常见的通信方式总结
通信标准 | 引脚说明 | 通信方式 | 通信方向 |
---|---|---|---|
UART | TXD:发送端 RXD:接收端 | 异步通信 | 全双工 |
单总线 | DQ:发送/接收端 | 异步通信 | 半双工 |
SPI | SCK:同步时钟 MISO:主机输入,从机输出 MOSI:主机输出,从机输入 | 同步通信 | 全双工 |
IIC | SCL:同步时钟 SDA:数据输入/输出端 | 同步通信 | 半双工 |
串口通信协议
相当于我们人与人的沟通一样,只有语言和语速都统一,我们才可以交流,机器也一样
语言
图片来源STM32F10xxx参考手册
- 1)起始位
当没有数据发送时,数据线处于逻辑“1”状态;当发出一个逻辑“0”信号,表示开始传输字符。 - 2)数据位
紧接着起始位之后。数据位可以是5~8个,在STM32中可选的数据位是8、9。通常采用ASCII码。从最低位开始传送,靠时钟定位。 - 3)奇偶校验位
数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。 - 4)停止位
它是一个字符数据的结束标志。可以是1位、2位的高电平。
语速
- 1)波特率
表示每秒钟传送的二进制位数,是衡量数据传送速率的指标
常用的波特率有:9600、115200……
时间间隔计算:1秒除以波特率得出的时间,例如,波特率为9600的时间间隔为1s / 9600(波特率) = 104us。
USART(通用同步异步收发器)
USART相当于UART的升级版,USART支持同步模式,因此USART 需要同步始终信号USART_CK(如STM32 单片机),通常情况同步信号很少使用,因此一般的单片机UART和USART使用方式是一样的,都使用异步模式。
引脚
TX:发送数据输出引脚。
RX:接收数据输入引脚