历史上的今天
今天是:2025年04月02日(星期三)
2021年04月02日 | MSP430和CC1101的电磁波唤醒功能设计
2021-04-02 来源:21ic
引言
随着计算机通信技术的迅速发展和因特网的广泛应用,尤其是工业控制领域的应用越来越广泛,物与物之间能够直接通信就变得愈加重要。特别是在仓储系统中,目前主要使用无源RFID(Radio Frequency Identifcation)电子标签,因为受到识别距离和识别条件的影响(例如,必须使标签离阅读器很近并且要正对着阅读器),使用起来会比较麻烦。有源RFID虽然能够克服这个缺点,但是因为需要电源,所以必须保证通信的低功耗,才能使有源RFID得到广泛地应用。而MSP430 MCU专门为超低功耗应用而特别设计,其具有高度灵活的定时系统、多种低功耗模式、即时唤醒以及智能化自主型外设,不仅可以实现真正的超低功耗优化,而且还能大幅延长电池的使用寿命。CC1101的WOR功能可以使芯片在无需MCU干预下周期性地从深度睡眠模式醒来侦听潜在的数据包,同时在深度睡眠模式下,CC1101的功耗几乎为0。
正是出于这种考虑,本文提出了一种基于MSP430和CC1101的无线唤醒数据传输系统,并且能将被唤醒的ED(Ending Device)的MAC(Media Access Control)地址通过串口显示在电脑上。
1 系统的总体结构

图1为电磁波唤醒总体设计方案。它主要由3部分组成:多个被唤醒对象即ED、用于数据传递的AP(Access Point)、用于数据采集或者发送命令的终端设备(如电脑)或者手持设备等。
终端设备通过UART(Universal Asynchronous Receiver/Transmitter)向AP发送指令,AP根据指令向ED发送命令,ED接收到AP发送的命令后,立即从深度睡眠状态被唤醒进入到工作状态,然后将自己的MAC地址通过CC1101发送给AP,AP对收到的MAC信息进行处理后通过UART发送给终端设备显示出来。整个过程实现的是AP发送数据,ED接收数据,然后ED发送数据,AP接收数据,进而实现最终的显示。
2 系统的硬件设计与实现
图2为电磁波唤醒的部分硬件结构。MCU采用的是TI公司的MSP430系列单片机,通过CC1101无线射频收发芯片实现无线数据的接收和发送,然后通过有线或者无线方式与终端设备进行连接。


3 系统的软件设计与实现
智能终端ED和AP是以无线射频信号方式进行数据通信的。AP先发送包含MAC信息的WOR指令,当收到AP发送过来的指令时,ED被唤醒,发送自己的MAC地址给AP,然后AP判断接收到的MAC是否符合要求。如果符合,那么就让相应的ED闪灯,如果不符合要求,则AP发送使ED继续进入睡眠状态的指令,即进入低功耗模式。图3和图4分别是AP和ED的软件流程图。

4 系统的低功耗设计
本系统的MCU采用MSP430,当其处于等待指令的LPM3低功耗模式时,此时ED的电流大约是10μA,因此整个系统低功耗设计的关键是对CC1101的WOR的使用。当它处于接收状态时,其工作电流为12.5 mA左右;如果始终处于接收状态,整个系统的供电电池会很快耗尽。为了解决这个问题,可以将系统的工作模式设置为定时工作模式,在持定的工作时间段内,启用WOR,系统会自动处于侦听状态(即接收状态)。这样,就需要两个时间参数T0(最长工作周期)和T1(最长接收时间)以及接收的占空比d(Duty Cycle)。降低功耗的关键就是降低占空比。设定每2 s醒一次,每次持续3.5 ms。唤醒ED时要先发送前导字,时长要保证唤醒终端CC1101的时间周期2 s,并且,在连续两个周期(7 ms)内没有收到同步字和帧起始码,则认为是无效的数据,重新进入WOR状态。如此设定后,整个系统的平均工作电流为35μA左右。这样一来普通的500mAh纽扣电池就能使用很长时间。
结语
经过实验验证,本文设计的基于MSP430和CC1101的电磁波唤醒系统能够保证在低功耗下进行数据的无线传输。结合实际需要对该系统进行改造,在仓储及寻货等方面有重要的现实意义。
上一篇:简述MSP430定时器
史海拾趣
|
如何焊接贴片元件(图片教程) 首先来张全部焊接一个点的PCB图 当然这是焊接贴片的必须工具 这个是准备焊接的DD(晕倒,稍不小心会不见) 先用烙铁加热焊点 然后夹个贴片马上过去 等贴片固定后焊接另外一边! 焊接IC了,先在PCB上 ...… 查看全部问答> |
|
最近将wince5.0升级到wince6.0,发现以前在EVC下编写的mfc应用程序在wince6.0上不能运行, 尝试将Program Files\\Microsoft Visual Studio 8\\VC\\ce\\Dll\\armv4I目录下几个跟MFC相关的DLL导入到系统windows目录(网上看帖子说是PB6.0对MFC不支持 ...… 查看全部问答> |
|
在做这个修正miller码的编码时,如何判定输入的序列是不是最后一位啊?我们讨论可能要用寄存器,不知道这样行不行,哪为大虾给点思路?如果能给写一小段VERILOG,更是感激不尽啊。。… 查看全部问答> |
|
如何在驱动中(如miniport driver)监控鼠标和键盘的消息? 目前打算从驱动中监控鼠标和键盘的消息(鼠标是否有移动或者键盘是否有按下),当监控到这个消息的时候,就唤醒处于睡眠状态的驱动。请大侠给一些建议,谢谢!!… 查看全部问答> |
|
看上去是个运动水壶,其实他是一个LED露营灯, 如果你旅行时有重要的私人用品,还可以将他们都装进去,防水防潮。这款名叫LightCap 300 LED户外灯,LED灯藏在瓶盖里面,瓶盖的外面是贴有整块太阳能板,不管你在哪只要野外晴天就能充电,夜晚就能持 ...… 查看全部问答> |
|
如何提高FLASH的擦写次数 在实际应用中,用户经常需要在程序运行过程中保存或读取一些数据,这些数据在工作中经常会变化,而且掉电后也不能丢失,所以需要及时地进行存储,存储这些数据常用的存储器是EEPROM。HXM6002虽然本身不带EEPROM,但是它 ...… 查看全部问答> |
|
小弟最近使用MSP430F2011外接32.768K晶振 然后想再LPM3模式下下产生3000HZ的PWM波形 可是我用定时器产生选着ACLK32.768HZ 怎么算也算不出来 3000HZ 求大侠指点 … 查看全部问答> |




