教案cc1100-CC2500Wake Radio电磁波唤_第1页
教案cc1100-CC2500Wake Radio电磁波唤_第2页
教案cc1100-CC2500Wake Radio电磁波唤_第3页
教案cc1100-CC2500Wake Radio电磁波唤_第4页
教案cc1100-CC2500Wake Radio电磁波唤_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CC1100 /CC2500 Wake-on-Radio(电磁波唤醒)功能原理3.2 CC1100 的 WOR 功能可以使在无需MCU 的干预下周期性的从深度睡眠模式醒来侦听潜在的数据包。这个可编程的唤醒周期由一个 WOR 定时器控制,这个定时器的时钟源是一个RC 振荡器。因此,在发布 WOR 滤波使处于 WOR 模式之前,必须开启这个的 RC 振荡器。CC1100 的 GDO 引脚可以配置为在 MCU 希望的条件下产生一个中断信号。例如,在 RX 模式下监测到同步字时可产生一个中断信号唤醒 MCU。CU 然后可以决定下一步的动作,比如,切换到 TX 模式发送一个应答信号,或者是,如果 CRC

2、 校验失败,继续返回 WOR模式。在收到数据包后,不会自动返回 WOR 状态,这意味着,MCU 需要手动的发布WOR 滤波使返回 WOR 状态。如果没有监测到同步字,一个可编程的 RX 时间结束后,自动返回 WOR 模式。将不需要 MCU 的干预而WOR 功能可以和 RX_TIME_RSSI(信号强度检测)功能联合使用。在进入 RX 模式时,检测信号强度,若信号强度低于设定的比较值,RX 模式将立即结束转入到 WOR 的睡眠周期。这个功能可以减少 RX 的时间,进一步降低功耗。CC1100 提供两种使用 WOR 的方法,使用或不使用自动同步特性。本文仅介绍不带自动同步的 WOR 应用。3.2.

3、1 不带自动同步的 WOR 应用最简单的利用 WOR 功能的方式是发送机以一个固定的时间间隔发送数据包规律的醒来侦听数据包,这种情形不需要使用自动同步。有控制 WOR 定时器的低功率 RC 振荡器的频率会随着温度和电压的改变而改变。为了保证 RC 振荡器的频率尽可能的精确,当 XOSC 振荡器运行时以及不再睡眠模式时应当进行频率校准。当进入睡眠模式时,RC 振荡器使用最后的校准值。CC1100 从深度睡眠模式唤醒的时间和开始RX 模式的时间通过事件 0 和事件 1 来描述。这个过程参见图 1。CC1100 唤醒的时间间隔,如图 1 所示,等于 tEvent0,也就是说等于两个连续的事件 0 之

4、间的时间间隔,或等于两个连续的事件 1 之间的时间间隔。这个时间通过 WOREVT 寄存器进行配置。需要注意的是,事件 0 和紧接着的事件 1 之间的时间不能设置得太短。在处于Sleep状态下,XOSC 振荡器被关闭,这里必须保证有足够的时间在 CC1100 醒来工作时让 XOSC起振。如果设置了进入 RX 时自动频率校准,tEvent1 必须设置的足够长以保证 RX 开始前的频率校准时间。tEvent1 通过 WORCTRL 寄存器进行配置。为了确保发送机以一个固定的时间间隔连续发送数据时,使用 WOR 功能的能够监测到有效的同步字信息,必须合理的设置图 1 中的 tRx time。这个时间

5、必须大于两个发送数据包的时间间隔,如果没有满足这个条件,在比较坏的情况下,的 trxtime 有可能刚好处于发送机发送两个数据包之间的非 TX 时间,因而错过所有的发送数据包。这将在 WOR协议部分的 WOR 例子中进一步描述。和 WOR 相关的寄存器见下表。上表中的时间和寄存器值之间的关系在表达式 1 和 2 中给出。表达式 1:为 WOR 自动 RX表达式 2:的时间周期。寄存器描述IOCFG2.GDO2_CFG5:0GDO2,GDO1 和 GDO0 可以分别配置。至少有一个引脚应当用来产生 WOR 中断。IOCFG1.GDO1_CFG5:0IOCFG0.GDO0_CFG5:0PKTCTR

6、L1.WOR_AUTOSYNC在 WOR 模式下与接收数据包自动同步 WOR 定时器。如果设置此位,当侦测到同步字时,将自动复位 WOR 定时器。在本文的应用当中没有 自动同步。MCSM2.RX_TIME2:0RX 的同步字侦测时间。这个时间和可编程的事件 0 时间相关,这个时间关系见下面的叙述。MCSM0.XOSC_FORCE_ON强制在休眠模式下依然保持 XOSC 处于工作状态。通常情况下为了降低功耗不设置此位,但如果需要减少唤醒时间可以设置此位。WOREVT1.EVENT015:18事件 0 时间配置寄存器的高字节和低字节,参见下面的公式。WOREVT0.EVENT07:0WORCTRL

7、.RC_PD关闭 RC 振荡器,使用 WOR 功能时必须设置此位为 0。WORCTRL.EVENT12:0事件 1 时间,配置事件 0 发生后发生事件 1 等待的 RC 振荡器的时钟周期数。如果在睡眠模式下 XOSC 振荡器被关闭或者自动频率校准打开时必须要考虑配置一个足够的时间保证晶体可靠起振和/或频率校准。WORCTRL.WOR_RES1:0控制时间 0 的时间和别的 WOR 设置。蚕茧MCSM0.FS_AUTOCAL1:0控制在状态转换时是否执行自动频率校准MCSM1.RXOFF_MODE1:0选择完成数据包接收后的下一个状态MCSM1.TXOFF_MODE1:0选择完成数据包发送后的下

8、一个状态为 RX 自动侦测同步字时间。如果 MCSM2.RX_TIME2:0=7=1112,将一直保持在 RX 状态直到接收到一个数据包,也就是说在 RX 状态时不会产生一个时间溢出而自动转到休眠状态。其他寄存器的值请参见4. WOR 举例。4.1 本文列举了两个使用 WOR 的例子。系统模型是一个控制模块发送携带控制指令的数据包控制一个接收模块。WOR 被用于降低接收模块的功耗。由于这两个例子都是用于这个控制系统,他们有相似之处,但是使用了不同的协议。第一个例子是一个没有传输错误控制的简单系统,发送模块被设置为发送固定数量的数据包,这些数据包其中之一将被 WOR 接收模块侦测到。第二个例子可

9、以认为是第一个例子的扩展,WOR 接收模块收到数据后向发送模块返回应答数据。CC2500 是多通道的 RF 收发器,这两个例子都只利用了一个通道。这个例子中使用的发送模块带有一个杆,接收模块带有一个 LCD 显示,当杆纵时,发送模块向接收模块传送控制指令。为了保证较小控制延迟,系统响应时间必须足够短。对于这个系统来说,设置 300 毫秒的 WOR 周期作为系统最长响应时间(在不考虑潜在的数据包错误的情况下)。为了避免不必要的较长责任周期,这两个例子都使用了一个相当短的数据包格式。当杆状态改变时,发送模块传送描述这个变化的控制指令,这个信息使用 1 个字节进行描述。因此在这个例子中使用 1 个字

10、节的固定长度数据包。当数据进行传输时,CC2500 将自动传送前导字和同步字,当一个固定长度数据包时,这里是一个字节,将不需要一个长度字节。在例子当中为简单起见,也没有选择 1 个长度的地址字节。1 个数据字节反映了杆的状态信息,CRC 校验打开的话,两个 CRC 字节将被自动加上。这意味着只有 1 个字节(图三中标记为蓝色)需要被填充到 TX FIFO,剩下的部分由 CC2500 自动产生。4.2 WOR 举例WOR 例子使用了一个图 4 所示的简单协议,这个协议没有结束应答信号,数据包因此也是单一方向的。虽然这个协议非常简单,尽管用它传输数据不十分可靠,但是作为一个描述 WOR 主要内容的

11、例子还是非常合适的。在这个例子中,为使获得一个合适的较短系统响应时间,接收模块被设置为每 300ms 醒来侦测数据。若发送模块上的杆有任何变化,发送模块将发送固定数目的同一内容的数据包。为了确保接收模块有机会接收到这些数据包其中的一个,发送这些数据包的总时间不应低于一个 WOR(即 300ms)周期(Tpacket_burstTEVENT0)见图 4。这可以确保在 WOR 的唤醒接收时间,至少可以侦测到一个发送数据包。同样重要的是,为确保接收模块在 RX 期间至少侦测到一个同步字,接收模块的 RX 时间不应低于发送数据包的间隔时间(TRx_timeTpacket_erval 见图4)。如果没有

12、满足这个时间要求,那么接收模块有可能在同步字发送之后开始侦听而在下一个同步字到来之前结束,有可能会错过所有的发送数据包。请注意如果在 RX 时间结束之前侦测到同步字,CC2500 将保持 RX 状态直至数据包末尾,如图 4 最后一个图形所描述,这是一个潜在的扩展 RX 的 RX周期。图形 4 的的图形看起来好像是 CC2500 在接收数据包后自动返回睡眠状态,但实际并非如此。当数据包被接收后,CC2500 返回IDLE 模式。无论何时 CC2500 检测到同步字,MCU应当配置为接收来自 CC2500 的中断,并决定在 CC2500 被从 WOR 模式唤醒后下一步如何动作。在这个例子里,MCU

13、 检测数据包的 CRC 状态,WOR 状态以尽量减少功耗。4.2.2 时间计算数据,然后立刻让 CC2500 返回可以使用 MCU 中的定时器周期性的触发发送每一个数据包。为了降低发送模块的 TX责任周期并将低功耗,在发送完一个数据包后 CC2500 进入 IDLE 模式,应当引起注意的是,通过增加发送模块的 IDLE 模式的时间可以减少 TX 责任周期,但接收模块的 RX 时间应当满足发送模块的 TX 时间+IDLE 时间,因此这样做的结果会增加接收模块的 RX 责任周期,从而增加了接收模块的功耗。根据不同的应用应当考虑一个合理的时间值。对于这个例子来讲,在接收模块中最大允许的 RX 时间在

14、整个 WOR 周期的占空比为0.5%,在这个条件下,可以考虑尽可能的降低发送模块的功耗。首先来计算 EVENT0 寄存器的值,如前所述,为了获得一个 300ms 的快速响应时间,即 WOR 周期=Tevent0=300ms,对于这个 300ms 的时间,设置 WOR_RES=0,鉴定系统使用 26MHz 的晶振,通过使用等式 1,可以推导出(3)计算出 EVENT0=28A016,也就是说 EVENT0 的高字节寄存器 EVENT1.EVENT0=2816,低字节寄存器=A016。假定发送模块以 250kbps 的速率进行数据传输,那么发送 88 位数据至少需要 352s 的时间。为满足 RX

15、 占空比小于 0.5%的 WOR 周期,0.5%*300ms=1.5ms。352s 和 1.5ms 分别是 RX 时间的下限和上限值。在推导表达式 3 时,WOR_RES 被设置为 0,根据等式 2可以推导出(4):RX_TIME=5=1012,若 RX_TIME 设置为 5,整个 WOR 周期的占空比为 0.391%。可以反过来计算出 Trx_time=1.172ms,在在 RX_TIME 明确的情况下,可以决定发送模块发送数据包的时间间隔。在本例中将这个时间设置为 1ms,将和接收模块的接收时间有一个 0.172ms 的时间差,并且即使晶体振荡器给予温度和电压的变化有所变化也应当完全能够满

16、足要求。使用 1ms 的发送间隔,发送模块连续发送 305 个数据包, 则总的发送时间=305*1ms=305msWOR 周期 =Tevent0=300ms。考虑到有可能的晶体振荡器和定时器的变化, 额外的增加了 5 个发送周期。数据包的发送间隔决定了 TX 的责任周期,在本例中 TX 责任周期=(352s/1000)*100%=35.2%.另外一个重要的方面是两次数据包发送之间的空闲时间,也就是从一个数据包发送结束到下一个数据包开始发送的时间,这个时间必须足够大以满足在 TX 和 IDLE 模式切换的时间及可能存在的频率校准时间。这意味着在这个例子中,IDLE 的时间并不是 1000s-35

17、2s=648s,而是应当再减去状态切换的时间。在这个例子中 在发送数据前手动进行频率校准,在数据包发送期间不进行频率校准。根据 CC2500 中文32 页表22,在使用 26MHz 晶体的情况下,从 IDLE 到 TX 需要 88.4s,从 TX 到 IDLE 需要 0.1s,那么 IDLE 的时间=1000-352-88.4-0.1=559.5s。如图 5 所示:在使用 WOR 功能的接收模块,配置 MCSM0.FS_AUTOCAL=012 可以实现这在每次从 IDLE 到 RX 时使用自动频率校准,能(但这个值设为 112 能显著降低功耗)。在大部分情况下,包括本例,MCSM0.XOSC_

18、FORCE_ON 不被设置,当进入睡眠模式时关闭这个晶体振荡器以节省功耗。当 CC2500 醒来在事件 0 转换到 IDLE 模式时,必须有充足的时间保证晶体起振直至稳定(典型值为 300s)以及在 RX 之前的频率校准时间(典型值为 809s),总的等待时间 300s +809s=1009s 约为 1.1ms,因此 WORCTRL1.EVENT1 必须被配置为 1112,使得Tevent1=1.38ms(在 26MHz 晶体条件下)。4.3 带有应答的 WOR 例子 WOR-ack4.3.1 协议描述WOR-ack 的例子和 WOR 的例子扩展为接收到数据包后返回应答信号。若在发送模块上杆的

19、状态有所改变,发送模块开始周期性的发送数据包直至收到接受的返回数据。这意味着,和第一个例子不同,发送时不是发送固定数目的数据包。为了使发送模块能够接收到来自接收模块的数据应答,发送模块在发送两个数据包之间必须有一段时间转为接收状态。此外,接收模块在收到数据必须发送一个应答信号。应答数据包应当在收到合法有效的数据包后立即发出。如果接收模块醒来后接收到一个号,且 MCU 应当使 CC2500 立即进入 WOR 状态。的数据包,应当不返回应答信由于协议发生了变化,带有 WOR 功能的接收模块被配置为收到一个数据包后自动转换为 FSTXON 状态,而不是默认的 IDLE 状态(通过配置 MCSM1.R

20、XOFF_MODE=1 可以实现这个功能)。FSTXON 是一种这样的状态,频率器被打开,准备进行数据传送。这是的发布 STX 滤波后可以快速开始传送数据。当带有 WOR 功能的接收模块检测到同步字且唤醒 MCU 后,MCU 将会检查 FIFO 的数据内容及。这意味着接收模块将停留在FSTXON 状态,准备快速传送应答数据。若不需要传送应答数据,MCU 将发布 IDLE 滤波使模块处于 IDLE 模式,然后发布 WOR 滤波使模块进入 WOR 模式。与此相应,传送数据包结束后发送模块应当转换为 RX 模式而不是 IDLE 模式以便侦听到应答数据包(CMS1.TXOFFMODE=RX),自动转换

21、为 RX 模式 比手动转换要节省时间。接收模块将收到的数据作为应答数据发送。发送模块收到的应答数据包并和当前的杆状态比较。如果收到了合法应答数据,将停止数据发送,如果没有检测到应答数据包,RX 时间结束后,发送模块转到 IDLE 模式。对于 WOR-ACK 这个例子来讲,在没有接收到数据应答信号时依然有一个最多发送的数据包个数,这个功能可以发送模块在没有受到应答数据的情况下进入发送死循环。理论上来讲,如 4.2.2 节所述,发送模块在收到数据应答前发送的数据包数不应当超过 305 个。但是,在这个例子中,在收到应答数据前发送的数据包数偶尔可能会超过 305 个。这里有两个原因:1.接收模块处于 RX 模式时数据包被传送,但是某些事情可能干扰了这个数据包,从而接收模块没有正确的接收到这个数据包。接收模块确实收到了这个数据包而且返

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论