引言
目前,无线通信技术已经成为一大热点,而系统设计的微型化、低功耗成为发展的必然趋势。在保证系统工作可靠性的前提下,如何实现系统低功耗是无线数据传输系统亟待解决的一个主要问题。本文利用MSP430超低功耗单片机和2.4 GHz ISM频段的射频芯片EMl98810设计了一种低功耗的无线数据传输系统。该系统使用干电池供电,可广泛应用于电池供电的自动化数据采集系统、无线遥控、无线鼠标、无线键盘、无线电子标签、遥控玩具,以及水、气、热、电等居民计量表具无线远传自动抄表。
1 系统概述
目前在2.4 GHz频段的集成射频芯片有多种,性能各有差异,表1列出了几种常用芯片的性能特点。
本系统采用MSP430F247单片机和EMC公司的EMl98810芯片进行设计。MSP430系列单片机是一个16位精简指令集(RISC)微处理器。它具有丰富的寻址方式(7种源操作数寻址,4种目的操作数寻址),简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;具有高效的查表处理指令;有较高的处理速度,在8 MHz晶振驱动下指令周期为125 ns;中断源较多,并且可以任意嵌套;当系统处于省电的备用状态时,用中断请求唤醒只用6μs。
MSP430系列单片机的电源电压采用1.8~3.6 V,其在1 MHz的时钟条件下运行时,芯片的电流为200~400μA左右,时钟关断模式最低只有O.1 μA。
EMl98810芯片内建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处理各种纠检错功能。
2 系统设计
2.1 系统硬件设计
图1是MSP430F247单片机和EMl98810的连接示意图,通过SPI总线与RF芯片相连。实际电路连接如图2所示。
2.2 系统软件设计
数据包格式如下:
其中,前导区可配置为1~8字节,同步字可配置为16、32、48或64位;前导尾区可配置为4、6、8……18位;数据区可为NRZ码、Manch-ester码、8/10位码、带FEC的数据4种格式。
系统上电后,先使EMl98810的RESET_n引脚为低电平,以保证芯片有效复位;再使此引脚为高电平,BRCLK脚会产生12 MHz的时钟;然后进行相关寄存器初始化。初始化程序流程如图3所示。
[page]
其中,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接O Ω电阻),其数据在SPI_CLK时钟的上升沿有效;当LDO_TUNE接VDD时(R2断开,R1接0 Ω电阻),数据在SPI_CLK时钟的下降沿有效。只要SPI_SS为高电平,寄存器中的数据就保持不变;只有SPI_SS为低电平时,才能重新改写寄存器中的内容。
EMl98810有两种检测收发数据包长度的方法:一种是自动在数据帧内检测出来,最大帧长度不能超过255字节。先设置Reg57的第13位为1,则发送或接收数据区中的第1个字节就代表数据的长度,帧控制器会自动控制收发开始与停止。另外一种是保持发射或接收的状态不变,通过外接MSP430F247来控制数据包的正确发送与接收。
发送数据流程如图5所示。在发射数据时,先设置Reg7的第8位为1,允许在内部状态机控制下进入数据发射状态,再设置Reg7的O~6位为所选通道。在发送前导尾区数据前,MSP430F247必须将数据放人FIFO中,如果数据长度超过63字节,应该分多次写入。FIFO_flag=1表示FIFO为空,MSP430F247利用此信号作为中断请求,保证发送数据写入FIF0的实时性,在数据发送完成后PKT_flag=1。
如果设置Reg7[7]=1和Reg7[O~6]为与发射相同的通道,则芯片进入自动接收状态,接收数据流程如图6所示。当检测到同步字后会自动进行数据包的接收解码,接收完成后进入待机模式。如果接收数据超过63字节,则有FIFO_flag=1,MSP430F247利用此信号作中断请求以保证读出数据的实时性。
[page]
在进行超低功耗设计时,MSP430F247可以设置定时器中断。平常处于LPM3或LPM4模式,要发送数据时产生定时器中断,同时控制EMl98-810处于待机或睡眠模式。MSP430F247工作在LPM3模式下电流为O.8μA左右,LPM4模式下电流为0.1μA左右。EMl98810正常情况下发射电流26 mA,接收电流25 mA,待机电流1.9mA;睡眠模式下为3.5μA。若将EMl98810设置为睡眠模式,将MSP430F247设置为LPM3模式,则系统耗电仅为4.3μA,使用干电池供电完全可行。
MSP430F247通过SPI接口与EMl98810相连,进入LPM3模式和退出LPM3模式的程序如下:
将EMl98810的Reg48的第2位设置为1,并将SPI_SS设为高电平,则进入睡眠模式;如再将SPI_SS设为低电平,则EMl98810会自动唤醒,退出睡眠模式。
结语
经过实际电路连接后测试,数据发送端在进行500kbps速率下连续发送数据时,整个系统电流为28.2 mA,接收数据端的电流为26.1 mA;当发射端进入到睡眠模式时电流为5.2μA;当接收端进入待机状态LPM3后,整个系统电流为l.9 mA。按照2节干电池容量1 300 mAh计算,间隔1 min发送100字节数据,考虑单片机模式切换时间,则在500 kbps速率下:
发送数据所需时间为5 ms,1小时耗能:
28.2mA×5ms×60次=8460(mA·ms)
睡眠模式下1小时耗能:
5.2μA×3600S×1000ms=18720(mA·ms)
发送状态下可以工作的时间为:
(1300mA×3600S×1000ms)/(18720+8460)=172185h
即2节干电池供电时可以工作20年。同样,可以计算出接收状态下可以工作683小时(大约28天)。因此本设计可以适合长期进行低功耗无线数据采集方面的应用。
设计资源 培训 开发板 精华推荐
- EEWORLD跨年芯币竞价——示波器、开发板、技术图书等你拿
- 报名赢红包,到场抽开发板|2021 RT-Thread 开发者大会等你约!
- 开启Altera SoC体验之旅,玩转Altera Cyclone V系列SoC
- 将想法变成现实,Maxim MAX32630FTHR创意设计大赛,重磅开启!
- “西北模电王”新概念模拟电路3——《运放电路的频率特性和滤波器》
- 有奖征集:推荐你用过或了解的好用的电源芯片
- 年终大冲关!第二期光荣榜活动震撼登场!
- 【ST板卡来了(下)】 品读STM32实战经验,汲取FAE经验闯关去抽奖
- Microchip有奖直播:VectorBlox™ SDK 报名中
- 赛灵思工业与医疗专题有奖问答