1 主要芯片介绍
MC13213是Freescale公司推出的一款SoC芯片,它主要由微处理器和射频模块两部分组成。微处理器采用8位的HCS08内核,集成了1个 SPI(Serial Peripheral Interface)接口、1个8路的8/10位A/D转换器、2个TPM(Timer/PWM)模块、2个SCI(Serial Communication Interface)接口、2个I2C和1个8路的KBI(Keyboard Interrupt)接口。射频模块的工作频段是2.4 GHz,通过SPI总线与处理器通信。其主要特点有:
◆ 采用2.4 GHz频段,其设计构架符合IEEE 802.15.4协议;
◆ 接收灵敏度<-92 dBm,发送功率为-28.7~+3.4 dBm可调;
◆ 拥有0~15(共16)个可选工作信道;
◆ 采用直接序列扩频(direct sequence spread spectrum)的二进制编码方式,增强了抗干扰能力;
◆ 采用OQPSK数字相移键控调制技术,大大降低了数据传输的误码率;
◆ 采用免冲突的载波检测多址接入(CSMACA)机制,避免了数据传输过程中的冲突。
2 硬件系统设计
如图1所示,整个系统硬件结构由4部分组成:RS232/485总线接口单元、数据处理单元、射频收发单元和电源管理单元。
图1 短距离无线数据传输模块硬件结构图
一方面,PC/仪器仪表通过RS232/485总线将数据传送给MCU处理器,处理器将数据包进行适当处理后送给射频模块发送出去;另一方面,射频模块将接收到的数据送给MCU处理器,处理器经过解包处理后再通过RS232/485总线将数据送给PC/仪器仪表。
工业中的仪器仪表大多都采用RS485总线通信方式,因此无线数据传输设备提供RS232/485可选通信接口,既方便连接PC机,又满足了一般仪器仪表的要求,串口波特率为1 200~115 200 bps可调。
3 软件设计和低功耗通信协议研究
无线数据传输设备的一般工作流程如图2所示。在进行相关初始化之后就进入主循环,对射频模块和串口进行轮询:当射频模块接收到数据包时就进行解包,然后送到RS232/485总线;当串口接收到从RS232/485总线上发来的数据时,就进行相关处理并送入射频模块发送出去。这种轮询的方式结构简单,实现方便。
图2 短距离无线传输设备软件流程
然而,在这种工作方式下,射频模块就必须时刻监听信道。在2.7 V工作电压、处理器时钟频率为2 MHz时,MC13213的射频模块接收工作电流IRF(Rx)≈37 mA,处理器以及外围器件的工作电流Imcu≈2 mA,因此设备的正常工作电流I≈39 mA,这个电流对于一些供电受限的工业应用显然是不能够接受的。为了降低无线传输设备的功耗,需要对设备之间的传输协议作适当的改进。
由于在大部分的时间里设备之间没有进行数据传输,因此射频模块一直处于接收状态是一种资源浪费。而设备本身不知道对方何时有数据传输过来,因此设备之间约定在特定的时间段内进行数据传输,而其余时间休眠。
这样一种约定需要一种同步机制。我们采用信标同步机制:一个设备定时发送一个称为“信标(Beacon)”的数据包,即信标帧。另一个设备通过接收该信标帧来实现同步。我们将发送信标帧的设备称为“主设备”,接收信标帧的设备称为“从设备”。通过信标帧,即可实现从设备和主设备之间的同步。
在该协议中,有3种类型的数据包:信标帧、数据请求帧和数据帧。信标帧和数据帧的帧头包含有是否有数据待传的信息。
实现同步之后,主设备和从设备之间就约定进入休眠时间(Tsleep)。在休眠期间射频模块深度睡眠(虽然关闭射频模块后功耗会更低,但唤醒时间太长),处理器处于超低功耗状态,只有串口处于接收状态。休眠时间结束后,主设备就会醒来,并且射频模块向外发送信标帧。信标发送完后,射频模块立即进入接收状态。从设备从休眠中醒来后立即唤醒射频模块进行信标侦听,当接收到主设备发送过来的信标后,就会判断主设备是否有数据待传。如果有,就向主设备发送数据请求帧;否则,从设备就会将自己串口接收到的数据通过射频模块发送给主设备,直到数据发送结束进入下一个周期的休眠时间(Tsleep)。主设备接收并处理从设备发送的数据帧,并通过数据帧的帧头判断是继续等待还是进入下一周期的休眠时间。当主、从设备都没有数据需要进行传输时,从设备接收到信标后直接进入下一周期的休眠时间,而主设备等待Twait后没有收到从设备的任何数据,也会进入下一个周期的休眠时间。在这种情况下,由于从设备会比主设备早休眠 Twait的时间,因此从设备的休眠时间为Twait+Tsleep。另外为了防止失去同步,从设备醒来后就将射频模块设置为接收状态,直到接收到信标帧,或者超时继续进入休眠。这个超时阈值至少为Tsleep,从而保证了重新同步。如果从设备N次都没有收到信标帧,可以认为周围没有主设备,因此可以进行一次长时间的休眠Thibernate。具体流程如图3所示。
图3 低功耗改进后的主、从设备软件流程
经过该协议优化后,主、从设备在一个周期内的工作状态如图4所示。
改进前的平均工作电流:
图4 改进前后主从设备无数据传输时一个周期内的工作状态
改进后的平均工作电流:
表1 2.7 V工作电压下测得的主、从设备工作电流
其中:
射频模块接收状态时的工作电流IRF(Rx)≈37 mA;
射频模块发送状态时的工作电流IRF(Tx)≈30 mA;
射频模块深度睡眠的工作电流IRF(sleep)≈35 μA;
处理器正常工作电流Imcu≈2 mA;
处理器休眠工作电流Imcu(sleep)≈5 μA;
射频模块发送1个数据包需要的最大时间Td≈4 ms。
因此,当Twait=5 ms,Tsleep=200 ms时,I后(主)≈1.58 mA,I后(从)≈0.79 mA。远小于改进前的I前≈39 mA。
4 实验结果和总结
采用了低功耗的传输协议后,在Tsleep分别为200 ms、500 ms和1 s情况下,无数据传输和每10 s互传一个数据包时测量得到的电流如表1所列。可见,采用了低功耗的传输协议后在保证了数据可靠、稳定传输的同时,大大降低了设备的功耗。休眠时间 Tsleep 增大,功耗就会下降,同时数据传输的延时性就会增加。而且当只有从设备在工作时,Tsleep太长反而会增大从设备的功耗。一般地,只有满足:
才能保证主设备不工作时,从设备功耗不会增加。上式中N表示多次未收到信标就进行一次Thibernate的长时间休眠。在实际应用中可以根据需要找到最优点。