目前,在遥控遥测、无线抄表、门禁系统、小区传呼、工业数据采集、无线遥控系统、无线鼠标键盘等许多应用领域,都采用无线方式进行远距离数据传输。本文介绍一种采用通用的低功耗单片机MSP430作为主控芯片、具有多信道的单片收发芯片nRF905作为无线收发模块、利用SPI口实现双向通讯的无线数据传输系统。系统集成了MSP430在低功耗应用方面的优势和nRF905无线特有的多频道支持及功耗低、易控制等优点,特别适合于低功耗、小数据量的无线数据传输系统。
1 系统的总体结构
系统总体框图如图1所示。主控MCU使用TI公司MSP430系列中的 F1491型,射频收发模块使用Nordic公司的nRF905实现无线数据收发。除MSP430和nRF905外,系统还提供RS-232接口,可以实现与PC机的通讯,RS-485接口满足一些通用仪器仪表的要求。根据不同的应用需求,可选择采用PCB天线或高增益的外置式天线以满足远距离的需求。
2 系统主要芯片介绍
MSP430是TI公司推出的16位系列单片机,在电池供电的低功耗应用中具有独特的优势。其工作电压在1.8~3.6V之间,正常工作时功耗可控制在 200μA左右,低功耗模式时可实现2μA甚至0.1μA的低功耗。本系统所采用的MSP4301491系列在单个芯片上集成8通道12位的A/D转换、 2个16位定时器、2个USART接口、16位看门狗、48个GPIO 端口及2 048KB RAM和60KB的flash,单片即可满足大多数应用需要。其高效率精简16 位指令结构可以确保任何任务的快速执行,大多数指令可以在一个时钟周期内完成;它还具有高级语言编程能力,使软件开发更为便利[1]。
射频部分使用Nordic公司的多通道单片收发芯片nRF905[2]。它采用GFSK 调制解调技术,工作电压为1.9~3.6V,工作于433/868/915MHz 3个ISM频道。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,具有低功耗的Shock Burst工作模式,可以自动完成前导码和CRC的工作,可由片内硬件自动完成曼彻斯特编码/解码,使用SPI接口与MCU通信,配置非常方便。作为射频发射芯片,其低功耗性能是极为突出。以-10dBm的输出功率发射时,电流只有11mA,在接收模式时电流为12.5mA。nRF905传输数据时为非实时方式,即发送端发出数据,接收端收到后先暂存于芯片存储器内,外部的MCU可以在需要时再到芯片中去取。nRF905一次发射最多可传输的数据量为 32B。天线接口设计为差分天线,便于使用低成本的PCB天线[3]。
3 点对点无线通信的实现
3.1 SPI接口
nRF905利用SPI口实现与MCU的双向通讯。nRF905的SPI总线包括4个引脚:CSN(SPI使能)、SCK(SPI时钟)、MISO (主入从出)和MOSI(主出从入)。其中CSN可以接到一个GPIO端口控制芯片工作,而其他三个脚则连接到主控MCU的SPI接口上。主控MCU可以使用GPIO端口控制nRF905的3根控制线,控制低功耗的PWR_UP、正常工作的TX_EN、选择发送还是接收方式的TRX_CE。nRF905有两种节能模式和两种工作模式,分别为掉电模式、待机模式、Shock Burst 接收模式和Shock Burst发送模式。这几种模式由主控MCU通过控制nRF905的3个引脚PWR_UP、TRX_CE和TX_ EN的高低电平来决定。nRF905有3个引脚用于状态输出,分别是:CD(载波检测)、AM(地址匹配)和DR(数据就绪),均为高电平有效。 nRF905在处于接收模式时,若检测到接收频率段的载波,就置CD为高。接着检测载波数据中的地址字节,若与本身已配置的接收地址相同,则置AM为高;若检测到接收数据中的CRC校验正确,则存储有效数据字节,置DR为高。
MCU通过SPI总线配置nRF905的内部寄存器和收发数据。这里nRF905为从机,其SPI的时钟范围很宽,可为1Hz~10MHz,因此 MCU在写控制程序时不必苛求时间的准确度。SPI总线的每次操作都必须在使能引脚CSN的下降沿开始,CSN 低电平有效,总线上的数据在时钟的上升沿有效。MCU对SPI总线进行读操作时,先把CSN置低,然后在MOSI 数据线上输出一个表示读命令的字节,与此同时,nRF905会在MISO数据线上输出一个字节表示状态信息的数据,随后输出一个地址字节,后面跟随有效数据。在进行写操作时比较简单,MCU先把CSN拉低,然后在MOSI线上输出写命令字节和数据字节即可。
3.2 数据收发过程
在nRF905正常工作前,必须由MCU根据需要写好配置寄存器。发送数据时,先通过MCU把nRF905置于待机模式(PWR_UP置为高、 TRX_CE置为低),然后通过SPI总线把发送地址和待发送的数据都写入相应的寄存器中,之后把nRF905置于发送模式(PWR_UP、TRX_CE 和TX_EN全部置高),配置成功后数据就会自动发送出去。若射频配置寄存器中的自动重发位(AUTO_RETRAN)设为有效,数据包就会被重复发出,直到MCU拉低TRX_CE退出发送模式为止。nRF905发送数据的流程图如图2所示。
[page]
接收数据时,MCU 先在nRF905的待机状态中写好射频配置寄存器中的接收地址,然后将nRF905置于接收模式(PWR_UP和TRX_CE置高、TX_EN置低),nRF905就会自动接收空中的载波。当收到有效数据(地址匹配且校验正确)时,DR引脚会自动置高,MCU 在检测到这个信号后,可以将nRF905置为待机模式,然后通过SPI总线从接收数据寄存器中读出有效数据。nRF905接收数据的流程如图3所示。
3.3 点对点传输距离
传输距离主要由传播损耗、工作频率、外部损耗等因素决定。而传播损耗是非常复杂的问题,涉及电波传播机理、地形地物影响、载波工作频段和天线指向等很多因素。这里给出自由空间传播时的无线通信距离计算公式:
20lgd[km]=Los[dB]-32.44-20lgf[MHz] (1)
式中Los为传播损耗,f为工作频率,d为通信距离[4]。nRF905的最大发射功率为10dBm,接收灵敏度为-100dBm,假定由大气、阻挡物、多径等造成的损耗为25dB,可以计算得出通信距离d=0.98km,这是理想状况下的计算。实测结果表明,在采用高增益天线时,基本可以达到800 米以上的传输距离;使用PCB天线时距离有所下降,但也可达到300米左右。
4 通信协议设计
4.1 MAC协议
本系统采用了一个简化的点对多点通讯协议,主要分为三层。第一层为物理层,由nRF905模块硬件实现;第二层为数据链路层,提供可靠的无线数据传输,每一个数据包都包括具体数据和一些必要的控制信息;第三层为应用层,调用数据链接层完成具体的应用逻辑,包括数据收集、数据查询等。
整个系统硬件可分为两部分,分别定义为基站模块和节点模块。节点模块应用层的功能是使数据与无线通讯相结合。对于不同的应用,可能有不同的数据采集方法。应用层接收数据链路层发来的命令,完成对数据的采集,并将数据打包发给数据链路层。基站模块的应用层负责与中心控制器的链接。将中心控制器发来的数据校验处理后转发给数据链路层,将数据链路层发来的数据打包处理后发给中心控制器。因为协议是分层的,相邻层之间的联系只是调用发送接收函数,因此实现了各层的独立,更换被采集的仪表或更换无线传输模块所做的改动都不会影响其他层,从而提高了系统的灵活性。
每个数据帧包括2B的帧头、1B的帧类型、6B的本地地址和目的地址、1B的帧长度、NB的数据、16位CRC校验和2B的帧尾。本系统针对较小数据量 的应用设计,每个数据包的有效数据长度N一般小于32B,每个节点每一次需要传送的数据都可以通过一个数据包发送完成。数据帧的类型包括采集命令、正确接 收确认、重发请求、异常信号等,用两个字节来标示以便接收方分类处理。在N个字节的数据之后是16位CRC校验。接收方同样计算CRC后与校验和比较,如 果CRC正确,则发送正确接收确认(ACK)。如果CRC不同,即为传输中出现错误,则给出出错反馈要求发送方重新发送数据。数据的通信流程基本可概述为 DATA+ACK形式,即发送完DATA 等待ACK,接收到DATA 则发送ACK确认。
[page]
由于射频芯片的高灵敏度,即使在没有进行数 据传输时,其数据输出脚也会有杂波输出,这些杂波会被MCU的串口接收并处理。同时处于低功耗的考虑,在每个数据帧之前要先发几个字节的同步码以实现数据 同步和射频唤醒。实践证明四个字节的0xCC 就可以确保在有效数据帧到达前双方通讯实现同步。为了准确区分噪声与有效数据,分别加入了2B的帧头(0xD792)和帧尾(0xC2D5),以确保有效 数据的确认。
4.2 跳频机制
为避免信道阻塞,系统采用了二进制指数退避算法[5]随机延时一段时间再发送数据,有效地避免了同频道下的数据冲突。除此之外,系统还设计了跳频机制以有效地保证数据传输的准确性。
跳频机制的基本原理是将频段分为一系列的通道,发送端查找预先设定的频率列表,以伪随机方式产生通信频道及发射前导码,发射前导码的时间应确保接收机可 以扫描所有的通道[6]。接收端以一定的跳频序列扫描,在某一通道上,接收端收到完整的前导码则收发双方频率同步。一旦完成频率捕获,发送端与接收端即可 识别对方,并且相互通信。发送端和接收端的跳频过程示意图分别如图4(a)和图4(b)所示。
本系统设定了5个随机频道,当跳频次数hop大于5后认为通信失败。由于同时采用了重发和退让机制,收发双方并不需要同时跳入随机频道,系统具有一定的容错性。通常一定时间内干扰只在某个频段存在,只要将5个通信频道拉开一段频距,即可有效抵制干扰。
5 系统的低功耗设计
系统中MSP430完成初始化后,处于低功耗工作模式,在有外部事件发生时唤醒进入中断服务程序,完成后重新进入低功耗模式。如此循环往复,可以最大限度地降低功耗。所以系统低功耗设计的重点是射频芯片nRF905的控制。nRF905在接收状态时功耗比较大,工作电流为10mA左右,所以应尽量使 nRF905 处于休眠状态。对于下层节点模块,当上层基站模块需要进行数据采集时,首先发送唤醒码。本系统使用0xCC作为唤醒码,即主机连续发送0xCC,从机收到连续两个0xCC后即保持接收状态而不进入休眠。如果两个周期内没有收到有效数据帧的帧头,则视为杂波干扰,重新进入休眠状态。如此设定之后,nRF905的平均工作电流可降至200?滋A以下,整个模块的平均工作电流在250?滋A以下,采用两节电池供电可以使用一年以上。上层基站模块作为主机,可主动发起通信,所以等待时nRF905可一直工作在休眠状态,整个模块的平均工作电流在100μA以下,采用两节电池供电可以使用一年半以上。
本文利用低功耗单片机MSP430和nRF905芯片设计了一种成本低、低功耗、抗干扰性强的远距离无线传输系统,给出了具体的硬件实现和独特的通信协议。nRF905的高灵敏度为其提供了稳定的传输距离,即使利用无增益的PCB天线其传输距离也可达300米,采用高增益的天线则可达到800米以上,可满足不同客户的需求。如果系统配以其他传感器组则可以实现多种应用环境的无线数据采集、传输与处理或远程监控等,在很多领域都具有广阔的应用前景。
上一篇:低功耗通用语音处理平台的设计实现
下一篇:基于MSP430的无线传感器节点动态功率管理研究
推荐阅读最新更新时间:2024-03-16 12:58