STM32学习USART之基础篇
Posted HQYJ_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32学习USART之基础篇相关的知识,希望对你有一定的参考价值。
今天分享USART设计前的基础知识。
下面我们先来了解一下有关通信的基本概念:
通信:两个设备之间进行数据交换时,称这个过程为两个设备间的通信。
并行通信:设备之间的数据是以一位一位的二进制数进行传输的,并行通信的方式就是传输的二进制数同时从主机发送,然后同时到达从机,其优点就是传输速度快、效率高,但当需要传输很多位数据时,就需要很多根数据线,造成成本偏高,还有就是其传输距离不远。
早期的打印机就使用并口来传输数据。下图为并口数据线:
串行通信:两设备之间的数据是一位一位的从主机发送,然后一位一位的到达从机,数据传送可在一根线上进行传输,其传输速度相对并行通信较慢,但其优点是成本低,可以远距离传输。下图为9针串口数据线。
串行通信的分类:当在串行通信方式下,发送数据是在时钟的控制下进行的,当主机和从机都用同一时钟(时钟的相位和幅值均相同)来进行数据传输时,称这种方式为同步串行通信。当主机和从机不使用同一时钟来进行数据传输时,称这种方式为异步串行通信方式。
主机:两个设备进行通信时,对另一个设备发送数据的设备称为主机。
从机:两个设备进行通信时,接收数据的设备称为从机。
我们已经知道并行通信方式虽然传输速度快,但传输数据位数多时,其所需要的数据线就很多,成本偏高,传输距离远,然而串行通信因其成本低,需要数据线少,传输距离远,而且随着技术的发展串行通信的数据传输速度也变得很快了,有些甚至比并行通信传输速度更快了,所以基于这些优点,串行通信的方式被广泛的使用。下面我们重点介绍串行通信。
串行通信
串行通信因其优势突出,被广泛运用,因此产生了一些串行通信的接口标准,如RS-232标准、RS-485标准、RS-422标准等,各个标准在使用过程中又衍生出了一些子标准,如RS-232标准下又有RS-232C类型等,因其各个标准特点不同,所以使用场合也就不同了,但相对于其他标准,RS-232使用较广泛(如大家的台式电脑主机后都有一个RS-232接口),所以下面我们就以RS-232为例给大家进行介绍。
RS-232是串行通信的一种标准,在RS-232标准中主要规定了其通信接口、信号的电平标准、信号的用途。下图描述了基于RS-232标准的两设备之间的通信原理图:
从上图我们可以了解两个串口设备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接口
接口的各个引脚含义如上图所示,其中第2脚和第3脚分别为数据发送和接收脚,第7脚为信号地,其他脚为一些状态标志引脚,在使用时,将接口线对应接在两个设备上,即可正常通信。
DB9接口
从上图可以看出,DB9接口对DB25接口进行了简化,同样也能传输数据,且DB9被广泛使用,下面我们对DB9的各个引脚功能进行简要说明。
第一脚(DCD):
该引脚为接收线路信号检测,该信号是从发送设备->接收设备,用于告知接收设备是否收到载波信号。
第二脚(RXD):
数据接收引脚,用于接收数据。
第三脚(TXD):
数据发送引脚,用于发送数据。
第四脚(DTR):
数据终端准备就绪引脚,用于告知接收设备,发送设备是否准备就绪。
第五脚(SG):
信号地,用于给两个设备共地,因为两个设备之间地电位可能不一致,不一致就会影响数据收发的电平信号,所以必须给两设备进行共地,保证数据的正确传输。
第六脚(DSR):
数据准备好引脚,该信号用于接收设备告知发送设备数据发送准备就绪,随时可以发送数据。
第七脚(RTS):
请求发送引脚,该信号用于发送设备请求向接收设备发送数据。
第八脚(CTS):
清除发送引脚,该信号用于接收设备告知发送设备是否可以发送数据。
第九脚(RT):
振铃提示,表示接收端与线路已经接通。
在两个设备通信时,发送设备的TXD应该接接收设备的RXD,发送设备的RXD应该接接收设备的TXD,SG接SG,在现在的串口通信中,一般就使用这三根线来传输数据信号,具体接线图如下所示:
按上图对应接线正确,两设备就可正常通信。
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
当用不同电平表示同一逻辑信号时,可用下图对比:
上面讲了两个设备进行串口通信的硬件支持部分,那么两个设备间传输数据应该遵守一些规定,如开始和停止条件、传输数据的位数、传输数据的快慢(波特率)、数据校验等等,只有双方都遵循这些规定,才能使传输数据不容易出错,更加能保证通信过程的顺利进行。因此我们需要对这些规定有一定的了解。
- 串行通信的分类
- 同步通信
这种通信方式要求发送设备和接收设备的工作时钟频率一致,发送数据时一般要有一至两个同步字符,保证两设备时钟频率一致后然后开始传输数据,最后为校验位。该种方式可用下图表示:
2) 异步通信
这种通信方式不要求发送设备和接收设备的工作时钟频率一致,发送数据要有一个开始位,然后为数据位,后面有一个校验位和停止位,相邻两个数据之间常会有空闲位,其方式可用下图描述:
4.串行通信的方式
- 单工通信:
两个设备之间数据传输时,数据只能从一个设备发送到另一个设备,收发固定,不能互换。可用下图表示上述传输过程:
2) 半双工通信:
两个设备之间数据传输时,两个设备都可以作为发送方或接收方,但同一时刻数据只能从一个设备发送到另一个设备。其数据传输线可以是一条或者两条。可用下图表示上述传输过程:
3)全双工通信:
两个设备之间进行数据传输时,双方都可以作为发送方或接收方,双方可同时双向传输数据,有两条数据传输线。可用下图表示上述传输过程:
5.数据传输协议
因串行同步通信方式对时钟要求很高,若两个设备间时钟频率稍有不一致,则会造成数据错误,所以我们一般都使用串行异步通信,这样对时钟要求就没那么严格,可以为我们使用,前已提及,两个设备间进行数据传输时,需要遵守一些约定,这样能保证数据正确发送,那么下面我们就来介绍一下这个约定。
- 波特率
波特率为每秒钟传送二进制数码的位数,也称为比特率,单位为b/s,位/秒,它反映了数据传输的速度,波特率越高,数据传送越快,两设备进行数据传输时,需要把发送设备波特率和接收设备波特率设为一致,这样才能保证发送数据的速度和接收数据的速度一致,从而保证通信的正确进行。
我们常用的波特率为300b/s、600b/s、1200b/s、2400b/s、4800b/s、9600b/s、115200b/s。
- 起始位
两设备要传输数据时,发送方要先发一个起始位告知对方我要发数据了,这样接收方才知道发送方要发数据了,就准备接收数据。起始位为一位二进制位,规定逻辑“0”为起始位。
- 数据位
当发送一个起始位之后,接收方知道发送方要发送数据了,准备好之后,发送方就开始发数据了,数据位可以是5个二进制位或者6/7/8个二进制位,我们常取8个二进制位作为数据位,发送数据时,先发送低位后发送高位。
- 校验位
数据发送完之后,需要判断数据是否和发送方发送的一致,用一个二进制位表示校验位,常用的校验方式有奇校验、偶校验等,奇校验要求数据位和校验位“1”的个数为奇数,偶校验要求数据位和校验位“1”的个数为偶数,校验位可一定程度解决数据出错问题,但也会有误差,当然也可以不设定校验位。
- 结束位
当一次数据发送完毕后,发送方需要告知接收方这一次数据发送完毕,常用1位或2位二进制位表示,用逻辑“1”表示停止位。
当双方达成约定后,两个设备就可以进行数据传输了。
【资料分享】给大家分享一些stm32学习资料,感兴趣的点击下方链接即可学习:
学习交流群:454923484
(stm32 USART串口应用)
PWM脉宽调制技术
基于STM32讲解串口操作
通过Z-stack协议栈实现串口透传
通信协议 - UART串口协议
stm32之SPI通信
SPI通信协议驱动norFlash
stm32 如何用DMA搬运数据
智能小车设计
以上是关于STM32学习USART之基础篇的主要内容,如果未能解决你的问题,请参考以下文章