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利用此信号作中断请求以保证读出数据的实时性。
在进行超低功耗设计时,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天)。因此本设计可以适合长期进行低功耗无线数据采集方面的应用。