串口通信是MCU最基本的通信方式,对于STM32来说也是如此。本文重点讲述STM32单片机的串口通信,主要包括的内容是:通信基础知识、串口通信原理、USART有关寄存器和自定义编写串口通信函数。
一、通信接口背景知识
1. 并行通信和串行通信
所谓通信,其实说白了就是处理器与外部设备之间的交流,就像电脑连接键盘、鼠标或打印机之类。计算机领域的通信一般有两种方式,即并行通信和串行通信。这两种方式的优缺点对比如下:
并行通信
-传输原理:数据各个位同时传输。
-优点:速度快
-缺点:占用引脚资源多
串行通信
-传输原理:数据按位顺序传输。
-优点:占用引脚资源少
-缺点:速度相对较慢
2. 串行通信的分类
由于本文所讲的串口通信属于串行通信,所以就不对并行通信做过多的讲解了,下面是串行通信的分类,按照数据的传送方向可以分为:
单工:数据传输只支持数据在一个方向上传输
半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
为了清晰的表述这三种传输方向上的区别,我们看下图:
(a)单工通信 (b)半双工通信 (c)全双工通信
另一种分类方式是根据通信是否有时钟信号来划分的,分为同步通信和异步通信。
同步通信指的是带有时钟同步信号,比如:SPI通信、IIC通信;
异步通信指的是不带时钟同步信号比如:UART(通用异步收发器),单总线。
我们以下面的表格来详细对比串行通信接口
|