文献标识码: A
文章编号: 0258-7998(2011)07-0045-03
无线传感器综合了传感器技术、嵌入式计算机技术、分布式信息处理技术和无线通信技术,能够实时监测、感知和采集网络分布区内的环境或监测对象的信息。目前已经在军事、航空、环境、医疗、工业、商业等领域有广泛应用。对无线传感器的片上系统软件的更新,目前多需要有线方式,如连接JTAG口、SWB接口等,而对已经安装好的传感器进行软件升级更新,就需要拆卸连接,显得不方便。本文针对一个自行设计的基于MSP430的无线传感器,设计了一种非接触的软件升级方法,实现了无线传感器不拆卸的情况下应用软件的升级。
1 无线传感器的整体结构
本文涉及的无线测量系统整体结构设计如图1所示,主要由无线传感器、无线收发器和计算机三部分组成。无线传感器采集现场的数据,通过无线的方式发送给无线收发器,无线收发器再将数据发送给计算机,计算机接收到数据后进行分析计算、显示、存储等工作。
2 硬件结构
2.1 无线传感器硬件结构
无线传感器硬件结构如图2所示,传感器工作过程是单片机读取传感器采集的测量数据,再通过无线模块发送给上位PC机。
本系统的传感器是一个多通道的应变测量传感器,由于本文主要讨论如何更新无线传感器软件,所以不对传感器设计做过多的介绍。
无线传感器中的单片机采用TI公司的MSP430F2274芯片,此芯片是一款性能优异的超低功耗16位单片机,带有32 KB Flash存储器和1 KB的RAM存储器,内部集成了精度较高的16 MHz的振荡器,16位的精简指令集架构,还有丰富的外部接口,如UART、SPI、I2C等。本系统利用其SPI接口与无线模块相连。
nRF24L01是NORDIC公司的一款无线通信芯片,采用FSK 调制,内部集成NORDIC的Enhanced Short Burst 协议,可以实现点对点或是1对6的无线通信。无线通信速度最高可以达到2 Mb/s。只需要单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能。而且具有极低的电流消耗,当工作在发射模式下发射功率为-6 dBm时电流消耗为9.0 mA,工作在接收模式时电流为12.3 mA,在掉电模式和待机模式下电流消耗更低。
2.2 无线收发器的硬件结构
无线收发器硬件结构如图3所示。无线收发器主要用做数据转发,功能较简单,所以选取只有20Pin的AT89C2051为控制器件,通过MAX3232与计算机串口相连并收发数据;通过模拟SPI接口与nRF24L01相连,与无线传感器交换数据。
3 软件设计
3.1 MSP430单片机软件设计
MSP430的软件设计包括无线传感器程序设计和软件更新引导程序设计。软件更新引导程序的目的就是完成无线传感器软件通过无线的方式升级更新。
3.1.1 软件更新引导程序的流程
软件更新引导程序的流程如图4所示。
上电初始化过程首先是稳定系统时钟,然后通过SPI接口对nRF24L01进行初始化配置,配置的内容包括工作模式、发送地址和接收地址、收发通道的设置、传输的速率和发射功率、自动重发的次数等。这些参数的设置要与无线收发器相对应,才能保证无线数据收发准确。
单片机对外围设备的操作,例如SPI接口采用查询式而不是中断式,因为无线传感器软件和软件更新引导程序用的是同一个中断向量表,这样就不会因中断产生冲突。
对程序更新,必须保证数据通信的可靠性,所以考虑了数据包丢失、数据包重复、数据包传输出错三种错误。对于数据包丢失,由于nRF24L01内部集成了Enhanced Short Burst,可以让数据发送方知道数据包是否发送成功,而重新发送数据。对于数据包重复,解决方法是在数据包中设置指令编码。指令编码是一个8 bit的无符号整数,由数据发送方将其放在数据包中,每发送一包数据,将指令编码加1,当为255时,再从0开始。数据包传到接收方时,如果与接收方存的指令编码重复,则认为是重复的数据包,从而丢弃。利用指令编码也可以检测有无丢包。对于传输数据出错,由于nRF24L01无线传输中,可以设置自动CRC校验,保证数据包传输出错概率很低。
在程序更新时,要检测写入的Flash区必须在无线传感器软件代码区或中断向量区中,如果超出,则不能再进行写入,并设置更新出错,以保护其他代码区的数据。在程序更新完毕后,将中断向量区的0FFFEh地址的16位数据设置为0F000h,这样传感器再重启后,将首先运行软件更新引导程序,在没有软件更新命令时自动跳转到无线传感器的软件代码区。
3.1.2 存储器的空间分配
MSP430F2274存储空间分配如图5所示,将无线传感器的32 KB的Flash存储区分割为无线传感器代码区和程序更新引导代码区,其中08000h~0EFFFh的28 KB存储区为无线传感器代码区,0F000h~0EFFFh的4 KB存储区为程序更新引导代码区。两个代码区存放的是相互独立的程序,在无线传感器程序更新过程中,程序更新引导程序会检测代码写入地址,如果是自身的代码区,则禁止写入。在IAR编译器中编译程序时,需要在“.xcl”文件中对代码地址进行设置,对软件更新引导程序的编译CODE区为“-P(CODE)CODE=F000-FFDF”,对无线传感器程序的编译CODE区“-P(CODE)CODE=8000-EFFF”。
3.2 无线收发器的软件设计
无线收发器起到信息传递中继的作用,所以其软件功能比较简单,当检测到nRF24L01接收到无线数据时,将接收到的数据打包,通过RS232协议,用串口发送给计算机;当计算机有数据通过RS232接口发送给无线收发器时,将数据打包,通过nRF24L01无线发送。
3.3 计算机的升级软件设计
首先要在计算机端生成无线传感器应用程序的文件。无线传感器应用软件编译是在“project->option->link->output”标签中,将“Format”设置为“other”,“output”设置为“map430-txt”,这样在IAR中程序编译完,就会产生“map430-txt”格式的msp430应用程序。其内容为“@+地址”表示后面程序的起始地址,后面紧跟字节型的数据,当有字母‘q’时,表示文件结束。
计算机的升级软件首先发送系统重启命令,并发送程序更新命令,在收到无线传感器准备好的指令后,读取无线传感器应用程序的msp430-txt格式的文件,将读取的文件进行转换,发送给无线传感器。如果收到更新成功的回复指令,则提示程序更新成功,否则程序更新失败。
3.4 计算机与传感器的数据传输协议设计
计算机与无线传感器的数据传输协议如表1所示,传输的数据包长度与传感器工作时的数据包长度相同,为16 B的数据包。在传输地址和数据时,将第5字节数据设置为指令编码,每发送一个传输地址的数据包或传输数据的数据包,都将指令编码增1,供无线传感器检测是否有重复数据包或丢失数据包。
本文在基于MSP430的无线传感器系统中,设计了一种无线传感器软件非接触升级的方法。该方法充分利用现有资源,不拆卸已安装好的无线传感器,稳定可靠地完成无线传感器应用程序的升级更新。该方法在可对Flash系统编程的其他系列的单片机系统中同样适用,具有很高的实用性和通用性。
参考文献
[1] 秦龙.MSP430单片机应用系统开发典型事例[M].北京:中国电力出版社,2005.
[2] NORDIC公司.nRF24L01 Single Chip 2.4 GHz Transceiver. 2007.
[3] TI公司.MSP430x2xx Family User’s Guide.2006.
[4] TI公司.Features of the MSP430 Bootstrap Loader.2003.