stm32——usart串口通信,蓝牙模块

一、串口通信的原理与应用

(1)通信的方式

处理器与外部设备之间或者处理器与处理器之间通信的方式分两种:串行通信和并行通信。

串行通信
传输原理:数据按位依次顺序传输(每一位占据固定的时间长度 MSB or LSB)
优点:占用引脚资源少、成本低、传输距离远
缺点:速度慢
应用场合:常用于工控、测量设备,以及部分通信设备 如 USB、COM口

在这里插入图片描述

并行通信
传输原理:数据按位同时传输(按照字节或者字节的倍数去传输)
优点:速度快
缺点:占用引脚多,成本高、传输距离近、抗干扰能力弱(串扰)
应用场合:一般适用数据量大、传输距离较近的场合 如计算机总线
在这里插入图片描述

(2)串行通信分类

如果按照数据的传送方向,可以分为3种

单 工 :数据只能从一方传向另一方,而不能往反方向传输。这是根据应用的特点,对通信双方的软、硬件进行了简化。单向传输设备,如并行接口打印机就是通过单工的方式进行数据传输的。
在这里插入图片描述

半双工 :允许数据往两方传向传输,但只能交替进行,而不能同时进行的传输方式。常见应用如对讲机。

在这里插入图片描述

全双工 :数据支持同时在两个方向上传输,就相当于两个单工通信的结合 如移动电话
在这里插入图片描述

如果按照数据的同步方式,可以分为2种

同步通信:指的是带时钟同步信号,如IIC接口和SPI接口都属于同步通信,同步通信要求通信双方的时钟必须一致(发送数据的同时进行接收数据),同步通信是一种连续串行传输数据的通信方式,一次只传输一帧数据,相对于异步通信而言传输速率更高,但是缺点是通信双方必须使用同一个时钟。
在这里插入图片描述

异步通信:指的是不带时钟同步信号,如UART接口就属于异步通信,要求通信双方必须具有接收器和发送器,但是接收器和发送器可以使用各自的时钟,异步通信是以字符为单位去传输,由于异步通信工作是非同步的,所以接收器必须时刻做好接收数据的准备,所以每个字符都会使用起始位和停止位代表字符的开始和结束,相比于同步通信而言设备成本低,但是缺点是信道利用率低。

注意:使用异步通信,通信双方要约定好的字符格式和通信速率,否则会导致数据丢失等问题出现
在这里插入图片描述

(3)串行接口意义

串行通信就是把数据按位进行顺序传输,在计算机传输的过程中是使用并行通信的,就涉及到串转并和并转串。可以利用软件实现,也可以用硬件实现。如果使用软件实现,会增大CPU的负担,通常使用硬件(串口)实现。

串口是计算机进行串行通信的物理接口,线路简单,串口是按位进行数据的收发,可以用一根线(TXD)发送数据的同时用另一根线接收(RXD)。

常用的串口接口有两种:9针串口(DB-9) 25针串口(DB-25) 每种都分为公头和母头

在这里插入图片描述
在这里插入图片描述

一般DB9串口有9个引脚,但是一般作为串口通信时只需要用到三个引脚,分别是RXD、TXD、GND,其他的线一般用于握手。

单片机如果打算和计算机进行串口通信,则需要注意串口的电平协议,单片机采用的是TTL电平,而计算机采用的RS232电平,所以单片机需要和计算机通信,则需要增加如MAX232电平转换芯片进行电气转换。

TTL电平协议 :采用正逻辑电平 +5V等价于逻辑1 0V等价于逻辑0
RS232电平协议 :采用负逻辑电平 -15V~-3V等价于逻辑1 +3V~+15V等价于逻辑0

在这里插入图片描述

为使通信顺利进行,由通信双方就如何交换信息所建立进来的一套规定,称为通信控制规程,网络术语中称为协议。另外,为统一接口和连接,规程中还有关于信号线功能、电气特性、机械特性等明确的规定,称之为接口标准。如RS-232、RS-485接口标准等。

RS-232是一个已制定很久的标准(RS表示推荐标准,232表示标识符),它描述了计算机及相关设备间较低速率的串行数据通信的物理接口及协议。它是由一个工业贸易组电子工业联合会(EIA)定义的,最初是为电传打印机设备而制定。RS-232是计算机用来与modem及其它串行设备交谈或交换数据的接口。

RS-232接口速率不会很高,线缆最长为15米。RS-232接口通常被用于将电脑信号输入控制,当通信距离较近时,可不需要Modem,通信双方可以直接连接,这种情况下,只需使用少数几根信号线,即TXD、RXD、GND。

RS-232采用负逻辑规定逻辑电平,-3V ~ -15V为逻辑“1”电平,+3V ~ +15V为逻辑“0”电平。这种信号电平与通常并行接口中使用的TTL电平不同,会常用一些电平转换芯片如MAX232。

现在个人计算机提供的串行端口终端的传输速度一般都可以达到115200bps甚至更高,标准串口能够提供的传输速度主要有以下波特率:1200bps、2400bps、4800bps、9600bps、19200bsp、38400bps、57600bps、115200bps等,在仪器仪表或工业控制场合,9600bps是最常见的传输速度,在传输距离较近时,使用最高传输速度也是可以的。传输距离和传输速度的关系成反比,适当地降低传输速度,可以延长RS-232的传输距离,提高通讯的稳定性。

(4)硬件接线说明

但是对于目前来说,很多设备并不会集成DB-9串口,而是直接采用4针的串口(TXD、RXD、GND、VCC),然后通过CH340芯片进行转换,就可以直接通过USB口转串口的方式达到和计算机通信的目的。

在这里插入图片描述

如果采用有线方式与PC机进行通信,则需要用到CH340转换芯片,数据会通过USART1串口传输。

如果采用无线方式与手机进行通信,则不需要用到CH340转换芯片,但是需要通过蓝牙模块进行数据的转发,蓝牙模块如果接在USART1串口的接口,则数据也是通过USART1进行传输。

注意:如果打算实现有线通信和无线通信的结合,则需要把无线通信模块链接在其他的串口上即可,想要和计算机通信,只能使用USART1串口,因为引脚是固定的。

(5)串口通信参数

串口通信属于全双工异步通信,所以通信双方必须具有发送端(TXD)与接收端(RXD),由于异步通信不需要时钟来进行数据同步,但是通信双方必须提前约定好字符格式与通信速率。

字符格式

一般在进行串口通信的时候,需要通信双方在协议层规定好传输的数据包(字符帧)的格式,字符帧由起始位、数据位、校验位、停止位组成。这样通信双方就可以利用起始位和停止位实现同步。 关于字符格式的相关参数的说明可以参考STM32中文参考手册第26.3.1章节。
在这里插入图片描述
在这里插入图片描述

通信速率

在串口通信中,如果设置好了通信的字符格式,还需要通信双方约定好通信速率,也就是单位时间内传输的有效二进制数的个数,所以也被称为波特率(bps baud pre second)。一般串口通信常用的波特率为9600bps、38400bps、57600bps、115200bps,当然也有其他的选择,波特率有对应的计算公式,可以参考STM32中文参考手册的第26.3.4章节。
在这里插入图片描述

举个例子:大多数使用串口通信的传感器的字符格式都是8bit数据位、1bit停止位、无奇偶校验位,当然还必须有1bit起始位,所以一帧数据是10bit,如果通信速率设置为9600bps,则单位时间内能传输的数据帧为9600/10 = 960帧。这是使用频率最高的一种通信速率!!!!

(6)USART的使用流程

USART指的是通用同步异步收发器,是STM32中的串行通信设备,STM32F407ZET6一共提供了6个串行接口供用户使用,其中4个为USART,2个为UART。UART指的是通用异步收发器,其实就是在USART的基础上裁掉了同步通信的功能,只保留了异步通信。

平时大家一般都是使用串口的异步通信功能,区分同步还是异步其实很简单,就是看是否在通信是对外提供时钟输出。
在这里插入图片描述

可以看到STM32中的USART采用工业标准中常用的NRZ编码进行通信,NRZ码指的是不归零码(Non-Return-Zero),指的是每次传输1bit数据后电平不归零,其实还有一种RZ码,指的是归零码(Return-Zero),指的是每次传输1bit数据后需要电平归零。

1.打开KEIL5工程,然后把ST公司提供的标准外设库的关于USART的源文件添加到工程中

在这里插入图片描述

2.参考并分析ST公司提供的代码例程以及提供的关于USART源文件的开头注释,进行理解

在这里插入图片描述

在这里插入图片描述

如果打算串口发送字符串,由于字符串属于字符序列,所以按照顺序发送字符,由于串口外设的发送数据寄存器是8bit的,所以每次只能发送1个字符,并且只有等上一次字符发送完成,才可以发送下一个字符。

可以通过检测串口外设的发送数据寄存器是否为空,来判断待发送的字节是否发送完成,所以需要检测状态标志。

在这里插入图片描述

二、蓝牙模块的原理与应用

一般MCU和计算机通信是采用有线方式实现,这种方案的缺点是实用性较差,无法实现良好的人机交互,所以正常应该是采用无线通信的方式实现对MCU的控制,一般主流的无线通信方式有BLE、WIFI、Zigbee、LoRa,其中Zigbee、LoRa可以实现组网通信,其实BLE蓝牙也可以实现组网通信,当然蓝牙除了组网之外,最常用就是方案就是利用手机远程控制硬件。
在这里插入图片描述

不同厂商的蓝牙模块的型号可能不同,但是通信方式是一样,都是采用串口通信,但是需要需要再使用蓝牙模块之前先进行参数设置,目的是和手机可以进行配对,想要修改蓝牙的参数(名称、密码、波特率…)都需要使用厂家提供的指令集实现,一般再哪个淘宝店买的蓝牙模块就在哪个淘宝店下载蓝牙模块的资料。

蓝牙概述

在这里插入图片描述

硬件接线

在这里插入图片描述

程序设计

在这里插入图片描述

修改名称

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

通信测试

可以选择手机APP对蓝牙模块进行连接,比如安卓手机APP(蓝牙调试器)或者使用微信小程序(蓝牙串口)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值