孙先松
(长江大学 电子信息学院,荆州434023)
孙先松(副教授),主要从事嵌入式系统与SOPC方面的研究。
目前,无线通信技术已经成为一大热点,而系统设计的微型化、低功耗成为发展的必然趋势。在保证系统工作可靠性的前提下,如何实现系统低功耗是无线数据传输系统亟待解决的一个主要问题。本文利用MSP430超低功耗单片机和2.4 GHz ISM频段的射频芯片EM198810设计了一种低功耗的无线数据传输系统。该系统使用干电池供电,可广泛应用于电池供电的自动化数据采集系统、无线遥控、无线鼠标、无线键盘、无线电子标签、遥控玩具,以及水、气、热、电等居民计量表具无线远传自动抄表。
目前在2.4 GHz频段的集成射频芯片有多种,性能各有差异,表1列出了几种常用芯片的性能特点。
本系统采用MSP430F247单片机和EMC公司的EM198810芯片进行设计。MSP430系列单片机是一个16位精简指令集(RISC)微处理器。它具有丰富的寻址方式(7种源操作数寻址,4种目的操作数寻址),简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;具有高效的查表处理指令;有较高的处理速度,在8 M Hz晶振驱动下指令周期为125 ns;中断源较多,并且可以任意嵌套;当系统处于省电的备用状态时,用中断请求唤醒只用6 μ s。MSP430系列单片机的电源电压采用1.8~3.6 V,其在1 M Hz的时钟条件下运行时,芯片的电流为200~400 μ A左右,时钟关断模式最低只有0.1 μ A。
表1 常用2.4 G Hz频段集成射频芯片的性能特点
EM198810芯片内建2.4 GHz GFSK射频收发器,带有8位数据帧无线收发功能,前导区可以设置为1~8字节,支持1~4个字地址(最多可达64位),最大数据传输速率为1 Mbps,允许长数据包传送;频率范围为2 400~2 482 MHz(81信道),传输距离100 m(PCB天线),RF输出功率2 dBm,接收灵敏度在-85 dBm以上,采用SPI数字编程接口,接口电压为2.5~3.7 V。该芯片发射功率可数字编程调节,通过寄存器的设置很容易实现低功耗模式;内建多种纠检错功能,采用各种有效载荷数据格式来消除直流漂移量;支持 FEC的 1/3、2/3纠检错功能和CRC16检错功能。内部具有FIFO和DIRECT两种工作模式:FIFO模式简单易用,对MCU要求不高,发射和接收各有64字节的缓冲区,一次发送、接收可以最多处理64字节数据;DIRECT模式对MCU要求较高,需要MCU处理各种纠检错功能。
图1是MSP430F247单片机和EM198810的连接示意图,通过SPI总线与 RF芯片相连。实际电路连接如图2所示。
图1 连接示意图
图2 实际电路图
数据包格式如下:
其中,前导区可配置为1~8字节,同步字可配置为16、32、48 或64位;前导尾区可配置为4、6、8……18 位;数据区可为NRZ码、Manchester码、8/10位码、带FEC的数据4种格式。
系统上电后,先使EM198810的 RESET_n引脚为低电平,以保证芯片有效复位;再使此引脚为高电平,BRCLK脚会产生12 M Hz的时钟;然后进行相关寄存器初始化。初始化程序流程如图3所示。
图3 初始化程序流程
其中,Reg48为数据帧格式配置寄存器,需要设置前导区的长度(默认为3字节),同步字长度默认为64位,前导尾默认长度为4位,数据默认为NRZ格式。该寄存器的第2位为1则配置为睡眠模式,第3位为1则配置为待机模式。Reg49~51用于设置发射和接收的延迟时间。Reg52~55用于设置同步控制字,默认全部为 0000H。Reg57用于配置是否启用CRC校验、包长度控制方式等。Reg48~57详细配置数据如下:
Reg0~28主要是配置发射功率、VCO、RSSI、接收延时、通道选择与控制、AMS测试及控制、BPF和AGC控制、发射与接收数据控制、直流漂移控制、PLL同步控制、数据收发的时序控制、N/VCO参数控制、时钟等。Reg0~28详细配置数据如下:
Reg0~28初始化完成后再延时2 ms,就可以直接进行数据的收发了。特别要注意的是,帧寄存器Reg48~57必须在RFIC寄存器 Reg0~28之前初始化。所有寄存器读写和收发的数据都是通过SPI接口进行的,并且只支持从模式,SPI操作时序如图4所示。在芯片第28脚LDO_TUNE接地时(R1断开,R2接0 Ω电阻),其数据在SPI_CLK时钟的上升沿有效;当LDO_TUNE接VDD时(R2断开,R1接0 Ω电阻),数据在SPI_CLK时钟的下降沿有效。只要SPI_SS为高电平,寄存器中的数据就保持不变;只有SPI_SS为低电平时,才能重新改写寄存器中的内容。
图4 SPI操作时序
EM198810有两种检测收发数据包长度的方法:一种是自动在数据帧内检测出来,最大帧长度不能超过255字节。先设置Reg57的第13位为1,则发送或接收数据区中的第1个字节就代表数据的长度,帧控制器会自动控制收发开始与停止。另外一种是保持发射或接收的状态不变,通过外接MSP430F247来控制数据包的正确发送与接收。
发送数据流程如图5所示。在发射数据时,先设置Reg7的第8位为1,允许在内部状态机控制下进入数据发射状态,再设置Reg7的0~6位为所选通道。在发送前导尾区数据前,MSP430F247必须将数据放入FIFO中,如果数据长度超过63字节,应该分多次写入。FIFO_flag=1表示FIFO为空,MSP430F247利用此信号作为中断请求,保证发送数据写入FIFO的实时性,在数据发送完成后PKT_flag=1。
图5 发送数据流程
如果设置Reg7[7]=1和Reg7[0~6]为与发射相同的通道,则芯片进入自动接收状态,接收数据流程如图6所示。当检测到同步字后会自动进行数据包的接收解码,接收完成后进入待机模式。如果接收数据超过63字节,则有FIFO_flag=1,MSP430F247利用此信号作中断请求以保证读出数据的实时性。
图6 接收数据流程
在进行超低功耗设计时,MSP430F247可以设置定时器中断。平常处于LPM3或 LPM4模式,要发送数据时产生定时器中断,同时控制EM198810处于待机或睡眠模式。MSP430F247工作在LPM3模式下电流为0.8 μ A左右,LPM4模式下电流为0.1 μ A左右。EM198810正常情况下发射电流26 mA,接收电流25 mA,待机电流1.9 mA;睡眠模式下为3.5 μ A。若将EM198810设置为睡眠模式,将MSP430F247设置为LPM3模式,则系统耗电仅为4.3 μ A,使用干电池供电完全可行。
MSP430F247通过SPI接口与EM198810相连,进入LPM3模式和退出LPM3模式的程序如下:
将EM198810的Reg48的第2位设置为1,并将SPI_SS设为高电平,则进入睡眠模式;如再将SPI_SS设为低电平,则EM198810会自动唤醒,退出睡眠模式。
经过实际电路连接后测试,数据发送端在进行500 kbps速率下连续发送数据时,整个系统电流为28.2 mA,接收数据端的电流为26.1 mA;当发射端进入到睡眠模式时电流为5.2 μ A;当接收端进入待机状态LPM3后,整个系统电流为1.9 mA。按照2节干电池容量1 300 mAh计算,间隔1 min发送100字节数据,考虑单片机模式切换时间,则在500 kbps速率下:
发送数据所需时间为5 ms,1小时耗能:
28.2 mA×5 ms×60次=8 460(mA·ms)
睡眠模式下1小时耗能:
5.2 μ A ×3 600 s×1 000 ms=18 720(mA ·ms)
发送状态下可以工作的时间为:
(1 300 mA×3 600 s×1 000 ms)/(18 720+8 460)=172 185 h
即2节干电池供电时可以工作20年。同样,可以计算出接收状态下可以工作683小时(大约28天)。因此本设计可以适合长期进行低功耗无线数据采集方面的应用。
[1]胡大可.MSP430系列 FLASH型超低功耗16位单片机[M].北京:北京航空航天大学出版社,2001.
[2]魏小龙.MSP430系列单片机接口技术及系统设计实例[M].北京:北京航空航天大学出版社,2002.
[3]王秀梅,刘乃安.低功耗2.4 GHz无线通信系统的设计与实现[J].中国数据通信,2004(11):64-66.
[4]李春林,程健.基于ARM 和nRF2401的嵌入式无线网络测控平台[J].自动化仪表,2007,28(8).