2021-04-16 STM32串行通信

STM32串行通信

一. 串行通信接口背景知识

二. STM32F1串口框图

1.1 处理器与外部设备通信的两种方式:

1. 并行通信:

传输原理:数据各个位同时传输;
优点:速度快;
缺点:占用引脚资源多

2. 串行通信:

传输原理:数据按位顺序传输;
优点:占用引脚资源少;
缺点:速度相对较慢;

串行通信按照数据传送方向,分为:

单工:

数据传输只支持数据在一个方向上传输。

半双工:

允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。

全双工:

允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。
在这里插入图片描述

1.2 串行通信的通信方式

同步通信:

带时钟同步信号传输。SPI,IIC通信接口

异步通信:

不带时钟同步信号。
UART(通用异步收发器),单导线
在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。

在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。
在这里插入图片描述

1.3 UART引脚连接方法

RXD:数据输入引脚,数据接受。
TXD:数据发送引脚,数据发送。

在这里插入图片描述
对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信了

在这里插入图片描述
若是芯片与PC机(或上位机)相连,除了共地之外,就不能这样直接交叉连接了。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。故,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。

1.4 STM32的UART特点

(1)全双工异步通信;
(2)分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;
(3)可编程的数据字长度(8位或者9位);
(4)可配置的停止位(支持1或者2位停止位);
(5)可配置的使用DMA多缓冲器通信;
(6)单独的发送器和接收器使能位;
(7)检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志;
(8)多个带标志的中断源,触发中断;
(9)其他:校验控制,四个错误检测标志。

1.5 串行通信过程

在这里插入图片描述
STM32中串口异步通信需要定义的参数:起始位、数据位(8位或者9位)、奇偶校验位(第9位)、停止位(1,15,2位)、波特率设置。

串口框图:

在这里插入图片描述
框图的上部分,数据从RX进入到接收移位寄存器,后进入到接收数据寄存器,最终供CPU或者DMA来进行读取;数据从CPU或者DMA传递过来,进入发送数据寄存器,后进入发送移位寄存器,最终通过TX发送出去。

然而,UART的发送和接收都需要波特率来进行控制的,波特率是怎样控制的呢?

这就到了框图的下部分,在接收移位寄存器、发送移位寄存器都还有一个进入的箭头,分别连接到接收器控制、发送器控制。而这两者连接的又是接收器时钟、发送器时钟。也就是说,**异步通信尽管没有时钟同步信号,但是在串口内部,是提供了时钟信号来进行控制的。**而接收器时钟和发送器时钟有是由什么控制的呢?

可以看到,接收器时钟和发送器时钟又被连接到同一个控制单元,也就是说它们共用一个波特率发生器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32是一款微控制器系列,它提供了丰富的外设和功能,其中包括了可用于串行异步通信的UART模块。串行异步通信是一种常见的通信方式,适用于远距离通信和与外部设备的数据传输。 在进行STM32串行异步通信实验前,首先需要了解UART的工作原理和配置参数。UART是一种无差错的通信方式,通过串行发送和接收比特流来实现数据传输。其中,TX引脚用于发送数据,RX引脚用于接收数据。 在实验中,我们可以通过STM32的库函数来配置UART模块。首先,需要在STM32的引脚配置中,将对应的引脚设置为UART的功能。然后,使用库函数配置UART的波特率、数据位宽、停止位、校验位等参数。配置完成后,通过编写代码,可以实现发送和接收数据。 在发送数据方面,可以使用库函数中的UART发送函数来发送需要传输的数据,将数据放入发送缓冲区即可。在接收数据方面,可以使用中断接收方式或者查询接收方式来接收UART接收到的数据,从接收缓冲区中读取数据即可。 串行异步通信的实验可以用于许多应用,比如与计算机进行通信,与其他外设进行通信等。通过实验,我们可以学习和了解UART通信的工作原理和使用方式,为后续的应用开发打下基础。同时,也可以帮助我们更好地理解STM32的外设功能,并应用到更广泛的实际应用中。 总之,STM32串行异步通信实验是一项非常有意义的实验,可以通过实践来学习和掌握UART通信的相关知识和技能,为未来的应用开发提供支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值