STM32之串口通信蓝牙(BLE)

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

  1. 通信的方式

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

串行通信

传输原理:数据按位依次顺序传输(每一位占据固定的时间长度 MSB or LSB)

优点:占用引脚资源少、成本低、传输距离远

缺点:速度慢

应用场合:常用于工控、测量设备,以及部分通信设备 如蓝牙模块、WIFI模块...

并行通信

传输原理:数据按位同时传输(按照字节或者字节的倍数去传输)

优点:速度快

缺点:占用引脚多,成本高、传输距离近、抗干扰能力弱

应用场合:一般适用数据量大、传输距离较近的场合 如计算机总线

  1. 串行通信分类
  • 如果按照数据的传送方向,可以分为3种

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

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

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

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

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

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

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

  1. 串行接口意义

串行通信就是把数据按位进行顺序传输,在计算机传输的过程中是使用并行通信的,就涉及到串转并和并转串。可以利用软件实现,也可以用硬件实现。如果使用软件实现,会增大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接口标准等。

现在个人计算机提供的串行端口终端的传输速度一般都可以达到115200bps甚至更高,标准串口能够提供的传输速度主要有以下波特率:1200bps、2400bps、4800bps、9600bps、19200bsp、38400bps、57600bps、115200bps等,在仪器仪表或工业控制场合,9600bps是最常见的传输速度,在传输距离较近时,使用最高传输速度也是可以的。

  1. 硬件接线说明

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

如果采用有线方式与PC机进行通信,则需要用到CH340转换芯片,数据会通过USART1串口传输,也就是说需要把UART1的跳线帽1-3短接,2-4短接。

如果采用无线方式与其他传感器进行通信,则不需要用到CH340转换芯片,则需要把UART1的跳线帽3-5短接,4-6短接,另外传感器的TX和RX需要与MCU的UART1的RX和TX进行交叉连接,就是说传感器TX需要连接在MCU的RX,传感器RX需要连接在MCU的TX。

  1. 串口通信参数

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

  • 字符格式

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

最常用的一种字符格式:1bit的起始位(固定的)+ 8bit数据位 + 无校验位 + 1bit停止位!

  1. 奇校验:指的是数据位+校验位里面的数字1的数量是奇数 ,一般不使用校验位
  2. 偶校验:指的是数据位+校验位里面的数字1的数量是偶数 ,一般不使用校验位

3D人脸识别模块的串口的参数

  • 通信速率

在串口通信中,如果设置好了通信的字符格式,还需要通信双方约定好通信速率,也就是单位时间内传输的有效二进制数的个数,所以也被称为波特率(bps baud pre second)。一般串口通信常用的波特率为9600bps、38400bps、57600bps、115200bps。

  1. 波特率:指的是单位时间内传输的码元的数量,单位是bps
  2. 比特率:指的是单位时间内传输的二进制码元的数量,单位是bits/s

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

  1. USART的使用流程

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

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

  • 程序设计
  1. 打开KEIL5工程,然后把ST公司提供的标准外设库的关于USART的源文件添加到工程中
  1. 参考并分析ST公司提供的代码例程以及提供的关于USART源文件的开头注释,进行理解

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

一般MCU和计算机通信是采用有线方式实现,这种方案的缺点是实用性较差,无法实现良好的人机交互,所以正常应该是采用无线通信的方式实现对MCU的控制,一般主流的无线通信方式有BLE、WIFI、Zigbee、LoRa,无线通信最常见的场景就是利用手机远程控制硬件。

|------|-----------------|------------------|----------------------|-------------------------|
| 特性 | BLE | Wi-Fi | Zigbee | LoRa |
| 输传距离 | 10-100 米(受功率影响) | 30-300 米(室内) | 10-100 米(室内) | 2-30 公里(开阔地) |
| 数据速率 | 2Mbp(BLE 5.3) | 9.6Gbps(Wi-Fi 6) | 250kbps(2.4GHz) | 0.3-50kbps |
| 功耗 | 低(μA 级待机) | 高(mA 级连续工作) | 极低(两节 AA 电池可用 2 年) | 超低(μA 级休眠) |
| 网络容量 | 8-200 个节点(Mesh) | 20-200 个节点 | 65,000 个节点(Mesh) | 数千个节点(星型) |
| 工作频段 | 2.4GHz(全球通用) | 2.4GHz/5GHz/6GHz | 2.4GHz/868MHz/915MHz | Sub-GHz(433/868/915MHz) |

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

  • 蓝牙概述
  • 硬件接线

注意:可以把蓝牙模块接入到开发板的UART2接口,UART2_TX的引脚是PA2,UART2_RX的引脚是PA3。

  • 蓝牙参数

想要使用手机连接蓝牙模块,则需要配置蓝牙模块的参数,对于蓝牙模块的参数,需要使用蓝牙模块的厂商提供的AT指令集实现。

  • 程序设计
  • 通信测试

练习:根据蓝牙模块的资料,完成蓝牙模块的参数的设置,要求修改蓝牙模块的名称即可,自己利用手机进行搜索,进行测试。

  • 远程控制

如果打算使用手机APP/微信小程序取远程控制开发板上面的外设,则需要让手机连接配置好的蓝牙模块,如果连接成功,则蓝牙会自动进入数据透传模式,在透传模式下只能进行数据的转发。

实战作业:设计串口的通信协议,要求数据以数据包的形式进行发送和接收,可以参考以下的协议格式:

相关推荐
wenchm1 小时前
细说STM32单片机FreeRTOS将任务通知用作计数信号量的方法及其应用实例
stm32·单片机·嵌入式硬件
尚久龙2 小时前
STM32接收红外遥控器的遥控信号
stm32·单片机·嵌入式硬件
LaoZhangGong1233 小时前
测试W5500的第3步_使用ioLibrary库创建TCPServer
单片机·嵌入式硬件
plmm烟酒僧3 小时前
基于 STM32 的 PC ARGB 风扇控制器设计与实现
stm32·单片机·嵌入式硬件·argb·台式电脑风扇·机箱散热·pwm风扇控制
夜月yeyue4 小时前
手撕I2C和SPI协议实现
linux·c++·stm32·单片机·嵌入式硬件
海绵宝宝的月光宝盒5 小时前
[STM32] 5-1 时钟树(上)
c语言·笔记·stm32·单片机·嵌入式硬件
O。o.尊都假都5 小时前
STM32之串口通信WIFI上云
stm32·单片机·嵌入式硬件
O。o.尊都假都6 小时前
STM32之蜂鸣器和按键
stm32·单片机·嵌入式硬件
陌夏微秋7 小时前
STM32单片机GUI系统1 GUI基本内容
stm32·单片机·嵌入式硬件·硬件架构·硬件工程·智能硬件