今天课程内容:UART串口的相关知识,UART的编程及应用。
串行通讯是控制器对外交流的三大手段之一,另外两种分别是GPIO和并行通讯。以后如果有机会,我会单独讲述通讯的相关知识。串行通讯的特点是使用少量的引脚,将数据按照约定的方式顺序的输出或输入。这里的约定称为协议。因此,要想和微控制器成功对话,协议是必不可少的部分。串行通讯的协议有很多,常见的USB,以太网等都是不同的串行通讯协议。而这些协议往往很复杂,需要专门的硬件和软件来进行解析,并将数据转换为微控制器能够处理的形式。
![c6cbee4bc501f2a1196a714ad97e0b9e.png](https://i-blog.csdnimg.cn/blog_migrate/77ff13be2f5ff7042203e209d88bc3f0.jpeg)
由于芯片资源有限,一款微处理器不可能支持所有的串行通讯协议,但一般会支持最基础最简单的三种串行通讯协议:UART, SPI, I2C。这三种串口也是最常见的通讯接口。今天,我们就解说一下UART的编程及使用。
UART-通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),其实我们早已和它打交道多次了。还记得microPython板在通过USB连接电脑时除了找到一个Flash盘,还会找到一个用于连接控制台软件的串口设备吗?
![a23fb12f796a06a2650d52e82b450130.png](https://i-blog.csdnimg.cn/blog_migrate/973c168ce57a1162dc63eb6af42470cb.jpeg)
这个口就是UART串口了,但需要说明的是,这个口并没有占用微控制器自带的UART资源,而是使用了USB接口通过软件模拟成UART口,因此,占用了USB接口资源。由于现在的计算机设备工作速度越来越高,因此,计算机已经逐渐淘汰了低速的UART通讯端口,很多电脑主机已经不带有UART串口了,而被速度更高的USB接口逐渐取代了。但由于UART协议简单占用资源较少,因此,在微型处理器中仍然广泛使用。微处理器中的UART接口可用于微处理器之间的数据交换,也可以用在微处理器和外部设备,模块等硬件之间的数据交换,当然,微处理器也可以和计算机之间进行数据交换,而且这还是非常必要的调试程序的手段,如同我们正在使用的microPython的控制台软件,通过该软件,我们可以直接输入程序指令,得到运行结果:
![3fa263c0a09419b28a8f085b68fbf123.png](https://i-blog.csdnimg.cn/blog_migrate/5d9dc83943e036494b2b2a50ca349854.jpeg)
UART通讯时,需要两根信号线,分别是输出数据信号线和输入数据信号线,这两个信号线在两个通讯设备间需要交叉连接。
![c977093e4f9dbfb4b70b7441abfa1b7f.png](https://i-blog.csdnimg.cn/blog_migrate/bef8ed1d04bd3ad4e2b9dc73bbc8ea9b.jpeg)
这样,两个设备才能相互交换数据。也正因为如此,UART串口又是一种从A点到B点的点对点连接协议。这个协议是不支持多方通讯的。另外,用于需要将两方设备连接到一起,因此,需要保证信号的电压大家是相同的,因此,双方都要认同同一个0V电压。因此,除信号线外,还需要将两台设备的地信号(GND)连接到一起。因此,通常要连接3根线:
![fe2a7fc05e8dbb7d2bb7a0260e7cf9ef.png](https://i-blog.csdnimg.cn/blog_migrate/ef4e20c34b8efbd4ce91414b50c8566a.jpeg)
前面已经讲到,我们平时用控制台软件连接的实际上是微处理器USB口模拟的串口,而本次要学习的是微处理器上真正的UART串口编程。那么,PyBoard板上UART接口在哪里呢?如下图:
![1923015a1526c4b4c9da6b664e7b21e7.png](https://i-blog.csdnimg.cn/blog_migrate/1bd61485b8a32555d20671b6ee9d505e.jpeg)
图中红圈部分,可以看到PyBoard板上的UART资源非常丰富,竟然有5个。对于每个UART设备接口,都可以使用。今天。我们以UART1为例,将UART1连接到电脑上,演示PyBoard和计算机之间的数据通讯。
(未完待续)
祝各位玩得愉快。请继续关注:创客DIY乐园(MakerDIY-Park),您的关注就是我前进的动力。