文档详情

CC1100-Wake-On-Radio

飞***
实名认证
店铺
DOC
236.50KB
约7页
文档ID:7177448
CC1100-Wake-On-Radio_第1页
1/7

1CC1100 /CC2500 Wake-on-Radio( 电磁波唤醒)功能原理CC1100 的 WOR 功能可以使芯片在无需 MCU 的干预下周期性的从深度睡眠模式醒来侦听潜在的数据包这个可编程的唤醒周期由一个 WOR 定时器控制,这个定时器的时钟源是一个内部 RC 振荡器因此,在发布 WOR 滤波使芯片处于 WOR 模式之前,必须开启这个内部的 RC 振荡器CC1100 的 GDO 引脚可以配置为在 MCU 希望的条件下产生一个中断信号例如,在RX 模式下监测到同步字时可产生一个中断信号唤醒 MCUMCU 然后可以决定下一步的动作,比如,切换到 TX 模式发送一个应答信号,或者是,如果 CRC 校验失败,继续返回WOR 模式在收到数据包后,芯片不会自动返回 WOR 状态,这意味着,MCU 需要手动的发布 WOR 滤波使芯片返回 WOR 状态如果没有监测到同步字,一个可编程的 RX 时间结束后,芯片将不需要 MCU 的干预而自动返回 WOR 模式WOR 功能可以和 RX_TIME_RSSI(信号强度检测)功能联合使用在进入 RX 模式时,检测信号强度,若信号强度低于设定的比较值,RX 模式将立即结束转入到 WOR 的睡眠周期。

这个功能可以减少 RX 的时间,进一步降低功耗CC1100 提供两种使用 WOR 的方法,使用或不使用自动同步特性本文仅介绍不带自动同步的 WOR 应用3.2.1 不带自动同步的 WOR 应用最简单的利用 WOR 功能的方式是发送机以一个固定的时间间隔发送数据包,接收机有规律的醒来侦听数据包,这种情形不需要使用自动同步控制 WOR 定时器的低功率 RC 振荡器的频率会随着温度和电压的改变而改变为了保证 RC 振荡器的频率尽可能的精确,当 XOSC 振荡器运行时以及芯片不再睡眠模式时应当进行频率校准当芯片进入睡眠模式时,RC 振荡器使用最后的校准值CC1100 从深度睡眠模式唤醒的时间和开始 RX 模式的时间通过事件 0 和事件 1 来描述这个过程参见图 1CC1100 唤醒的时间间隔,如图 1 所示,等于 tEvent0,也就是说等于两个连续的事件 0 之间的时间间隔,或等于两个连续的事件 1 之间的时间间隔这个时间通过 WOREVT 寄存器进行配置需要注意的是,事件 0 和紧接着的事件 1 之间的时间不能设置得太短在芯片处于Sleep 状态下,XOSC 振荡器被关闭,这里必须保证有足够的时间在 CC1100 醒来工作时让2XOSC 起振。

如果设置了进入 RX 时自动频率校准,t Event1 必须设置的足够长以保证 RX 开始前的频率校准时间t Event1 通过 WORCTRL 寄存器进行配置为了确保发送机以一个固定的时间间隔连续发送数据时,使用 WOR 功能的接收机能够监测到有效的同步字信息,必须合理的设置图 1 中的 tRx time这个时间必须大于两个发送数据包的时间间隔,如果没有满足这个条件,在比较坏的情况下,接收机的 trxtime 有可能刚好处于发送机发送两个数据包之间的非 TX 时间,因而错过所有的发送数据包这将在 WOR 协议部分的 WOR 例子中进一步描述和 WOR 相关的寄存器见下表寄存器 描述IOCFG2.GDO2_CFG[5:0]IOCFG1.GDO1_CFG[5:0]IOCFG0.GDO0_CFG[5:0]GDO2,GDO1 和 GDO0 可以分别配置至少有一个引脚应当用来产生 WOR 中断PKTCTRL1.WOR_AUTOSYNC在 WOR 模式下与接收数据包自动同步 WOR 定时器如果设置此位,当侦测到同步字时,将自动复位 WOR 定时器在本文的应用当中没有讨论自动同步MCSM2.RX_TIME[2:0] RX 的同步字侦测时间。

这个时间和可编程的事件 0 时间相关,这个时间关系见下面的叙述MCSM0.XOSC_FORCE_ON 强制在休眠模式下依然保持 XOSC 处于工作状态通常情况下为了降低功耗不设置此位,但如果需要减少唤醒时间可以设置此位WOREVT1.EVENT0[15:18]WOREVT0.EVENT0[7:0]事件 0 时间配置寄存器的高字节和低字节,参见下面的公式WORCTRL.RC_PD 关闭 RC 振荡器,使用 WOR 功能时必须设置此位为 0WORCTRL.EVENT1[2:0] 事件 1 时间,配置事件 0 发生后发生事件 1 等待的 RC 振荡器的时钟周期数如果在睡眠模式下 XOSC 振荡器被关闭或者自动频率校准打开时必须要考虑配置一个足够的时间保证晶体可靠起振和/或频率校准WORCTRL.WOR_RES[1:0] 控制时间 0 的时间和别的 WOR 设置蚕茧数据手册MCSM0.FS_AUTOCAL[1:0] 控制在状态转换时是否执行自动频率校准MCSM1.RXOFF_MODE[1:0] 选择完成数据包接收后的下一个状态MCSM1.TXOFF_MODE[1:0] 选择完成数据包发送后的下一个状态上表中的时间和寄存器值之间的关系在表达式 1 和 2 中给出。

表达式 1:为 WOR 自动 RX 选举的时间周期表达式 2:3为 RX 自动侦测同步字时间如果 MCSM2.RX_TIME[2:0]=7=1112,芯片将一直保持在 RX 状态直到接收到一个数据包,也就是说在 RX 状态时不会产生一个时间溢出而自动转到休眠状态其他寄存器的值请参见数据手册4. WOR 举例4.1 本文列举了两个使用 WOR 的例子系统模型是一个控制模块发送携带控制指令的数据包控制一个远程接收模块WOR 被用于降低接收模块的功耗由于这两个例子都是用于这个远程控制系统,他们有相似之处,但是使用了不同的协议第一个例子是一个没有传输错误控制的简单系统,发送模块被设置为发送固定数量的数据包,这些数据包其中之一将被 WOR 接收模块侦测到第二个例子可以认为是第一个例子的扩展,WOR 接收模块收到数据后向发送模块返回应答数据CC2500 是多通道的 RF 收发器,这两个例子都只利用了一个通道这个例子中使用的发送模块带有一个操纵杆,接收模块带有一个 LCD 显示,当操纵杆被操纵时,发送模块向接收模块传送控制指令为了保证较小控制延迟,系统响应时间必须足够短对于这个系统来说,我们设置 300 毫秒的 WOR 周期作为系统最长响应时间(在不考虑潜在的数据包错误的情况下) 。

为了避免不必要的较长责任周期,这两个例子都使用了一个相当短的数据包格式当操纵杆状态改变时,发送模块传送描述这个变化的控制指令,这个信息我们使用 1 个字节进行描述因此在这个例子中我们使用 1 个字节的固定长度数据包当数据进行传输时,CC2500 将自动传送前导字和同步字,当操纵一个固定长度数据包时,这里是一个字节,将不需要一个长度字节在例子当中为简单起见,我们也没有选择 1 个长度的地址字节1 个数据字节反映了操纵杆的状态信息,CRC 校验打开的话,两个 CRC 字节将被自动加上这意味着只有 1 个字节(图三中标记为蓝色)需要被填充到 TX FIFO,剩下的部分由 CC2500 自动产生4.2 WOR 举例WOR 例子使用了一个图 4 所示的简单协议,这个协议没有结束应答信号,数据包冲突因此也是单一方向的虽然这个协议非常简单,尽管用它传输数据不十分可靠,但是作为一个描述 WOR 主要内容的例子还是非常合适的在这个例子中,为使获得一个合适的较短系统响应时间,接收模块被设置为每 300ms 醒来侦测数据若发送模块上的操纵杆有任何变化,发送模块将发送固定数目的同一内容的数据包为了确保接收模块有机会接收到这些数据包其中的一个,发送这些数据包的总时间不应低于一个 WOR(即 300ms)周期(T packet_burst>TEVENT0)见图 4。

4这可以确保在 WOR 的唤醒接收时间,至少可以侦测到一个发送数据包同样重要的是,为确保接收模块在 RX 期间至少侦测到一个同步字,接收模块的 RX时间不应低于发送数据包的间隔时间(T Rx_time>Tpacket_interval 见图 4)如果没有满足这个时间要求,那么接收模块有可能在同步字发送之后开始侦听而在下一个同步字到来之前结束,有可能会错过所有的发送数据包请注意如果在 RX 时间结束之前侦测到同步字,CC2500将保持 RX 状态直至数据包末尾,如图 4 最后一个图形所描述,这是一个潜在的扩展 RX的 RX 周期图形 4 的的图形看起来好像是 CC2500 在接收数据包后自动返回睡眠状态,但实际并非如此当数据包被接收后,CC2500 返回 IDLE 模式无论何时 CC2500 检测到同步字,MCU 应当配置为接收来自 CC2500 的中断,并决定在 CC2500 被从 WOR 模式唤醒后下一步如何动作在这个例子里,MCU 检测数据包的 CRC 状态,解析数据,然后立刻让CC2500 返回 WOR 状态以尽量减少功耗4.2.2 时间计算可以使用 MCU 中的定时器周期性的触发发送每一个数据包。

为了降低发送模块的 TX责任周期并将低功耗,在发送完一个数据包后 CC2500 进入 IDLE 模式,应当引起注意的是,通过增加发送模块的 IDLE 模式的时间可以减少 TX 责任周期,但接收模块的 RX 时间应当满足>发送模块的 TX 时间 +IDLE 时间,因此这样做的结果会增加接收模块的 RX 责任周期,从而增加了接收模块的功耗根据不同的应用应当考虑一个合理的时间值对于这个例子来讲,在接收模块中最大允许的 RX 时间在整个 WOR 周期的占空比为0.5%,在这个条件下,可以考虑尽可能的降低发送模块的功耗首先我们来计算 EVENT0 寄存器的值,如前所述,为了获得一个 300ms 的快速响应时间,即 WOR 周期=T event0=300ms,对于这个 300ms 的时间,设置 WOR_RES=0,鉴定系统使用 26MHz 的晶振,通过使用等式 1,我们可以推导出( 3)计算出 EVENT0=28A016,也就是说 EVENT0 的高字节寄存器 EVENT1.EVENT0=2816,低字5节寄存器=A0 16假定发送模块以 250kbps 的速率进行数据传输,那么发送 88 位数据至少需要 352µs 的时间。

为满足 RX 占空比小于 0.5%的 WOR 周期,0.5%*300ms=1.5ms352µs 和 1.5ms 分别是 RX 时间的下限和上限值在推导表达式 3 时,WOR_RES 被设置为 0,根据等式 2我们可以推导出(4):RX_TIME>=5=1012,若 RX_TIME 设置为 5,我们可以反过来计算出 Trx_time=1.172ms,在整个 WOR 周期的占空比为 0.391%在 RX_TIME 明确的情况下,我们可以决定发送模块发送数据包的时间间隔在本例中将这个时间设置为 1ms,将和接收模块的接收时间有一个 0.172ms 的时间差,并且即使晶体振荡器给予温度和电压的变化有所变化也应当完全能够满足要求使用 1ms 的发送间隔,发送模块连续发送 305 个数据包,则总的发送时间=305*1ms=305ms>WOR 周期=Tevent0=300ms考虑到有可能的晶体振荡器和定时器的变化,我们额外的增加了 5 个发送周期数据包的发送间隔决定了 TX 的责任周期,在本例中 TX 责任周期=(352µs/1000)*100%=35.2%.另外一个重要的方面是两次数据包发送之间的空闲时间,也就是从一个数据包发送结束到下一个数据包开始发送的时间,这个时间必须足够大以满足在 TX 和 IDLE模式切换的时间及可能存在的频率校准时间。

这意味着在这个例子中,IDLE 的时间并不是1000µs-352µs=648µs,而是应当再减去状态切换的时间在这个例子中我们在发送。

下载提示
相似文档
正为您匹配相似的精品文档