以stm32f103系列为例:
概述
处理器与外部设备通信的两种方式:
举个例子说明什么是串行通信和并行通信:如果我要发送一个字节的数据,那么我有两种发送方式,第一种:用八根数据线,一根线发送一位。第二种:用一根数据线将这一个字节分8次发送,即一次发送一位。第一种方式就是并行通信,第二种方式就是串行通信。这两种通信方式的特点如下:
并行通信
- 传输原理:数据各个位同时传输。
- 优点:速度快
- 缺点:占用引脚资源多
串行通信
- 传输原理:数据按位顺序传输。
- 优点:占用引脚资源少
- 缺点:速度相对较慢
因为stm32f103里面用的是 usart 和 uart 属于串行通信,因此这篇文章主要是讲解串行通信。
串行通信按照数据传送方向可分为三种:
单工
即数据只能单方向传输,不能反向传输。
半双工
数据可以双向传输,但是同一时刻只允许数据在某一个方向上传输;
全双工
数据可以同时双向传输,但是它要求通信双方都有独立的发送和接收设备
如图:
串行通信的通信方式
- 同步通信:带时钟同步信号传输,通信双方在时钟的控制下进行通信。
SPI,IIC通信接口 - 异步通信:不带时钟同步信号,通信双方必须在通信前定义好波特率、数据格式等。
UART(通用异步收发器),单总线
常见的串行通信接口:
stm32通信接口
stm32f103中包含两种通信接口:
- UART:通用异步收发器
- USART:通用同步异步收发器
它们属于串行异步通信接口。
关于这两种通信的区别可以参见:
UART:universal asynchronous receiver and transmitter通用异步收发器
[Bus Signal] TX , RX
USART:universal synchronous asynchronous receiver and transmitter通用同步
异步收发器
[Bus Signal] TX, RX, CK
USART支持同步模式,因此USART 需要同步始终信号USART_CK(如STM32 单>片机),通常情况同步信号很少使用,因此一般的单片机UART和USART使用方式>是一样的,都使用异步模式。
—来自于: UART 和 USART 有区别
大容量STM32F10x系列芯片,包含3个USART和2个UART
UART异步通信方式引脚连接方法:
- RXD:数据输入引脚。数据接受。
- TXD:数据发送引脚。数据发送。
如果要进行单片机与单片机之间通信的话,需要将一块单片机的RXD与另一块单片机的TXD相连,可能还要加要给 RS232转换器 来设置电平。
前面已经说过大容量STM32F10x系列芯片,包含3个USART和2个UART,在stm32f103中,这五个串口通信的引脚见下图:
不同的单片机可能不一样,可以参见芯片的数据手册。
UART异步通信方式特点:
- 全双工异步通信。
- 分数波特率发生器系统,提供精确的波特率。
发送和接受共用的可编程波特率,最高可达4.5Mbits/s - 可编程的数据字长度(8位或者9位);
- 可配置的停止位(支持1或者2位停止位);
- 可配置的使用DMA多缓冲器通信。
- 单独的发送器和接收器使能位。
- 检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志
- 多个带标志的中断源。触发中断。
- 其他:校验控制,四个错误检测标志。
串口通信过程
STM32串口异步通信需要定义的参数:
- 起始位
- 数据位(8位或者9位)
- 奇偶校验位(第9位)
- 停止位(1,15,2位)
- 波特率设置
参考资料:
正点原子视频
UART 和 USART 有区别