基于STM32L152和S14432的无线网络系统设计
引言
在现代生活和生产中,无线通信技术应用越来越广泛。生活小区、医院、工厂等复杂环境中的各种仪器仪表可以通过无线网络进行数据采集和监控。工业现场自动化数据的控制和采集需要传输距离1km左右、功耗低、简单、可靠、价格低廉的无线通信网络。无线收发芯片S14432的通信距离可达1~2km。本文设计了一种基于STM32L152和S14432的无线网络系统。系统采用低功耗、高性能的Cortex-M3核32位微控制器STM32L152和高集成度、低功耗的无线收发芯片S14432,适用于短距离的现场数据采集和监控。系统采用网络化管理并运用主节点备份技术和LEPS路由协议保证系统的可靠性和拓展性。
1 主控芯片
STM32L152是意法半导体公司提供的超低功耗、高数据安全性、高效能的ARM Cortex-M3微控制器系列芯片。STM32L15XXX系列芯片采用意法半导体的EnergyLite超低功耗平台,通过6个超低功耗模式能够在任何设定时间以最低的功耗完成任务。该控制器低功耗运行模式电流为10.4μA,工作电压为1.8~3.6V,片上模拟功能的最低工作电压为1.8V,数字功能的最低工作电压为1.65V。工作温度范围为-40~+85℃,在32MHz频率下的处理性能达到33 DMOPS(最大值),拥有灵活的欠压复位、片上闪存支持纠错码(ECC)、存储器保护单元(MPU)和JTAG熔断器。它采用的ARM Cortex-M3处理器可提供出色的计算性能和对事件的卓越系统响应,同时可应对动态和静态功率限制的挑战。
系统中采用STM32L152芯片,48脚LQFP封装。该芯片拥有128KB Flash、16KB RAM、4096字节的E2PROM以及8个16位定时器;片上集成了丰富的外围模块,包括12位ADC、12位DAC、比较器、SPI、I2C、LCD、USB等。
2 无线网络系统的体系结构
无线网络系统的体系结构如图1所示。系统是由主节点和多个从节点组成的树型拓扑网络。主节点组建和管理整个无线网络,实现向从节点传送控制指令和接收从节点的数据信息。从节点实现接收主节点传达的控制指令和将数据信息向主节点的传送。
3 系统硬件设计
无线网络系统的硬件结构如图2所示。主节点、备份主节点和从节点都采取同样的硬件电路。STM32L152单片机控制SI4432实现无线数据的收发。射频收发芯片采用的是Silicon Labs公司推出的SI4432芯片。该芯片是一款高集成度、低功耗的EZRadioPRO系列无线收发芯片。其工作频段为240~960MHz,接收灵敏度达到-117dB,可提供极佳的链路质量,在扩大范围的同时将功耗降至最低,最高输出功率可达+20dB,传输距离可达2km。
主控制芯片sTM32L152选用高速外部时钟信号(HSE),通过BOOT0和BOOT1来选择3种boot模式。芯片可以采用STM studio、Keil MDK-ARM等编译工具,拥有20引脚的JTAG接口可以使用ST-LINK和ULINK2仿真器。主控制电路通过一个RS232接口与控制系统通信。主控制芯片硬件电路如图3所示。
STM32L152通过标准的SPI接口与SI4432相接。主控制芯片通过SPI接口对射频芯片内部寄存器进行初始化配置,并且发送控制指令和读写数据信息。SI4432的SDN、NIRQ、NSEL、GPIO0、GPIO1、GPIO2等与主控制芯片相连。SDN引脚为工作模式位,NIRQ引脚为中断状态输出,NSEL引脚为片选信号,GPIO1和GPIO2为天线选择位。射频电路工作在470MHz的中心频率段。470~510MHz为国家无线电管理部门免申请的无线计量频段。射频芯片硬件电路如图4所示。
整个无线网络只采用一个主节点,设计中采用硬件冗余技术。在主节点处设置一个备用主节点,备用主节点是主节点的复制品,拥有主节点同样的控制和管理,以及同一级别的主节点地址。当控制系统检测到主节点出现故障时,可以激活冗余主节点,以替代主节点保证整个无线网络系统的正常运行。
4 系统软件设计
系统的软件设计分为主节点和从节点两部分。软件设计采用功能模块化的设计思路,系统又可分为初始化模块、应用模块和网络管理模块。其中初始化模块包括单片机初始化模块、射频芯片初始化模块和应用初始化模块;应用模块包括无线发送模块、无线接收模块、数据处理模块、工作模式模块;网络管理模块是通过路由协议组建无线网络。
4.1 系统初始化
系统上电后,单片机根据主节点和从节点的区别对硬件和功能模块进行初始化,设定各个引脚的功能、单片机的工作模式和资源分配,以及各个应用功能模块的初始化。然后,通过SPI接口对无线射频芯片进行初始化。射频芯片的工作模式、频率、传输速度、传输方式等都按主从节点分别设置。
4.2 数据处理
系统采用类似ZMAC协议的帧格式对数据进行打包通信。数据包的格式如下:
数据包的前端加上8n位的前导码,是为了使接收端进行帧同步。前导码之后是帧同步字,当接收端收到帧同步字之后,开始接收数据。包长和校验码是接收端用来校验数据接收错误与否。数据处理模块负责在发送前和接收后对数据包进行信息处理。数据包分为网络维护类和信息类,通过包类型位区分,其中数据包内数据位的信息不通。当网络系统处于组建和维护期时,数据包属于网络维护类,数据位的信息为节点的路由信息。节点的路由信息包括到汇聚节点的跳数、到相邻节点的链路质量评估信息、节点编号等。当网络系统处于工作状态时,数据位的信息为控制指令或数据码。节点在数据信息发送前,数据处理模块负责将需要发送的数据信息进行分类,然后向其中分别加入各种不同的位信息,形成成熟的待发送的数据包。节点在数据信息接收后,该模块负责对数据包进行校验,将数据包分类,然后对各种信息位进行分离整理。其中,在发送和接收时,通过对SI4432寄存器的配置操作,可以直接分离出配置位。配置位结构如下:
4.3 数据发送和接收