CC1101
19.1.1 自动 POR
CC1101 内部包含上电复位电路。最小的需求见表 15,完整的上电复位功能必须遵循。
当 CHIP_RDYn 变低内部上电序列完成。在 CSn 拉低后在 SO 引脚上可以查看 CHIP_RDYn。
当 CC1101 复位完成,芯片将进入 IDLE 状态,晶振开始运行。如果芯片在上电之后有 足够的时间让晶振稳定,在捕获 CSn 变低之后 SO 引脚将马上变低。如果在复位完成之前 CSn 被拉低,SO 引脚将首先变高,指示晶振没有稳定,变低之前见图 22。
19.1.2 手动复位
CC1101 上的其它全部复位时使用 SRES 命令选通。通过执行这个选通,所有内部寄存
器和状态恢复默认,IDLE 状态。手动复位序列如下(图 23):
??设置 SCLK=1,SI=0,避免引脚控制模式可能出现的问题。 ??选通 CS 低/高。
??保持 CS 为低,然后拉高,至少 40us 才可以拉低 ??将 CSn 拉低等到 SO 拉低(CHIP_RDYn)。 ??在 SI 线上发布 SRES 选通。
??当 SO 再一次拉低,复位完成,芯片进入 IDLE 状态。
注意:以上复位程序只需要在电源给电之后。如果用户在这之后想要复位 CC1101,只 需要执行 SRES 命令选通。
SWRS061D
Page 23 of 42
CC1101
19.2 晶振控制
如果设置 MCSM0.XOSC_FORCE_ON,晶体振荡器(XOSC)是自动控制的或者一直在线。 在自动模式下,如果执行 SXOFF 或 SPWD 命令选通,XOSC 将被关闭;状态机接着讲 变为 XOFF 或者 SLEEP。这只能从 IDLE 状态执行。当 CSn 被释放(变高)XOSC 将被关闭。 当 CSn 被拉低 XOSC 将再一次被打开。状态机将变为 IDLE 状态。在 SPI 接口准备使用之 前,SPI 接口的 SO 引脚必须被拉低。
如果 XOSC 被强制开,即使在 SLEEP 状态,晶振也将保持开的状态。 晶振的启动 时间依赖于晶振的 ESR 和负载电容。晶振的电气规格可以 从 16 页的 Section4.4 查找。
19.3 电压调整器控制
数字和的电压调整器由无线控制器控制。当芯片进入低功耗的 SLEEP 状态时,电压调
整器被禁止。这发生在 SPWD 命令选通被发送到 SPI 接口 CSn 被释放后。接着芯片进入
SLEEP 状态。再一次设置 CSn 为低将打开调整器和晶振,使芯片进入 IDLE 状态。
如果使能无线唤醒,WOR 模块将控制电压调整器,见 Section19.5 描述。
19.4 活跃模式
CC1101 有两个活跃的模式:接收和发送。这些模式直接通过 MCU 使用 SRX 和 STX 命 令滤波,或者自动无线唤醒来激活。
频率合成器必须被有规律的校准。CC1101 有一个手动校准选项(使用 SCAL 滤波)和 3 个自动校准选项,由 MCSM0.FS_AUTOCAL 设定来控制:
??当从 IDLE 进入 RX 或 TX(或 FSTXON)时校准 ??当从 RX 或 TX 自动进入 IDLE 时校准
??每四次从 RX 或 TX 自动进入 IDLE 时校准
如果无线从 TX 或 RX 使用 SIDLE 命令进入 IDLE,不执行校准。校准占用一定数量的 XOSC 周期;校准的详细时序见表 31。
当 RX 被激活,芯片将一直保持在接收模式,直到一个数据包被成功的接收或者定时器 满 RX 中止(见 Section19.7)。降低错误的同步字被检测的可能性可以通过使用 PQT,CS, 最大同步字长度和 Section17 描述的同步字限制。一个数据包被成功接收之后,无线控制器 进入的模式由 MCSM1.RXOFF_MODE 来设定。可能的目的地是:
??IDLE
??FSTXON:同步合成器开并且准备在 TX 频率。使用 STX 激活 TX ??TX:开始发送前导
??RX:开始搜索一个新的数据包
注意:当 MCSM1.RXOFF_MODE=11,并且一个数据包已经被接收,一个有效的 RSSI 值再一次被呈现在 RSSI 寄存器之前需要一定的时间,即使无线从来没有退出 RX 模式。
这个时间是 RSSI 的响应时间,论述见 DN505。
同理,当 TX 被激活,芯片一直保持在 TX 状态直到当前数据包被成功的发送。接下来 状态将按照 MCSM1.TXOFF_MODE 来设定。可能的目的地与 RX 相同。
SWRS061D
Page 24 of 42
CC1101
MCU 也可以手动的通过使用命令滤波从 RX 到 TX 转换状态。如果无线控制器当前在发
送状态,使用 SRX 命令,当前的传送将终止,转换到 RX 模式。
如果无线控制器在 RX 模式,执行 STX 或 SFSTXON 命令,TX-if-CCA 功能将被使用。 如果信道为非空闲,芯片将保持在 RX。MCSM1.CCA_MODE 配置控制 CCA 的条件。详见 46 页 Section17.5。
SIDLE 命令可以一直用来强制无线控制器进入 IDLE 状态。
19.5 无线唤醒(WOR)
附加的 WOR 够哦拿给你允许 CC1101 周期性的从 SLEEP 状态唤醒,不需要 MCU 的交 互监听输入的数据包。
当 SWOR 命令在 SPI 接口上发送,当 CSn 被释放 CC1101 将持续 SLEEP 状态。在 SWOR 命令被使能之前必须使能 RC 振荡器,作为 WOR 定时器的时钟源。片上定时器将设置
CC1101 进入 IDLE 状态,然后 RX 状态。在编程好的 RX 时间之后,芯片将回到 SLEEP 状 态,除非接收到一个数据包。详见图 24 和 Section19.7。
要退出 WOR 模式,设置 CC1101 进入 IDLE 状态。
使用 GDO 引脚当接收到数据包后 CC1101 可以发信号给 MCU。如果一个数据包被接收 到,MCSM1.RXOFF_MODE 将决定数据包接收完成之后的动作。当 MCU 读取数据包,它可 以使用 SWOR 命令将芯片从 IDLE 状态转回到 SLEEP 状态。
注意:FIFO 在 SLEEP 状态释放其中的内容。
WOR 定时器有两个事件,事件 0 和事件 1。在 WOR 激活的 SLEEP 状态,达到事件 0 将打开数字校准器,启动晶振。在编程好的超时后事件 1 跟随事件 0。
两个连续的事件 0 之间的时间由 WOREVT1.EVENT0 和 WOREVT0.EVENT0 的尾数值编 程,典型值由 WORCTRL.WOR_RES 设置。公式为:
事件 1 的超时时间由 WORCTRL.EVENT1 配置。图 24 显示事件 0 超时和事件 1 超时的 时序关系。
SWRS061D
Page 25 of 42
CC1101
从 CC1101 进入 SLEEP 状态直到下一个被编程的事件 0 出现的时间,图 24 的 tSLEEP,当 使用 26MHz 晶振的时候必须大于 11.08ms,在使用 27MHz 晶振的时候必须大于 10.67ms。
如果 tSLEEP 小于 11.08(10.67)ms,连续事件 0 有产生太早的可能。
AN047 详细的说明了使用 WOR 时的工作原理和不同的寄存器相关。
19.5.1 RC 振荡器和时序
用于 WOR 功能的低功耗 RC 振荡器的频率随着温度和供电电压而变化。为了尽量保持
频率的稳定,RC 振荡器要尽可能的被校准,当 XOSC 在运行而且芯片不处于 SLEEP 状态。 当电源和 XOSC 使能,WOR 定时器使用的时钟和 XOSC 是分开的。当芯片进入睡眠状态, RC 振荡器使用最好的有效校准结果。RC 振荡器的频率锁定在主晶振频率的 750 分频。
在无线唤醒频繁的应用中,典型的每秒几次,尽可能的做到 RC 振荡器校准一次病关掉 校准来降低功耗。这可以通过设定 WORCTRL.RC_CAL=0,这需要从 RCCTRL0_STATUS 和 RCCTRL1_STATUS 读出 RC 振荡器的校准值,并分别写回到 RCCTRL0 和 RCCTRL1。如果 RC 振荡器校准被关闭,如果温度和电源电压改变需要再一次手动打开。更多详细资料参考 AN047。
19.6 时序
在 CC1101 中无线控制器控制着大多数的时序,像合成器校准,PLL 锁定时间,RX/TX 转换时间。从 IDLE 到 RX 和从 IDLE 到 TX 的时序是恒定的,依赖于自动校准的设置。RX/TX 和 TX/RX 转换的时间也是恒定的。校准时间是恒定的 18739 个时钟周期。表 31 显示关键状 态转换的晶振时钟周期的时序。
上电时间和 XOSC 启动时间是可变的,但是在表 10 的极限规定之内。 注意,在跳频传播的频谱或者多信道协议,校准时间可以从 721us 减少到 50us。详见 Section28.2。
SWRS061D
Page 26 of 42
CC1101
19.7 接收终止定时器
CC1101 有一个附加的功能,在编程的时间之后自动终止 RX。这个功能的主要应用时无 线唤醒,但是对其他应用也是有用的。当进入 RX 状态启动终止定时器。超时时间由编程
MCSM2.RX_TIME 来设置。当定时器终止,无线控制器将检查留在 RX 的条件;如果条件不
满足,RX 将终止。
可编程的条件为:
??MCSM2.RX_TIME_QUAL=0:如果发现同步字,继续接收
??MCSM2.RX_TIME_QUAL=1:如果发现同步字或者前导质量在门限之上(PQT),继
续接收 如果当使能接收器的时候系统期望启动传送,可以使用 MCSM2.RX_TIME_RSSI 功能。 如果第一个有效的 CS 样本显示没有载波(RSSI 低于门限),无线控制器将终止 RX。
对于 ASK/OOK 调制, 没有载波监听只能考虑有效的 8 个信号周期之后。因此在 ASK/OOK 模式当 1 信号时 8 个或更少的时候可以使用 MCSM2.RX_TIME_RSSI。
当 MCSM2.RX_TIME_RSSI 功能被使用,如果 RX 终止对于没有 CS 或者当使用
MCSM2.RX_TIME 超时功能没有发现同步字,如果禁止 WOR 芯片将回到 IDLE 状态,如果 使能 WOR 将回到 SLEEP 状态。另外,MCSM1.RXOFF_MODE 的设置决定 RX 结束时的状 态。这意味着一旦接收到同步字芯片将不会自动回到 SLEEP 状态。因此推荐当使用 WOR 模式时,始终唤醒 MCU。这可以通过编程 GDO 输出脚中第一个选择输出信号 6(58 页表 35)来实现,并且设置 MCU 从 GDO 脚边沿触发中断唤醒。
20 数据 FIFO
CC1101 包含两个 64 字节的 FIFO,一个用来接收数据,一个用来发送数据。SPI 接口用 来从 RX FIFO 读取数据,向 TX FIFO 写入数据。Section10.5 包含 SPI FIFO 访问的详细说明。 FIFO 控制器将检测 RX FIFO 的上溢和 TX FIFO 的下溢。
当向 TX FIFO 写入数据时 MCU 的责任是避免 TX FIFO 下溢。TX FIFO 溢出将在 TX FIFO 的内容中产生一个错误。
同样,在读取 RX FIFO 时 MCU 要避免读取经过 RX FIFO 的空值,一旦 RX FIFO 下溢 将在读出的 RX FIFO 数据中产生一个错误。
当传送 SPI 头字节在 SO 引脚上激活的芯片状态字节,如果访问是读操作时包含 RX FIFO 的填充等级,如果访问是写操作时包含 TX FIFO 的填充等级。详见 30 页 Section10.1。
RX FIFO 和 TX FIFO 中的字节数量可以通过状态寄存器 RXBYTES.NUM_RXBYTES 和 TXBYTES.NUM_TXBYTES 读取。如果一个要被接收的字节正好在 RX FIFO 的最后一个字 节通过 SPI 接口被读出的时候写入到 RX FIFO,RX FIFO 的指针将不会适时的更新,最后 读出的字节将被复制。为了避免这个问题,在数据包的最后一个字节被接收之前 RX FIFO 绝对不能空。
对于数据包长度少于 64 字节,在读出 RX FIFO 的数据之前等到数据包被完全接收。 如果数据包长度大于 64 字节,MCU 必须检测有多少个字节可以从 RX FIFO 读出 (RXBYTES.NUM_RXBYTES-1)。下面的软件步骤可以被用到:
1. 以一个速率度 RXBYTES.NUM_RXBYTES,保证至少读 2 次 RF 接收到的字节数
直到返回两次相同的值,存储到 n。
2. 如果 n<#数据包中的剩余字节,从 RX FIFO 读出 n-1 个字节。
SWRS061D
Page 27 of 42