串行通信的传送方式有三种,单工,半双工,全双工
- 单工指只能由A端向B端传输。
(一端为RXD另一端为TXD)
- 半双工支持两端的相互传输,但一次只能由其中一端传向另一端。
(两端各有一个端口,在某一时刻一端为TXD一端为RXD)
- 全双工支持两端的相互传输,且两端向另一端的传输可以同时进行。
(需要两端的RXD和TXD交叉相连)
通信方式又分为同步和异步串行通信
- 同步通信:带时钟同步信号传输 (除了数据信号以外还有时钟信号)
例如SPI,IIC(I2C)协议的接口
- 异步通信:不带时钟同步信号传输 (双端实现约定好传输速度,也就是波特率)
例如UART,单总线(one-wire) 协议的接口
对以上四种常见的通信接口的特性如下表所示
通信标准 | 引脚说明 | 通信方式 | 通信方向 |
---|---|---|---|
UART (通用异步收发器) | TXD:发送端 RXD:接收端 GND:公共地 | 异步通信 | 全双工 |
单总线 (1-wire) | DQ:发送/接收端 | 异步通信 | 半双工 |
SPI | SCK:同步时钟 MSIO:主机输入,从机输出 MOSI:主机输出,从机输入 | 同步通信 | 全双工 |
I2C | SCL:同步时钟 SDA:数据输入/输出端 | 同步通信 | 半双工 |
stm32上有USART(通用同步异步收发器),可以作为UART进行异步通信,也可以进行同步通信。
UART传输需要定义的参数:
- 起始位
- 数据位(8位或9位)
- 奇偶校验位(第9位)
- 停止位(1,15,2位)
- 波特率设置