打印
[应用相关]

STM32系统学习——USART(串口通信)

[复制链接]
1038|69
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
串口通信是一种设备间非常常用的串行通行方式,其简单便捷,大部分电子设备都支持。
一、物理层
常用RS-232标准,主要规定了信号的用途、通信接口以及信号的电平标准。




“DB9接口”之间通过串口信号线建立起连接,串口信号线使用”RS-232标准“传输数据信号,这些信号通过记过电平转换芯片转换成控制器能识别的TLL标准的电平信号,才能实现通信。

使用特权

评论回复
沙发
范德萨大师傅|  楼主 | 2022-1-25 23:50 | 只看该作者
1.电平标准
可分为TTL标准以及RS-232标准。
常见的电子电路中常见TTL的电平标准,理想状态使用5V表示二进制逻辑1,0V表示逻辑0;而为了增加串口通信的远距离传输以及抗干扰能力,RS-232使用-15V表示逻辑1,+15V表示逻辑0。

使用特权

评论回复
板凳
范德萨大师傅|  楼主 | 2022-1-25 23:51 | 只看该作者

使用特权

评论回复
地板
范德萨大师傅|  楼主 | 2022-1-25 23:53 | 只看该作者
因为控制器一般使用TTL电平标准,所以常常使用MA3232芯片将TTL以及RS-232电平的信号进行互相转换。

使用特权

评论回复
5
范德萨大师傅|  楼主 | 2022-1-25 23:54 | 只看该作者
2.RS-232信号线
最初RS-232串口标准常用于计算机、路由与调制调节器(“猫”)之间通信,设备被分为数据终端设备DTE(计算机、路由)和数据通信设备DCE(调制调节器)。旧台式计算机,一般都有RS-232标准的COM口,也称DB9接口。

使用特权

评论回复
6
范德萨大师傅|  楼主 | 2022-1-25 23:55 | 只看该作者
  DB9信号线说明

使用特权

评论回复
7
范德萨大师傅|  楼主 | 2022-1-25 23:56 | 只看该作者
公头标准接法,只要使用直通型串口线连接起来即可。

使用特权

评论回复
8
范德萨大师傅|  楼主 | 2022-1-25 23:57 | 只看该作者
二、协议层
协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通信双方的数据包格式要约定一致才能正常收发数据 。

使用特权

评论回复
9
范德萨大师傅|  楼主 | 2022-1-25 23:57 | 只看该作者
1、波特率
异步通信中由于没有时钟信号,所以2个通信设备需约定好波特率,常见的有4800、9600、115200等。

使用特权

评论回复
10
范德萨大师傅|  楼主 | 2022-1-25 23:58 | 只看该作者
2、通信的起始和停止信号
串口通信的一个数据包从起始信号开始,知道停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。

使用特权

评论回复
11
范德萨大师傅|  楼主 | 2022-1-25 23:59 | 只看该作者
3、有效数据
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效
数据的长度常被约定为 5、6、7或 8位长

使用特权

评论回复
12
范德萨大师傅|  楼主 | 2022-1-28 17:24 | 只看该作者
4、数据校验
在有效数据之后,有一个可选的数据校验位。由于数据通信相对容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)。
奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位。
偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。
0 校验是不管有效数据中的内容是什么,校验位总为“0”,1 校验是校验位总为“1”。

使用特权

评论回复
13
范德萨大师傅|  楼主 | 2022-1-28 17:26 | 只看该作者
三、STM32的USART简介
通用同步异步收发器是一个串行通信设备,可以灵活的与外部设备进行全双工数据交换。有别与USART,还有一个UART,它在USART基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。
串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。

使用特权

评论回复
14
范德萨大师傅|  楼主 | 2022-1-28 17:29 | 只看该作者
USART 满足外部设备对工业标准 NRZ 异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。USART 支持同步单向通信和半双工单线通信;还支持局域互连网络 LIN、智能卡(SmartCard)协议与 lrDA(红外线数据协会) SIR ENDEC规范。
USART支持使用 DMA,可实现高速数据通信。

使用特权

评论回复
15
范德萨大师傅|  楼主 | 2022-1-28 17:31 | 只看该作者
四、USART功能框图剖析

使用特权

评论回复
16
范德萨大师傅|  楼主 | 2022-1-28 17:32 | 只看该作者
下文结合图片看加深理解。
1、功能引脚
TX:发送数据输出引脚。
RX:接收。
SW_RX:数据接收引脚,属于内部引脚。
nRTS:请求以发送,n表示低电平有效。如果使能 RTS 流控制,当USART接收器准备好接收新数据时就会将nRTS变成低电平;当接收寄存器已满时,nRTS将被设置为高电平。该引脚只适用于硬件流控制。

使用特权

评论回复
17
范德萨大师傅|  楼主 | 2022-1-28 23:21 | 只看该作者
nCTS:清除以发送(Clear To Send),n表示低电平有效。如果使能 CTS流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。

使用特权

评论回复
18
范德萨大师傅|  楼主 | 2022-1-28 23:22 | 只看该作者
SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。

使用特权

评论回复
19
范德萨大师傅|  楼主 | 2022-1-28 23:24 | 只看该作者
USART:下图是STM32F103VET6芯片的USART引脚

使用特权

评论回复
20
范德萨大师傅|  楼主 | 2022-1-28 23:26 | 只看该作者
USART1的时钟来源于APB2总线时钟,最大频率为72MHZ,其他4个时钟来源于APB1总线时钟,最大频率36MHZ。UART只有异步传输功能,没有SCLK、nCTS和nRTS功能引脚。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

102

帖子

0

粉丝