首页 > 版块 > STM32 > 帖子正文

STM32学习USART之基础篇

蔡琰 发布于 2021-10-12 11:45
收藏 1 回复 0 浏览 200 原创

今天分享USART设计前的基础知识。

下面我们先来了解一下有关通信的基本概念:

通信两个设备之进行数据交换时,称这个过程为两个设备间的通信

并行通信设备之间的数据是以一位一位的二进制数进行传输的,并行通信的方式就是传输的二进制数同时从主机发送,然后同时到达从机,其优点就是传输速度快、效率高,但当需要传输很多位数据时,就需要很多根数据线,造成成本偏高,还有就是其传输距离不远。

早期的打印机就使用并口来传输数据。下图为并口数据线:

1.jpg 


串行通信两设备之间的数据是一位一位的从主机发送,然后一位一位的到达从机,数据传送可在一根线上进行传输,其传输速度相对并行通信较慢,但其优点是成本低,可以远距离传输。下图为9针串口数据线。

2.jpg 


串行通信的分类:当在串行通信方式下,发送数据是在时钟的控制下进行的,当主机和从机都用同一时钟(时钟的相位和幅值均相同)来进行数据传输时,称这种方式为同步串行通信。当主机和从机不使用同一时钟来进行数据传输时,称这种方式为异步串行通信方式。

主机:两个设备进行通信时,对另一个设备发送数据的设备称为主机。

从机:两个设备进行通信时,接收数据的设备称为从机。

我们已经知道并行通信方式虽然传输速度快,但传输数据位数多时,其所需要的数据线就很多,成本偏高,传输距离远,然而串行通信因其成本低,需要数据线少,传输距离远,而且随着技术的发展串行通信的数据传输速度也变得很快了,有些甚至比并行通信传输速度更快了,所以基于这些优点,串行通信的方式被广泛的使用。下面我们重点介绍串行通信


串行通信

串行通信因其优势突出,被广泛运用,因此产生了一些串行通信的接口标准,如RS-232标准、RS-485标准、RS-422标准等,各个标准在使用过程中又衍生出了一些子标准,如RS-232标准下又有RS-232C类型等,因其各个标准特点不同,所以使用场合也就不同了,但相对于其他标准,RS-232使用较广泛(如大家的台式电脑主机后都有一个RS-232接口),所以下面我们就以RS-232为例给大家进行介绍。

RS-232是串行通信的一种标准,在RS-232标准中主要规定了其通信接口、信号的电平标准、信号的用途。下图描述了基于RS-232标准的两设备之间的通信原理图:

3.jpg 

从上图我们可以了解两个串口设备1和设备2之间使用RS-232标准进行通信的原理,因为控制器1/2使用TTL电平标准(正逻辑标准,逻辑“0”为0V,逻辑“1”为5V),但RS-232标准使用的是电平标准是负逻辑标准(逻辑“0”为+3至+15V,逻辑“1”为-3至-15V),所以当使用RS-232标准对这两个串行设备进行数据传输时,就需要在RS-232接口与控制器之间接一个电平转换芯片,两设备之间通过RS-232接口线连接(有25针或9针接口),这样才能确保两设备正常通信。下面我们分别介绍一下RS-232标准的接口标准和电平标准。


1. 接口标准

RS-232标准有两种接口定义,一种为DB25接口,一种为DB9接口,DB25接口现已很少使用,大多数都使用DB9接口,下面我们对这两种接口进行介绍:

DB25接口

4.jpg 

接口的各个引脚含义如上图所示,其中第2脚和第3脚分别为数据发送和接收脚,第7脚为信号地,其他脚为一些状态标志引脚,在使用时,将接口线对应接在两个设备上,即可正常通信

DB9接口

5.jpg 

从上图可以看出,DB9接口对DB25接口进行了简化,同样也能传输数据,且DB9被广泛使用,下面我们对DB9的各个引脚功能进行简要说明。

第一脚(DCD):

该引脚为接收线路信号检测,该信号是从发送设备->接收设备,用于告知接收设备是否收到载波信号。

第二脚(RXD):

数据接收引脚,用于接收数据。

第三脚(TXD):

数据发送引脚,用于发送数据。

第四脚(DTR):

数据终端准备就绪引脚,用于告知接收设备,发送设备是否准备就绪。

第五脚(SG):

信号地,用于给两个设备共地,因为两个设备之间地电位可能不一致,不一致就会影响数据收发的电平信号,所以必须给两设备进行共地,保证数据的正确传输。

第六脚(DSR):

数据准备好引脚,该信号用于接收设备告知发送设备数据发送准备就绪,随时可以发送数据。

第七脚(RTS):

请求发送引脚,该信号用于发送设备请求向接收设备发送数据。

第八脚(CTS):

清除发送引脚,该信号用于接收设备告知发送设备是否可以发送数据。

第九脚(RT):

振铃提示,表示接收端与线路已经接通。

在两个设备通信时,发送设备的TXD应该接接收设备的RXD,发送设备的RXD应该接接收设备的TXD,SG接SG,在现在的串口通信中,一般就使用这三根线来传输数据信号,具体接线图如下所示:

6.jpg 

按上图对应接线正确,两设备就可正常通信


2. 电平标准

前已提及,RS-232采用的是负逻辑电平标准,所以两设备(使用TTL电平)之间进行串口通信时,必须外加一个电平转换芯片(如MAX232),才能保证通信成功,下面我们介绍RS-232的电平标准。

RS-232标准规定:

逻辑“1”电平为:-5—-15V或-3—-12V

逻辑“0”电平为:+5—+15V或+3—+12V

TTL电平规定(5V):

逻辑“1”电平为:+2.4—+5V

逻辑“0”电平为:0—0.5V

当用不同电平表示同一逻辑信号时,可用下图对比:

7.jpg 

上面讲了两个设备进行串口通信的硬件支持部分,那么两个设备间传输数据应该遵守一些规定,如开始和停止条件、传输数据的位数、传输数据的快慢(波特率)、数据校验等等,只有双方都遵循这些规定,才能使传输数据不容易出错,更加能保证通信过程的顺利进行。因此我们需要对这些规定有一定的了解。


3. 串行通信的分类

1) 同步通信

这种通信方式要求发送设备和接收设备的工作时钟频率一致,发送数据时一般要有一至两个同步字符,保证两设备时钟频率一致后然后开始传输数据,最后为校验位。该种方式可用下图表示:

8.jpg 

2) 异步通信

这种通信方式不要求发送设备和接收设备的工作时钟频率一致,发送数据要有一个开始位,然后为数据位,后面有一个校验位和停止位,相邻两个数据之间常会有空闲位,其方式可用下图描述:

9.jpg 


4.串行通信的方式

1) 单工通信

两个设备之间数据传输时,数据只能从一个设备发送到另一个设备,收发固定,不能互换。可用下图表示上述传输过程:

10.jpg 

2) 半双工通信

两个设备之间数据传输时,两个设备都可以作为发送方或接收方,但同一时刻数据只能从一个设备发送到另一个设备。其数据传输线可以是一条或者两条。可用下图表示上述传输过程:

11.jpg 

3)全双工通信

两个设备之间进行数据传输时,双方都可以作为发送方或接收方,双方可同时双向传输数据,有两条数据传输线。可用下图表示上述传输过程:

12.jpg 


5.数据传输协议

因串行同步通信方式对时钟要求很高,若两个设备间时钟频率稍有不一致,则会造成数据错误,所以我们一般都使用串行异步通信,这样对时钟要求就没那么严格,可以为我们使用,前已提及,两个设备间进行数据传输时,需要遵守一些约定,这样能保证数据正确发送,那么下面我们就来介绍一下这个约定。

1) 波特率

波特率为每秒钟传送二进制数码的位数,也称为比特率,单位为b/s,位/秒,它反映了数据传输的速度,波特率越高,数据传送越快,两设备进行数据传输时,需要把发送设备波特率和接收设备波特率设为一致,这样才能保证发送数据的速度和接收数据的速度一致,从而保证通信的正确进行。

我们常用的波特率为300b/s、600b/s、1200b/s、2400b/s、4800b/s、9600b/s、115200b/s。

2) 起始位

两设备要传输数据时,发送方要先发一个起始位告知对方我要发数据了,这样接收方才知道发送方要发数据了,就准备接收数据。起始位为一位二进制位,规定逻辑“0”为起始位。

3) 数据位

当发送一个起始位之后,接收方知道发送方要发送数据了,准备好之后,发送方就开始发数据了,数据位可以是5个二进制位或者6/7/8个二进制位,我们常取8个二进制位作为数据位,发送数据时,先发送低位后发送高位。

4) 校验位

数据发送完之后,需要判断数据是否和发送方发送的一致,用一个二进制位表示校验位,常用的校验方式有奇校验、偶校验等,奇校验要求数据位和校验位“1”的个数为奇数,偶校验要求数据位和校验位“1”的个数为偶数,校验位可一定程度解决数据出错问题,但也会有误差,当然也可以不设定校验位。

5) 结束位

当一次数据发送完毕后,发送方需要告知接收方这一次数据发送完毕,常用1位或2位二进制位表示,用逻辑“1”表示停止位。

当双方达成约定后,两个设备就可以进行数据传输了。

0 1
发表评论 侵权投诉
评论 (0)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表乌云踏雪网立场。

文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。