一,一般通信的两种方式
1,并行通信: 数据各个位同时传输,速度快,占用引脚资源多。(例如:传输8bit数据,需要8个引脚,8个位一起传输)
2,串行通信:数据按位顺序传输。速度相对较慢,占用引脚资源少 (例如:传输8bit数据,需要至少1个引脚,一位一位地传输)。
● 按照数据传送方向,串行通信分为:
单工: 数据传输只支持数据在一个方向上传输
半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
● 串行通信三种传送方式:如下图所示:
● 串行通信的通信方式
同步通信:带时钟同步信号传输。-SPI,IIC通信接口。
异步通信:不带时钟同步信号。UART(通用异步收发器),单总线。
● 常见的串行通信接口
通信标准 | 引脚说明 | 通信方式 | 通信方向 |
UART (通用异步收发器) | TXD:发送端 RXD:接受端 GND:公共地 | 异步通信 | 全双工 |
单总线 (1-wire) | DQ:发送/接受端 | 异步通信 | 半双工 |
SPI | SCK:同步时钟 MISO:主机输入,从机输出 MOSI:主机输出,从机输入 | 同步通信 | 全双工 |
I2C | SCL:同步时钟 SDA:数据输入/输出端 | 同步通信 | 半双工 |
二,STM32的串口通信接口
- UART:通用异步收发器
- USART:通用同步异步收发器
- 大容量STM32F10x系列芯片,包含3个USART和2个UART。
三,UART异步通信方式引脚连接方法
-RXD:数据输入引脚。数据接受。
-TXD:数据发送引脚。数据发送。
有两根线,一根TXD用于发送,一根RXD用于接收,
UART的串行数据传输不需要使用时钟信号来同步传输,而是依赖于发送设备和接收设备之间预定义的配置。对于发送设备和接收设备来说,两者的串行通信配置应该设置为完全相同。
如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
|
| STM32数据手册中有定义 |
四,UART异步通信方式特点:
- 全双工异步通信。
- 分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s
- 可编程的数据字长度(8位或者9位);
- 可配置的停止位(支持1或者2位停止位);
- 可配置的使用DMA多缓冲器通信。
- 单独的发送器和接收器使能位。
- 检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志
- 多个带标志的中断源。触发中断。
- 其他:校验控制,四个错误检测标志。
五,串口通信过程
六,STM32串口异步通信需要定义的参数
- 起始位:表示数据传输的开始,电平逻辑为“0” 。
- 数据位(8位或者9位):可能值有5、6、7、8、9,表示传输这几个bit 位数据。一般取值为8,因为一个ASCII 字符值为8 位。
- 奇偶校验位(第9位)--奇校验/偶校验(奇校验:前面数据位中已经有奇数个1或者0,则校验位设置为0,否则设置为1,偶校验同理)用于接收方对接收到的数据进行校验,校验“1” 的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。
- 停止位(1,15,2位)表示一帧数据的结束。电平逻辑为“1”
- 波特率设置
示例:
七,STM32串口(UART)框图(参考STM32中文参考手册)
八,stm32常用的串口相关寄存器
- USART_SR状态寄存器
- USART_DR数据寄存器
- USART_BRR波特率寄存器
九,波特率计算方法