基于STM32的无线模块固件配置系统设计

(整期优先)网络出版时间:2022-11-02
/ 2

基于STM32的无线模块固件配置系统设计

蒋开伟

台州职业技术学院,浙江台州,318000

摘    要:控制器和无线通信模块是便携式智能设备的核心部件,为了避免设备间的通信干扰,不同设备往往需要配置不同的通信参数,本文介绍一种以常见的STM32为控制器、Si446X为收发器的固件配置系统,为类似应用提供设计思路。

关键词:固件配置;上位机;Si446X; STM32

0引言

随着物联网技术和芯片技术的发展,便携式智能设备已广泛应用于家庭、医疗单位、工业场所等[1][2],便携式智能设备最核心的两大部件是主控芯片和无线通信模块,其中主控芯片的程序往往在测试完毕后一次性烧录即可[3],而无线通信模块为了避免设备间的干扰,需要为每个设备配置不同的参数,如频点、地址等。因此,设计一个灵活方面的无线模块固件配置系统对于设备批量生产或客户自己配置都具有较大意义。本文介绍一种以常见的STM32为控制器、Si446X为收发器的固件配置系统,为类似应用提供设计思路。

1总体设计

系统由上位机和便携式终端组成,其中便携式终端的主控芯片为STM32L051系列芯片,无线收发器采用较常使用的Silicon Labs公司的Si446X系列芯片。

1.1 主控芯片

STM32L051x6/8 微控制器采用高性能 ARM Cortex-M0+ 32 位 RISC 内核,工作频率为 32 MHz,内存保护单元(MPU),高速嵌入式内存(64 KB 闪存程序存储器、2 KB 数据 EEPROM 和 8 KB RAM)以及增强型 I/O 和外围设备。STM32L051x6/8 器件为各种性能提供高功率效率。它是通过多种选择来实现的内部和外部时钟源、内部电压适应和几种低功耗模式。STM32L051x6/8 器件提供多种模拟功能,一个带硬件过采样的 12 位 ADC,两个超低功耗比较器、几个定时器、一个低功耗定时器 (LPTIM)、三个通用 16 位定时器和一个基本定时器、一个 RTC 和一个可用作时基的 SysTick。它们还具有两个看门狗,一个具有独立时钟和窗口功能的看门狗和一个基于总线时钟的窗口看门狗。此外,STM32L051x6/8 器件嵌入了标准和高级通信接口:最多两个 I2C、两个 SPI、一个 I2S、两个USART,一种低功耗 UART (LPUART)。

1.2 Si446X

Si446X是由芯科实验室(Silicon Labs)推出的一款高性能、超低功耗sub-GHz收发器,是EZRadioPRO®系列中一员,包括完整的发送器和接收器。Si446X的工作频率119–960 MHz,最大输出功率+ 20dBm,灵敏度为-126dBm,PA支持+ 27dBm或+ 30dBm,采用(G)FSK,4(G)FSK,(G)MSK,OOK和ASK调制,数据速率从表面上100bps到1Mbps,工作电压1.8V- 3.6V,关断电流30nA,待机电流50nA,主要用在智能电表、遥控、家庭安全和断开、车库和大门开启、遥测、家庭自动化、传感器网络、健康监视等。

2硬件设计

2.1 串口通信接口

串口通信接口采用芯片CH340实现USB转串口功能,简化与上位机的通信接口。如图1所示的串口通信接口还具备STM32程序一键下载的功能,方便设备开发和维护。STM32状态模式取决于BOOT0BOO1两个引脚的状态,当BOOT01BOOT10时,进入下载模式,为此我们可以通过在电路上先将BOOT1直接拉低,然后单纯控制BOOT0的状态来实现。除了BOOT0BOOT1的状态,进入下载模式还需要复位脚先拉低一段时间后再拉高。具体到电路上, RST#DTR#是低电平有效,因此没有动作的时候都是保持高电平的。当用MCU ISP软件下载程序时, CH340的两个引脚DTR#=1,RTS#=0, Q1Q2三极管均导通,此时BOOT0为高,NRST脚为低;一段时间后DTR#拉低,此时Q2截止,NRST被拉高,系统进入下载模式,下载结束后两个引脚重新拉高,Q1Q2均截止。

1. 串口通信接口

2.2无线模块接口

Si446X与主控制器的通信采用标准的4线SPI,对应引脚分别是SCLKSDISDOnSELSPI接口具有最高10MHz的设计频率,主控制器通过SDI引脚向通信模块写数据,而通过SDO引脚读取数据。每次发起SPI指令时,nSEL引脚应当拉低,SDI数据的第一个字节是通信模块固件的指令,之后紧跟若干字节的参数数据,不同的指令数据长度不尽相同;SCLK为数据同步信号,其他上升沿与SDI数据的中间对齐。Si446X内部也蕴含了一个微控制器,用于控制内部各种功能。每次发起一次SPI读取时,都会先返回一个CTS响应,提示读取正常,一旦CTS响应成功,读取的数据就会被逐一地输出来。类似地,输入数据每次通过

SDO引脚在SCLK上升沿时被读取。

Si446X射频端收发共用一个天线。如图2所示的方式为TX/RX直连配准方式,对于大多输出功率低于17dBm的都会采用这种配置方式,对于高于20dBm的往往有一个外部TX/RX开关用于切换收发。

2.无线通信模块接口

3软件设计

3.1数据格式

拟配置的无线模块固件信息包括:波特率、奇偶校验、空中速率、发射功率、前向纠错、传输方式、唤醒时间、IO驱动、模块地址、信道频率等。将上述信息设计成如表1所示的数据格式,方便固件信息的配置与读取处理。

1. 数据格式

7

6

5

4

3

2

1

0

信  息  头

地址高位

地址低位

校验位

串口波特率

空中速率

通信信道

传输模式

驱动方式

唤醒时间

FEC

发射功率

1个字节为信息头用于辨别信息类型;地址信息共2个字节,地址范围0~65535;第4个字节0~2位为空中传输速率,3~5位为串口波特率,6~7位为串口校验位;第5个字节为通信信道信息;第6个字节0~1位为发射功率,对应27dBm24dBm21dBm18dBm,第2位为FEC开关,1为打开FEC纠错,3~5位为唤醒时间,第6位为IO驱动方式;第7位为定点发送使能位,对应透明传输模式和定点传输模式。

3.2串口通信流程

STM32中的UART模块主要处理来着上位机或无线模块的数据,具体流程主要包括如下内容:

1)初始化:设置GPIO端口,配置GPIO的模式和具体IO口,设置波特率、字长、停止位、校验位、流控制以及收发模式;开启中断并使能;配置NVIC,包括中断通道、抢占优先级、子优先级、IRQ通道使能等。

2)数据接收:接收来自上位机的配置信息数据的时机具有不确定性,因此采用中断方式处理数据的接收,增加系统的灵活性。首先提取信息头,辨别信息类型,如果是配置信息,则紧接着将后续的配置信息保存并处理,为配置无线模块固件做准备;如果是配置信息读取指令,则准备向无线模块获取信息。

3)数据发送:将从无线模块固件中获得的配置信息,根据数据格式进行封装并发送。

3.3上位机

上位机基于VS2013平台采用C#开发而成,主要功能是配置和读取波特率、奇偶校验、空中速率、发射功率、前向纠错、传输方式、唤醒时间、IO驱动、模块地址、信道频率等信息内容,数据格式与表1一致。

3. 上位机软件界面

4结束语

本文提出了一种基于STM32L051为核心控制器和Si446X为目标固件配置无线收发器件系统,系统通过USB线和上位机软件就可以方便地读取和该写无线模块的固件参数,极大地方便用户自己配置或设备批量生产时使用,也能为类似需求提供设计思路。

项目来源:浙江省教育厅一般科研项目(Y202044751)。

参考文献:

[1]陈德宁,庄鑫财,张俊源,邱萍安深,许熊汕.基于物联网的老人健康监控系统[J].电子世界,2020(08):120-121.

[2]尹凡. 便携式设备应用于microRNA-21检测的研究[D].江南大学,2021.

[3]陈峰,刘鹏飞,徐明阳,伍能,邢宇鹏,谢征.基于485总线的STM32远程固件更新与实现[J/OL].计算机测量与控制:1-13.