STM32L152和S14432的无线网络系统设计
扫描二维码
随时随地手机看文章
摘要:运用低功耗Cortex-M3微控制器STM32L152和低功耗集成无线收发芯片S14432设计了一种无线网络系统。介绍了系统的体系结构、硬件电路、数据的接收和发送流程,以及网络管理机制。系统运用了链路质量估计算法和硬件冗余技术,采用TinyOS系统的LEPS路由协议实现无线网络的构建和管理。
关键词:STM32L152;S14432;无线网络
引言
在现代生活和生产中,无线通信技术应用越来越广泛。生活小区、医院、工厂等复杂环境中的各种仪器仪表可以通过无线网络进行数据采集和监控。工业现场自动化数据的控制和采集需要传输距离1 km左右、功耗低、简单、可靠、价格低廉的无线通信网络。无线收发芯片
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.6 V,片上模拟功能的最低工作电压为1.8 V,数字功能的最低工作电压为1.65 V。工作温度范围为-40~+85℃,在32 MHz频率下的处理性能达到33 DMOPS(最大值),拥有灵活的欠压复位、片上闪存支持纠错码(ECC)、存储器保护单元(MPU)和JTAG熔断器。它采用的ARM Cortex-M3处理器可提供出色的计算性能和对事件的卓越系统响应,同时可应对动态和静态功率限制的挑战。
系统中采用STM32L152芯片,48脚LQFP封装。该芯片拥有128 KB Flash、16 KB RAM、4 096字节的E2PROM以及8个16位定时器;片上集成了丰富的外围模块,包括12位ADC、12位DAC、比较器、SPI、I2C、LCD、USB等。
2 无线网络系统的体系结构
无线网络系统的体系结构如图1所示。系统是由主节点和多个从节点组成的树型拓扑网络。主节点组建和管理整个无线网络,实现向从节点传送控制指令和接收从节点的数据信息。从节点实现接收主节点传达的控制指令和将数据信息向主节点的传送。
3 系统硬件设计
无线网络系统的硬件结构如图2所示。主节点、备份主节点和从节点都采取同样的硬件电路。STM32L152单片机控制SI4432实现无线数据的收发。射频收发芯片采用的是Silicon Labs公司推出的SI4432芯片。该芯片是一款高集成度、低功耗的EZRadioPRO系列无线收发芯片。其工作频段为240~960 MHz,接收灵敏度达到-117 dB,可提供极佳的链路质量,在扩大范围的同时将功耗降至最低,最高输出功率可达+20 dB,传输距离可达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为天线选择位。射频电路工作在470 MHz的中心频率段。470~510 MHz为国家无线电管理部门免申请的无线计量频段。射频芯片硬件电路如图4所示。
整个无线网络只采用一个主节点,设计中采用硬件冗余技术。在主节点处设置一个备用主节点,备用主节点是主节点的复制品,拥有主节点同样的控制和管理,以及同一级别的主节点地址。当控制系统检测到主节点出现故障时,可以激活冗余主节点,以替代主节点保证整个无线网络系统的正常运行。
4 系统软件设计
系统的软件设计分为主节点和从节点两部分。软件设计采用功能模块化的设计思路,系统又可分为初始化模块、应用模块和网络管理模块。其中初始化模块包括单片机初始化模块、射频芯片初始化模块和应用初始化模块;应用模块包括无线发送模块、无线接收模块、数据处理模块、工作模式模块;网络管理模块是通过路由协议组建无线网络。
4.1 系统初始化
系统上电后,单片机根据主节点和从节点的区别对硬件和功能模块进行初始化,设定各个引脚的功能、单片机的工作模式和资源分配,以及各个应用功能模块的初始化。然后,通过SPI接口对无线射频芯片进行初始化。射频芯片的工作模式、频率、传输速度、传输方式等都按主从节点分别设置。
4.2 数据处理
系统采用类似ZMAC协议的帧格式对数据进行打包通信。数据包的格式如下:
数据包的前端加上8n位的前导码,是为了使接收端进行帧同步。前导码之后是帧同步字,当接收端收到帧同步字之后,开始接收数据。包长和校验码是接收端用来校验数据接收错误与否。数据处理模块负责在发送前和接收后对数据包进行信息处理。数据包分为网络维护类和信息类,通过包类型位区分,其中数据包内数据位的信息不通。当网络系统处于组建和维护期时,数据包属于网络维护类,数据位的信息为节点的路由信息。节点的路由信息包括到汇聚节点的跳数、到相邻节点的链路质量评估信息、节点编号等。当网络系统处于工作状态时,数据位的信息为控制指令或数据码。节点在数据信息发送前,数据处理模块负责将需要发送的数据信息进行分类,然后向其中分别加入各种不同的位信息,形成成熟的待发送的数据包。节点在数据信息接收后,该模块负责对数据包进行校验,将数据包分类,然后对各种信息位进行分离整理。其中,在发送和接收时,通过对SI4432寄存器的配置操作,可以直接分离出配置位。配置位结构如下:
4.3 数据发送和接收
数据发送模块负责将数据包发送出去。当接收到发送指令时,首先通过SPI清空射频芯片的发送FIFO,然后向发送FIFO里写入需要发送的数据。打开射频芯片发送完成中断并禁止其他所有中断。微控制器使能射频芯片的发送功能,数据开始无线发送。将IRQ引脚拉高,并等待无线发送完成中断。如果数据发送成功,则NIRQ变低电平。
数据接收模块负责接收数据包。当接收到微控制器的接收指令时,首先通过SPI清空射频芯片的接收FIFO。打开前导码接收、帧同步中断和接收包数据有效中断,并关闭其他中断。准备好开始接收。若引脚NIRQ变为低电平,且读取到接收包数据有效中断位,通过SPI读取接收FIFO中的数据,关闭接收功能。发送和接收程序流程如图5所示。
4.4 系统管理机制
无线网络由主节点和从节点组成,是一个以主节点为根中心的树形拓扑。整个网络的管理是通过各节点中的网络管理模块完成的。无线网络采用LEPS(Link Estimation and Parent Selection)协议。LEPS协议是TinyOS系统的多跳路由协议。它通过节点之间的邻居信息交换
机制,考虑链路质量,建立到中心节点的最短通信路径。
从节点分为不同级别的父节点,只向自己的父节点发送信息,通过父节点逐级向上传到主节点。从节点路由表中拥有自己子节点的编号地址。父节点处于网络的中心是最高级的父节点,它的路由表中拥有整个网络节点的编号和地址。主节点的数据由其子节点逐级传向各从节点。
无线网络分为拓扑结构的建立、路由维护和数据通信3个阶段。在拓扑结构的建立阶段,所有的节点周期性地广播自己的路由信息,节点根据跳数和链路质量信息建立最短条数路由,建立路由表。网络将进行定期的维护,在维护的过程中,节点将再次对父节点做出评估,刷新路由表。在数据通信阶段,路由协议为数据传递提供行进路径。在完成组网后,若向网络中增加节点,则只需要对网络进行维护更新,更新路由表即可。
4.5 父节点选择
所有从节点的数据都是通过父节点传送到主节点的。父节点性能是路由协议的核心部分。父节点的选择决定于链路质量和跳数。
链路质量是两节点间的双向链路通信质量。以两相邻节点A、B为例。在网络广播信息中,节点A向节点B发送多组数据,则B节点的接收成功率为:
协议进一步采用加权唯一平均的方法计算最终的链路质量估计值,进而减小链路质量评估的抖动。令新的链路估计值为NEWEST,所占比例为μ=25%,则原先的作战比例为(1-μ),最终的链路质量估计值为:
跳数HOPNU为节点到主节点的总共转发次数。在网络中,由于链路质量的原因,节点的父节点可能丢失。在进行父节点选取时,为了保证父节点的质量,通常选用SEDEST>0.1,RCVEST>0.1和EST>0.16的链路质量,这样不至于链路质量过低而不稳定。然后在相邻节点中先判断跳数最小,再判断链路通信质量选择父节点。
结语
本系统采用的STM32L152主控芯片和SI4432无线收发芯片都属于低功耗高集成芯片,降低了系统的功耗。其中STM32L152是Cortex-M3微控制器,提高了系统的性能;主节点带有硬件备份提高了系统的可靠性;LPES路由协议技术提高系统的通信效率,使系统拓展方便。本系统适合于工业现场数据采集、小区数据采集、医院病房监控、农业现场数据采集等一些短距离的通信应用。功能模块化和网络可拓展化,使系统便于功能的更新和节点的拓展。