翻译CC1101中文数据手册

更新时间:2024-06-14 01:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CC1101

低成本、低功耗 1GHz 以下无线收发器(增强型 CC1100)

应用

??基于315/433/868/915 MHz ISM/SRD的极低功耗的无线应用。 ??无线报警和安全系统 ??工业监视和控制

产品描述

CC1101 是低成本的 1GHz 以下的无线收发器,为极低功耗的无线应用而设计。电路主要设 计为 ISM(工业、科学和医疗)和 SRD(短距离设备),频段在 315、433、868 和 915,但是可 以很容易的编程,使之工作在其他频率,在 300-348MHz,387-464 MHz

和 779-928 MHz

频段。

CC1101 是 CC1100 RF 收发器改良以及代码一致的版本。CC1101 的主要改进如下:

??改良的伪应答

??更好的关闭相位噪声,因而改善相邻信道功耗(ACP)的性能 ??更高的输入饱和级别 ??改善输出功率斜面 ??扩大工作频段:

CC1100: 400-464 MHz and 800-928MHz CC1101: 387-464 MHz and 779-928MHz

SWRS061D

Page 1 of 42

CC1101

3.6 4线串口配置和数据接口

CC1101 通过 4 线 SPI 兼容接口(SI,SO,SCLK 和 CSn)进行配置,CC1101 作为从设备。 这个接口同事用作读写缓冲器数据。SPI 接口上所有的数据传送都是先传送 MSB。

SPI 接口上的所有传送都是以一个头字节(header byte)开始,包含一个读写位(R/W), 一个突发(burst access)访问位(B)和 6 位地址位(A5~A0)。

在 SPI 总线上传输数据时,CSn 脚必须保持低电平。如果在发送头字节或者读写寄存器 时 CSn 拉高,传送将被取消。SPI 接口上地址和数据的发送时序图见图 12,并参考表 19。

当 CSn 被拉低,MCU 在发送头字节之前,必须等到 CC1101 的 SO 脚变为低电平。这 说明晶振开始工作。除非芯片在 SLEEP 或者 XOFF 状态,SO 脚在 CSn 引脚被拉低后马上 变为低电平。

图 12:配置寄存器读写操作

表 19:SPI 接口时序要求

SWRS061D

Page 2 of 42

CC1101

3.6.1 芯片状态字节

当在 SPI 接口上发送头字节,数据字节或者命令选通(command strobe)时,CC1101

在 SO 引脚上发送芯片状态字节。状态字节包含对 MCU 有用的关键状态信号。第 1 位,S7, 为 CHIP_RDYn 信号,在 SCLK 的第一个上升沿之前,该信号必须变为低电平。CHIP_RDYn 表 示晶振已经开始工作。

第 6、5、4 位组成(STATE)状态值,该值反映芯片的状态。在空闲(IDLE)状态, XOSC 和数字核的电源被打开,但是其他模块全部掉电。频率和信道配置只能在芯片处于该 状态时被更新。当芯片处于接收模式时,接收(RX)状态被激活。同样,当芯片处于发送 模式时,发送(TX)状态被激活。

状态字节的最后 4 位(3:0)包含 FIFO_BYTES_AVAILABLE。在读操作中(头字节的 R/W 位置 1),FIFO_BYTES_AVAILABLE 包含从 RX FIFO 可读到的数据字节数。在写操作中 (头字节的 R/W 位置 0),FIFO_BYTES_AVAILABLE 包含可写入到 TX FIFO 中的字节数。 当 FIFO_BYTES_AVAILABLE=15,15 个或者更多字节是可读的/空闲的。 表 20 为状态字节概要。 位 名称 描述 7 CHIP_RDYn 6:4 STATE[2:0] 保持高电平,直到电源和晶振稳定。当时用 SPI 接口时必须

变为低电平。 显示当前主状态机器模式 值 状态 描述 000 IDLE 空闲状态 001 RX 接收模式 010 TX 发送模式 011 FSTXON 快速 TX 准备 100 CALIBRATE 频率合成器校准运行中 101 SETTLING PLL 设置中 110 RXFIFO_OVE RX FIFO 溢出。读出有用的数 RFLOW 据,时用 SFRX 清洗 FIFO 111 TXFIFO_UND TX FIFO 下溢,使用 SFTX 命令

ERFLOW 3:0 FIFO_BYTES_AVAILA BLE[3:0]

表 20:状态字节概要 3.6.2 寄存器访问

CC1101 的配置寄存器位于 SPI 地址的 0x00 ~ 0x2E。64 页的表 37 列出了所有配置寄存

器。推荐使用 SmartRF Studio 生成合适的寄存器设定值。每个寄存器的详细说明见 67 页的

@

29.1 和 29.2。所有配置寄存器都是可读写的。当写寄存器时,每次一个头字节或者数据字节在 SI 引脚上传送,一个状态字节都在 SO 引脚上传送。当读寄存器时,每次一个头字节在 SI 引脚

上传送时,一个状态字节都在 SO 引脚上传送。

通过设置头字节的 burst 位(B)可以高效的实现寄存器的连续地址访问。地址位(A5~A0)

SWRS061D

Page 3 of 42

CC1101

在内部地址指针中设置起始地址。指针通过每一个新的字节自动增加(每 8 个时钟脉冲)。突

发访问可以是读,也可以是写访问,必须通过将 CS 脚拉高来停止操作。

在0x30 - 0x3D的寄存器地址范围,burst位置1选择状态寄存器,而burst置0选择命令选通

(command strobes)。详见10.3。因此,突发访问不可用于状态寄存器的访问,一次只能访问

一个状态寄存器。状态寄存器为只读。

3.6.3 读 SPI

3.6.4 命令选通(command strobes)

命令选通可以看做是 CC1101 的一个单字节指令。通过寻址一个命令选通寄存器,将启 动内部序列。这些命令用来禁止晶振,使能接收,使能无线唤醒等。

命令选通寄存器通过发送单一的头字节来访问(不传送数据字节)。也就是说,只有一

个 R/W 位,一个突发访问位(置 0)和 6 位地址位(在 0x30~0x3D 范围内)被传送。R/W 位可以是 1 或者 0,这将决定状态字节中的 FIFO_BYTES_AVAILABLE 区域如何确认。

当写命令选通时,状态字节将在 SO 引脚上被发送。

命令选通可以在 CSn 不被拉高的情况下,跟随在任何其他 SPI 访问之后。然而,如果

一个 SRES 命令被执行,下一个头字节被执行之前必须等到 SO 引脚被拉低,见图 13。命令 选通将立即被执行,除了 SPWD 和 SXOFF 命令在 CSn 拉高之后执行。

3.6.5 FIFO 访问

64 字节的 TX FIFO 和 64 字节的 RX FIFO 通过 0x3F 地址访问。当 R/W 位置 0 时,

TX FIFO 被访问,当 R/W 位置 1 时 RX FIFO 被访问。TX FIFO 为只写,RX FIFO 为 只读。

Burst 位用来确定 FIFO 访问时单字节访问还是突发访问。单字节访问方式是一个 burst 位置 0 的头字节和一个数据字节。数据字节之后,跟随一个新的头字节。因此,CSn 可以保

持低电平。突发访问的方式是一个头字节和连续的数据字节,直到将 CSn 拉高来停止访问。

使用下列头字节来访问 FIFO:

??0x3F:单字节访问 TX FIFO ??0x7F:突发访问 TX FIFO

SWRS061D

Page 4 of 42

CC1101

??0xBF:单字节访问 RX FIFO

??0xFF:突发访问 RX FIFO

当向 TX FIFO 写入数据时,在每一个新的字节发送时状态字节在 SO 引脚上输出。图 12)当向 TX FIFO 写入数据时,状态字节可以用来检测 TX FIFO 的下溢。

注意状态字节包含的空闲字节数是正在传送到 TX FIFO 的字节写入之前的值。当最后

一个可以写入 TX FIFO 的字节在 SI 引脚上传送的时候,同时在 SO 引脚上接收的状态字 节将显示 TX FIFO 中有一个字节的空闲。

TX FIFO可以通过SFTX命令刷新。同样SFRX命令可以刷新RX FIFO。SFTX和SFRX命令 只能再IDLE、TXFIFO_UNDERFLOW、RXFIFO_OVERFLOW状态使用。在进入SLEEP 状态时,两个FIFO都将被刷新。

3.6.6 PATABLE 访问

0x3E 地址用来访问 PATABLE,用来选择 PA 功率控制设置。SPI 在接收到该地址后,

传送 8 字节数据。通过编程 PATABLE,可以完成对 PA 功率的增加和减少的控制,以及 ASK 调制的修正以减小带宽。参照 samrtRF studio 推荐的修正和 PA 序列。

PATABLE 是一个 8 字节表,定义 PA 功率控制使用的 8 个字节中的任意值。(通过

FREND0.PA_POWER 中的 3 位值选择)表格可以从最低设置(0)到最高的(7)读写,一次 一个字节。一个索引指针用来控制访问表格。指针在每次读写表格的一个字节时自动增加, 并且在 CSn 拉高时自动设置为最小值。当达到最高值时自动复位。

依靠 burst 位,访问 PATABLE 既可以是单字节访问也可以是突发访问。当时用突发访 问时,索引指针自动增加,当指针达到 7 时,自动复位为 0。R/W 位控制访问时读操作还是 写操作。

注意,当进入 SLEEP 状态时 PATABLE 的内容将全部消失,除了第一个字节(index0)。

3.7 MCU 接口和引脚配置

在典型系统中,CC1101 必须连接 MCU。MCU 必须具备: ??编程 CC1101 到不同的模式。 ??读写数据缓冲器。

??通过 4 线 SPI 总线(SI、SO、SCLK 和 CSn)读取状态信息。

SWRS061D

Page 5 of 42

CC1101

3.7.1 配置接口

MCU 使用 4 个 IO 口作为 SPI 配置接口。(SI、SO、SCLK 和 CSn)SPI 的描述见 28 页 的 Section 10。

3.7.2 基本控制和状态脚

CC1101 有 2 个专用配置脚(GDO0 和 GDO2)和一个共用脚(GDO1)可以向控制软件 输出有用的内部状态信息。这些脚可以用来向 MCU 产生中断。

GDO1 和 SPI 的 SO 引脚共用。GDO1/SO 的默认设置时 3 态输出。通过选择任何编程

选项,GDO1/S 将变为普通引脚。当 CSn 拉低,该引脚将始终作为普通的 SO 功能引脚。

在同步和异步串行模式,在发送模式下,GDO0 引脚将作为串行 TX 数据输入引脚。 GDO0也可以用作片上模拟温度传感器。通过外部ADC测量GDO0脚的电压,可以计算 出温度。温度传感器的详细说明见18页的Section 4.7。通过默认的PTEST寄存器设置 (0x7F),如果频率合成器被允许温度传感器的的输出时可用的。(例如:MANCAL, FSTXON,RX和 TX状态)在IDLE状态向PTEST寄存器写入0xBF允许模拟温度传感器是必 要的。离开IDLE状态之前,必须恢复PTEST寄存器为默认值(0x7F)。

3.7.3 可选的无线控制特性

CC1101 有一个可选的控制方式,通过 SPI 接口的 SI,SCLK 和 CSn 的重新使用。这 个特性允许普通的三引脚控制无线的主要状态:SLEEP,IDLE,RX 和 TX。这些附加功能 通过 MCSM0.PIN_CTRL_EN 配置为来使能。

状态变化遵从以下命令:

??如果 CSn 被拉高,SI 和 SCLK 依照表 21 设置好想要的状态。

??如果 CSn 被拉低,SI 和 SCLK 的状态被锁定,按照引脚的配置在内部产生一个

command strobe。

只允许在功能实现之后改变状态。例如,如果 SI 和 SCLK 设置为 RX 状态,并且已经

由 CSn 触发,RX 将不能再重新启动。当 CSn 拉低吼,SI 和 SCLK 将作为普通的 SPI 功能。

除了 SPWD 外,所有引脚控制命令将立即执行,SPWD 延时到 CSn 拉高后执行。

SWRS061D

Page 6 of 42

CC1101

3.8 数据速率编程

发送或者接收的数据速率通过MDMCFG3.DRATE_M 和MDMCFG4.DRATE_E配置寄存器 来编程。数据速率由下面的公式来计算。根据公式,数据速率的编程依赖于晶振频率。

下面的方面可以计算出适合的数据速率:

如果DRATE_M接近整数并且变为256,DRATE_E加1并且DRATE_M=0. 数据速率可以设置为从1.2K~500K,按照表22的最小步值。

3.9 接收信道滤波带宽

为了区 分不同信道 带宽, 接收信道 滤波器是可设 置的。 MDMCFG4.CHANBW_E DMCFG4.CHANBW_M 配置寄存器控制接收信道滤波器带宽,通过晶振频率来衡量。

下面的公式给出寄存器配置和信道滤波带宽之间的关系:

表 23 列出了 CC1101 支持的信道滤波带宽。

Page 7 of 42

SWRS061D

CC1101

为了达到更好的性能,信道滤波带宽必须设置以至于信号带宽至多占 80%的信道滤波带

宽。对于晶振精度的信道中心公差应该从信号带宽中减去。下面举例说明:

信道滤波带宽设置为 500kHz,信号带宽保持在 500kHz 的 80%之内,400kHz。发送 和接收设备都在中心频率 915MHz 和±20ppm 频率误差,总共的频率误差是 915MHz 的± 40ppm,即±37kHz。如果整个发送的信号带宽达到接收的

400kHz 之内,发送信号带宽

的最大值为 400kHz-2*37kHz,即 326kHz。

通过修正发送和接收的频率偏移,滤波带宽 可以减小,并且可以改善灵敏度。详见 DN005[20]和 Section14.1 。

3.10

解调器、符号同步器和数据判定

CC1101 包含一个高级的和高可配置的解调器。信道滤波和频率偏移补偿都可以数字化。

3.10.1 频率偏移补偿

CC1101 有非常好的频率分辨率。(表 12)这个特性可以用来补偿频率偏移和温漂。 当时用 2-FSK、GFSK 或 MSK 调制时,解调器将在发送和接收频率的一定界限内,通 过估计接收数据的中心,补偿频率偏移。频率偏移补偿配置由 FOCCFG 寄存器控制。通过 补偿发送和接收之间最大的频率偏移,可以改善灵敏度,见 DN005。

运算法则的跟踪范围是通过 FOCCFG.FOC_LIMIT 配置寄存器选择一部分信道带宽。

如果FOCCFG.FOC_BS_CS_GATE位设置,频率补偿将被冻结,直到carrier sense生效。

这对于无线常时间处于RX状态而没有通信是非常有用的,since the algorithm may drift to the boundaries when trying to track noise。

追踪循环有两个增益要素,影响设定时间和运算的噪声灵敏度。同步字节被检测到之前 由FOCCFG.FOC_PRE_K设定增益,同步字节检测到之后由FOCCFG.FOC_POST_K选择增 益。

注意:ASK和OOK调制不支持频率偏移补偿。

在FREQEST状态寄存器中的预置频率偏移值是可用的。可以用作永久的频率偏移补偿。 通过把FREQEST中的值写入FSCTRL0.FREQOFF,平率合成器将依照预置频率偏移自动被 调整。

SWRS061D

Page 8 of 42

CC1101

3.10.2 位同步

3.10.3 字节同步

字节同步通过连续的同步字查询实现。同步字是一个 16 位配置区(可重复得到 32 位), 在发送模式下通过调制器自动插入到包的起始。在同步字中 MSB 首先发送。解调器使用这 个区域寻找比特流中的字节边界。同步字也有系统标识符的功能,因此如果 RX 中的同步字 检测在寄存器 MDMCFG2 中被使能(Section17.1),只有正确的预先确定的同步字的包 才接收。同步字检测可以关联用户配置的 16 或者 32 位同步字。关联端可以设置为 15/16、 16/16 或 30/32 位匹配。同步字能更好的使用前导质量指示机制的描述和/或载波监听条件。 同步字通过 SYNC1 和 SYNC0 寄存器配置。

为了确保同步字检测的错误更少,一个前导质量指示(PQI)机制被用来仙子同步字。 为确保同步字被接收,必须超过前导质量的门限值。

3.11 数据包处理的硬件支持

CC1101 有内置的硬件支持作为数据包导向的无线协议。

在发送模式,数据包的处理者可以配置增加下面的元素到 TX FIFO 中的数据包存储: ??一个可编程数量的前导字节。

??两字节同步字。可复制为 4 字节同步字。只插入前导字节或者同步字节是不可能的。

??一个覆盖数据区域的 CRC 校验计算。

推荐设置 4 字节前导和 4 字节同步字,除了 500k 波特率时推荐使用 8 字节前导。另外, 在数据区域和附加的 2 字节 CRC 校验,以下可以被执行:

??使用 PN9 序列 Whitening 数据。

??通过使用交叉和编码数据(卷积编码)前向纠错。

在接收模式,数据包处理支持将是解构数据包,(如使能)以下可以被执行: ??前导检测 ??同步字检测

??CRC 计算和 CRC 检查 ??一个字节地址检测

??包长度检查(根据设置的最大长度检查长度字节) ??反 Whitening ??反交叉和解码

另外,RSSI(接收信号强度指示)、LQI(链路质量指示)和 CRC 状态的两个状态字 节可以附加在 RX FIFO。

SWRS061D

Page 9 of 42

CC1101

注意:控制数据包处理特性的寄存器区只能再 CC1101 处于 IDLE 状态时被修改。

3.11.1 Data Whitening

将 PKTCTRL0.WHITE_DATA 置 1,除了前导和同步字外,所有的数据在发送前将 XOR 一个 9 位的伪随机序列(PN9)。在接收结束后,数据将使用相同的伪随机序列 XOR。PN9

序列初始化全部为 1。

3.11.2 数据包格式

数据包的格式可以配置为由以下部分组成: ??前导 ??同步字

??可选的长度字节 ??可选的地址字节 ??净荷

??可选的 2 字节 CRC

CC1101

3.13.4 载波监听(CS)

CS用来作为同步字限定和净信道评估。CS可以基于以下两种可分别调整的条件来声明: ??当RSSI在编程的绝对门限之上CS assert,当RSSI在同一个门限之下CS

de-assert。

??当RSSI以编程数量的dB从一个RSSI到下一个增加的时候CS assert,当RSSI以

同一个数量减少的时候CD de-assert。这个设定不依靠绝对的信号等级,因此对 于经常编号的噪声环境中检测信号时非常有用的。 CS可以用作同步字限定,需要信号等级高于门限值去执行同步字搜索,通过设定

MDMCFG2来设置。CS信号可以通过设定IOCFGx.GDOx_CFG=14使用GDO的一个脚来检测, 在状态寄存器的PKTSTATUS.CS位。

CS的其他应用包括TX-if-CCA功能(Section17.5)和可选的快速RX终止(Section19.7)。

CS还可以用来避免与其他ISM频段的RF信号源冲突。

3.14.4.1 CS 绝对门限

绝对门限值关系到RSSI的值,依赖于以下寄存器: ? AGCCTRL2.MAX_LNA_GAIN ? AGCCTRL2.MAX_DVGA_GAIN

? AGCCTRL1.CARRIER_SENSE_ABS_THR ? AGCCTRL2.MAGN_TARGET

通过设定AGCCTRL2.MAX_LNA_GAIN 和AGCCTRL2.MAX_DVGA_GAIN,绝度门限值可 以使用CARRIER_SENSE_ABS_THR 以1dB的步进调整±7dB。

MAGN_TARGET的设定折中于blocker tolerance/selectivity和灵敏度之间。该值设定信道到解 调器中的信号等级。增加该值减少blockers的空间,因此关闭选择。强烈推荐使用SmartRF Studio产生正确的MAGN_TARGET配置。表29和表30显示了CS门限在2.4kBuad到 250kBuad速率时的典型RSSI读出值。默认CARRIER_SENSE_ABS_THR=0 (0 dB) 和

SWRS061D

Page 18 of 42

CC1101

MAGN_TARGET=3 (33 dB)。在其他波特率下,用户必须生成相似的表格来查询CS绝对

门限值。

如果门限值设置高了,只有强的信号才能通过,门限值向上调整必须首先减小

MAX_LNA_GAIN值,接着是MAX_DVGA_GAIN值。这样可以降低接收后的功耗,避免太高的增益

设定。

3.14.4.2 CS 相对门限

相对门限检测标准信号水平中的突变。这个设定不依赖于绝对信号水平,因此适用于检 测定时变化的噪声环境中的信号。寄存器AGCCTRL1.CARRIER_SENSE_REL_THR用来使能 /禁止相对CS,并用来选择门限的6dB,10dB或者14dB的RSSI变化。

17.5 净信道评估(CCA)

CCA用来显示当前信道是空闲还是繁忙。通过设定IOCFGx.GDOx_CFG=0x09,当前的 CCA状态在任何一个GDO引脚都可以查看。

MCSM1.CCA_MODE用来选择当确定CCA时使用的模式。

当CC1101在RX状态时给出STX 或 SFSTXON命令选通,仅能在净信道条件完成才能进 入TX或FSTXON状态。此外,芯片将仍处于RX状态。如果信道接下来变为可用的,在一个新 的命令选通通过SPI接口发送之前,无线不会进入TX或FSTXON状态。这个特性叫做 TX-if-CCA。可以编程设置4种CCA条件:

??始终(禁止CCA,总是进入TX) ??如果RSSI低于门限值 ??除非正常接收一个数据包

??以上两个(RSSI低于门限值和没有正常接收一个数据包)

17.4 链路质量指示(LQI)

SWRS061D

信号链路质量指示是一个公制的接收信号的当前质量。如果使能

Page 19 of 42

CC1101

PKTCTRL1.APPEND_STATUS,这个值自动添加到有线载荷后面的最后一个字节里。这个值也 可以从LQI状态寄存器中读取。LQI gives an estimate of how easily a received signal can be

demodulated by accumulating the magnitude of the error between ideal constellations and the

received signal over the 64 symbols immediately following the sync word。LQI也可以用来作为

链路质量的相对测量(高的值好于低的值的链路),该值依赖于调制模式。

18 使用交叉前向纠错

18.1 前向纠错(FEC)

CC1101内部支持前向纠错。使能这个选项,设置MDMCFG1.FEC_EN=1。FEC仅支持固 定数据包长度模式,即当PKTCTRL0.LENGTH_CONFIG=0。FEC被用在数据区金额CRC字来

减少总的位误差率,当工作在灵敏度极限附近时。冗余被以这样的方法加入到发送的数据, 在接收中可以从存在位错误的数据中回复原始数据。

FEC的使用可以在很低的信噪比(SNR)下正确接收,因此在接收带宽不变的情况下可 以扩大通信范围。给定的SNR,使用FEC减少位错误率(BER)。包错误率(PER)与BER 的关系:

较低的BER可以允许较长的数据包,或者给定长度的高的数据包百分比,更能传送成功。 最后,在实际的ISM无线环境中,暂时的和随时间变化的现象将会产生偶然的错误,在其他 号的接收条件下。FEC能够掩盖这种错误,并且与编码数据的交叉相组合,在不好的接收条 件下可以可以保持长周期的正确接收(突发错误)。

CC1101的FEC设计采用回旋编码,基于k个输入位产生n位和m个最近的输入位形成的编 码流,在每个编码状态之间可以经受一定数量的位错误(m位窗口)。

回旋编码器强制长度为m=4的1/2编码速率。编码器编码一个输入位产生2个输出位;因 此有效数据速率减半。这就意味着当使用FEC想要传送相同的有效数据速率,使用两倍的无 线数据速率时必要的。这将需要更高的接收带宽,因此降低了灵敏度。换句话说,使用FEC 改善接收,更高的接收带宽将成为降低灵敏度的阻碍因数。

18.2 交叉

通过无线信道接收的数据经常产生冲突错误和随时间变化的信号强度。为了增加应对多 位的错误,当FEC使能时使用交叉。反交叉之后,在接收数据流中的连续范围内的错误将会 变成单一的错误伸展开。

CC1101使用矩阵交叉,见图20。片上交叉和反交叉缓存是4*4的。在发送器中,回旋 编码器中的1/2速率的数据位被写到矩阵的行,但是被传送的位序列是从矩阵的列读出的。 相反的,在接收器中,接收的符号被写入到矩阵的行,传送到回旋解码器的数据时从矩阵的 列中读取的。

当FEC合交叉使用时,至少有一个附加的字节作为格子终止。加起来,在空气中发送的 数据数量必须是交叉缓冲器的倍数(2字节)。数据包控制部件在数据包的结尾自动插入1 或2个附加字节,以至于被交叉的数据数量是偶数。注意这些附加字节对于用户是看不到的,

SWRS061D

Page 20 of 42

CC1101

当FEC和交叉使用时,最小的数据有效载荷是2字节。

Page 21 of 42

在接收数据包进入RX FIFO之前别移除。

SWRS061D

CC1101

19 无线控制

CC1101 有一个内部状态机用来切换不同的工作状态(模式)。状态的转换时任意的,通 过使用命令选通或者内部事件像 TC FIFO 下溢等。

简单状态图,包含典型用法和电流消耗,见 27 页图 10。完整的无线控制状态图见图 21。 所涉及到的状态数量可以从 MARCSTATE 状态寄存器读到,这个寄存器主要是用作测试的目的。

19.1 上电启动序列

当电源给电,系统必须复位。通过下面描述的 2 个序列中的一个来完成,即自动上电复 位(POR)或者手动复位。自动上电复位或手动复位之后,推荐转换 GDO0 引脚上输出的 信号。默认设置是以 CLK_XOSC/192 的频率输出一个时钟信号。然而,为了在 TX 和 RX 中优化执行,必须选择 58 页表 35 中的配置来配置 GDO 脚。

SWRS061D

Page 22 of 42

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

本文来源:https://www.bwwdw.com/article/kw36.html

Top