低成本、低功耗 1GHz以下无线收发器(增强型CC1100) 应用
l 基于315/433/868/915 MHz ISM/SRD的极低功耗的无线应用。 l 无线报警和安全系统 l 工业监视和控制
产品描述
CC1101是低成本的1GHz以下的无线收发器,为极低功耗的无线应用而设计。电路主要设计为ISM(工业、科学和医疗)和SRD(短距离设备),频段在315、433、868和915,但是可以很容易的编程,使之工作在其他频率,在300-348MHz,387-464 MHz 和 779-928 MHz频段。
CC1101是CC1100 RF收发器改良以及代码一致的版本。CC1101的主要改进如下: l 改良的伪应答
l 更好的关闭相位噪声,因而改善相邻信道功耗(ACP)的性能 l 更高的输入饱和级别 l 改善输出功率斜面 l 扩大工作频段:
CC1100: 400-464 MHz and 800-928MHz CC1101: 387-464 MHz and 779-928MHz
SWRS061D
Page 1 of 42
CC1101
10 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
10.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 6:4
名称 CHIP_RDYn STATE[2:0]
值 000 001 010 011 100 101 110 111
3:0 FIFO_BYTES_AVAILA
BLE[3:0]
表20:状态字节概要
描述
保持高电平,直到电源和晶振稳定。当时用SPI接口时必须
变为低电平。
显示当前主状态机器模式 状态 IDLE RX TX FSTXON CALIBRATE SETTLING RXFIFO_OVERFLOW TXFIFO_UNDERFLOW
描述 空闲状态 接收模式 发送模式 快速TX准备 频率合成器校准运行中
PLL设置中
RX FIFO溢出。读出有用的数据,时用SFRX清洗FIFO TX FIFO下溢,使用SFTX命令
10.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。因此,突发访问不可用于状态寄存器的访问,一次只能访问一个状态寄存器。状态寄存器为只读。
10.3 读SPI
10.4命令选通(command strobes)
命令选通可以看做是CC1101的一个单字节指令。通过寻址一个命令选通寄存器,将启动内部序列。这些命令用来禁止晶振,使能接收,使能无线唤醒等。13个命令选通的清单见63页的表36。 Note:一个SIDLE命令将清除所有的未定命令,直到达到IDLE状态。这意味着比如当无线处于接收状态时执行SIDLE命令,当无线达到IDLE状态之前执行任何其他的命令选通都是无效的。 命令选通寄存器通过发送单一的头字节来访问(不传送数据字节)。也就是说,只有一个R/W位,一个突发访问位(置0)和6位地址位(在0x30~0x3D范围内)被传送。R/W位可以是1或者0,这将决定状态字节中的FIFO_BYTES_AVAILABLE区域如何确认。 当写命令选通时,状态字节将在SO引脚上被发送。
命令选通可以在CSn不被拉高的情况下,跟随在任何其他SPI访问之后。然而,如果一个SRES命令被执行,下一个头字节被执行之前必须等到SO引脚被拉低,见图13。命令选通将立即被执行,除了SPWD和SXOFF命令在CSn拉高之后执行。
10.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都将被刷新。
10.6 PATABLE访问
0x3E地址用来访问PATABLE,用来选择PA功率控制设置。SPI在接收到该地址后,传送8字节数据。通过编程PATABLE,可以完成对PA功率的增加和减少的控制,以及ASK调制的修正以减小带宽。参照samrtRF studio推荐的修正和PA序列。参照55页的Section 24对PA功率输出编程的详细说明。 PATABLE是一个8字节表,定义PA功率控制使用的8个字节中的任意值。(通过FREND0.PA_POWER中的3位值选择)表格可以从最低设置(0)到最高的(7)读写,一次一个字节。一个索引指针用来控制访问表格。指针在每次读写表格的一个字节时自动增加,并且在CSn拉高时自动设置为最小值。当达到最高值时自动复位。
依靠burst位,访问PATABLE既可以是单字节访问也可以是突发访问。当时用突发访问时,索引指针自动增加,当指针达到7时,自动复位为0。R/W位控制访问时读操作还是写操作。 注意,当进入SLEEP状态时PATABLE的内容将全部消失,除了第一个字节(index0)。
11.MCU接口和引脚配置
在典型系统中,CC1101必须连接MCU。MCU必须具备:
Ø 编程CC1101到不同的模式。 Ø 读写数据缓冲器。
Ø 通过4线SPI总线(SI、SO、SCLK和CSn)读取状态信息。
SWRS061D Page 5 of 42
CC1101
11.1 配置接口
MCU使用4个IO口作为SPI配置接口。(SI、SO、SCLK和CSn)SPI的描述见28页的Section 10。
11.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)。
11.3 可选的无线控制特性
CC1101有一个可选的控制方式,通过SPI接口的SI,SCLK和 CSn的重新使用。这个特性允许普通的三引脚控制无线的主要状态:SLEEP,IDLE,RX和TX。这些附加功能通过MCSM0.PIN_CTRL_EN配置为来使能。 状态变化遵从以下命令:
n 如果CSn被拉高,SI和SCLK依照表21设置好想要的状态。
n 如果CSn被拉低,SI和SCLK的状态被锁定,按照引脚的配置在内部产生一个
command strobe。
只允许在功能实现之后改变状态。例如,如果SI和SCLK设置为RX状态,并且已经由CSn 触发,RX将不能再重新启动。当CSn拉低吼,SI和SCLK将作为普通的SPI功能。 除了SPWD外,所有引脚控制命令将立即执行,SPWD延时到CSn拉高后执行。
Page 6 of 42
SWRS061D
CC1101
12 数据速率编程
发送或者接收的数据速率通过MDMCFG3.DRATE_M 和MDMCFG4.DRATE_E配置寄存器来编程。数据速率由下面的公式来计算。根据公式,数据速率的编程依赖于晶振频率。
下面的方面可以计算出适合的数据速率:
如果DRATE_M接近整数并且变为256,DRATE_E加1并且DRATE_M=0. 数据速率可以设置为从1.2K~500K,按照表22的最小步值。
13 接收信道滤波带宽
为了区分不同信道带宽,接收信道滤波器是可设置的。MDMCFG4.CHANBW_E和DMCFG4.CHANBW_M配置寄存器控制接收信道滤波器带宽,通过晶振频率来衡量。 下面的公式给出寄存器配置和信道滤波带宽之间的关系:
表23列出了CC1101支持的信道滤波带宽。
SWRS061D Page 7 of 42
CC1101
为了达到更好的性能,信道滤波带宽必须设置以至于信号带宽至多占80%的信道滤波带宽。对于晶振精度的信道中心公差应该从信号带宽中减去。下面举例说明:
信道滤波带宽设置为500kHz,信号带宽保持在500kHz的80%之内,400kHz。发送和接收设备都在中心频率915MHz和±20ppm频率误差,总共的频率误差是915MHz的±40ppm,即±37kHz。如果整个发送的信号带宽达到接收的400kHz之内,发送信号带宽的最大值为400kHz-2*37kHz,即326kHz。
通过修正发送和接收的频率偏移,滤波带宽可以减小,并且可以改善灵敏度。详见DN005[20]和Section14.1 。
14 解调器、符号同步器和数据判定
CC1101包含一个高级的和高可配置的解调器。信道滤波和频率偏移补偿都可以数字化。
14.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,平率合成器将依照预置频率偏移自动被调整。更详细的关于永久频率补偿计算参照DN015[13]。
SWRS061D Page 8 of 42
CC1101
14.2 位同步 14.3 字节同步
字节同步通过连续的同步字查询实现。同步字是一个16位配置区(可重复得到32位),在发送模式下通过调制器自动插入到包的起始。在同步字中MSB首先发送。解调器使用这个区域寻找比特流中的字节边界。同步字也有系统标识符的功能,因此如果RX中的同步字检测在寄存器MDMCFG2中被使能(Section17.1),只有正确的预先确定的同步字的包才接收。同步字检测可以关联用户配置的16或者32位同步字。关联端可以设置为15/16、16/16或30/32位匹配。同步字能更好的使用前导质量指示机制的描述和/或载波监听条件。同步字通过SYNC1和SYNC0寄存器配置。 为了确保同步字检测的错误更少,一个前导质量指示(PQI)机制被用来仙子同步字。为确保同步字被接收,必须超过前导质量的门限值。详见42页Section。
15数据包处理的硬件支持
CC1101有内置的硬件支持作为数据包导向的无线协议。
在发送模式,数据包的处理者可以配置增加下面的元素到TX FIFO中的数据包存储: n 一个可编程数量的前导字节。 n 两字节同步字。可复制为4字节同步字。只插入前导字节或者同步字节是不可能的。 n 一个覆盖数据区域的CRC校验计算。
推荐设置4字节前导和4字节同步字,除了500k波特率时推荐使用8字节前导。另外,在数据区域和附加的2字节CRC校验,以下可以被执行:
n 使用PN9序列Whitening数据。
n 通过使用交叉和编码数据(卷积编码)前向纠错。 在接收模式,数据包处理支持将是解构数据包,(如使能)以下可以被执行: n 前导检测 n 同步字检测
n CRC计算和CRC检查 n 一个字节地址检测
n 包长度检查(根据设置的最大长度检查长度字节) n 反Whitening n 反交叉和解码
另外,RSSI(接收信号强度指示)、LQI(链路质量指示)和CRC状态的两个状态字节可以附加在RX FIFO。
SWRS061D Page 9 of 42
CC1101
注意:控制数据包处理特性的寄存器区只能再CC1101处于IDLE状态时被修改。
15.1 Data Whitening
将PKTCTRL0.WHITE_DATA置1,除了前导和同步字外,所有的数据在发送前将XOR一个9位的伪随机序列(PN9)。在接收结束后,数据将使用相同的伪随机序列XOR。PN9序列初始化全部为1。
15.2 数据包格式
数据包的格式可以配置为由以下部分组成: n 前导 n 同步字
n 可选的长度字节 n 可选的地址字节 n 净荷
n 可选的2字节CRC
前导的格式是一个交叉的1和0的序列(10101010……)。前导的最小长度可以通过MDMCFG1.NUM_PREAMBLE的值来设置。当使能发送,调制器将开始发送前导。当发送完编程数量的前导子节后,调制器开始发送同步字和TX FIFO中的可用数据。如果TX FIFO是空的,调制器将继续发送前导字节,直到第一个字节写入到TX FIFO。调制器将接着发送同步字和数据字节。
同步字是在SYNC1和SYNC0寄存器中设置的2字节数据。同步字节提供了引入数据包的字节同步。一个字节的同步字可以复制,通过设定SYNC1的值到前导格式。也可以通过设定MDMCFG2.SYNC_MODE的值为3或7将同步字复制为32位。同步字将被复制2次。
CC1101支持定长数据包协议和变长数据包协议。可变的或固定数据包长度模式可用于最长255字节数据包长度。再长的数据包,就必须使用无限数据包长度模式。
SWRS061D
Page 10 of 42
CC1101
固定数据包长度模式通过设定PKTCTRL0.LENGTH_CONFIG=0来选择。期望的数据包长度通过PKTLEN寄存器来设置。
在可变数据包长度模式,PKTCTRL0.LENGTH_CONFIG=1,数据包长度由同步字后面的第一个字节配置。数据包长度定义为有效载荷,不包括长度字节和可选的CRC。PKTLEN用来配置允许接收的最大数据包长度。任何接收的数据包长度大于PKTLEN的值都将被丢弃。
PKTCTRL0.LENGTH_CONFIG=2,数据包长度将设置为无限长,发送和接收将持续到手动关闭。在下一部分描述中,将使用不同长度的配置来支持数据包格式。必须确保在发送前半个或任何字节的时候TX模式不被关闭。参考CC1101的勘误表。
15.2.1 任意长度区域配置
数据包长度寄存器PKTLEN,在接收和发送时可以重新编程。结合固定数据包长度模式(PKTCTRL0.LENGTH_CONFIG=0),这使与变长数据包不同的长度配置成为可能。(在可变数据包长度模式下长度字节是同步字节后第一个字节)在接收开始,数据包长度设置为一个大的值。MCU读取足够多的字节来解析数据包中的长度区域。然后依照这个值对PKTLEN进行设置。当数据包处理器中的字节指针等于PKTLEN寄存器的值时数据包结束。因此,MCU必须在内部指针达到数据包长度之前确认正确的长度。
15.2.2 数据包长度大于255
数据包自动控制寄存器PKTCTRL0,可以在TX和RX期间重新编程。这就使发送和接收数据包长度超过256字节并且仍然使用数据包处理器硬件支持成为可能。在数据包开始时,必须激活无限数据包长度模式(PKTCTRL0.LENGTH_CONFIG=2)。在发送端,PKTLEN寄存器设置为模(长度,256)。在接收端,MCU读出足够长度的字节来解析出数据包长度并设置PKTLEN寄存器为模(长度,256)。当数据包中还有少于256字节数据,MCU禁止数据包无限长度模式并且激活固定长度模式。当内部字节指针达到PKTLEN时,发送和接收结束。(无线进入的状态由TXOFF_MODE 或 RXOFF_MODE决定)自动CRC添加/校验也可以使用(通过设置PKTCTRL0.CRC_EN=1)。
例如当药发送一个600字节的数据包时,MCU必须按照以下执行: l 设置PKTCTRL0.LENGTH_CONFIG=2。
l 重新设置PKTLEN寄存器模(600,256)=88.
l 至少发送345字节(600-255),例如通过填充64字节 TX FIFO 6次(发送
384字节)。
l 设置PKTCTRL0.LENGTH_CONFIG=0。
l 当数据包指针达到88发送完成。一共600字节被发送。
SWRS061D Page 11 of 42
CC1101
15.3 接收模式下的数据过滤
CC1101支持三种不同类型的数据包过滤:地址过滤,最大长度过滤和CRC过滤。
15.3.1 地址过滤
设置PKTCTRL1.ADR_CHK为任意大于0的值使能数据包地址过滤。数据包处理器启动后将比较数据包中的目标地址字节和在ADDR寄存器中设置的节点地址或者当
PKTCTRL1.ADR_CHK=10时的广播地址0x00以及PKTCTRL1.ADR_CHK=11时的广播地址0x00和0xFF。如果接收的地址匹配到一个正确地址,数据包被接收并写入到RX FIFO。如果地址匹配失败,数据包将被丢弃,重新启动接收模式(不管MCSM1.RXOFF_MODE的设置)。
如果当时用无限数据包长度模式和使能地址过滤时接收地址匹配到正确的地址,0xFF将被写入到RX FIFO,其次是地址字节和有效载荷。
15.3.2 最大长度过滤
在可变数据包模式,PKTCTRL0.LENGTH_CONFIG=1,PKTLEN.PACKET_LENGTH寄存器用来设置最大允许的数据包长度。如果接收的长度字节大于这个值,数据包将被丢弃,重新启动接收模式(不管MCSM1.RXOFF_MODE的设置)。
15.3.3 CRC过滤
当CRC校验失败时过滤数据包,通过设置PKTCTRL1.CRC_AUTOFLUSH=1使能。CRC自动清除功能将在CRC校验失败时清空所有RX FIFO。在自动清空RX FIFO后,下一个状态依赖于MCSM1.RXOFF_MODE的设置。
当使用自动清除功能,在可变数据包长度模式下最大数据包长度为63字节,在定长数据包长度模式下是64字节。注意当PKTCTRL1.APPEND_STATUS使能,最大允许数据包长度将减少2个字节,以确保在数据包的结尾附加的2字节的状态字节在RX FIFO中占用的空间。当CRC校验错误以后全部RX FIFO被清空,在接收正确的数据包前之前接收到的数据包必须从FIFO中读出。直到CRC校验正确MCU才从正确的数据包中读取数据。
SWRS061D Page 12 of 42
CC1101
15.4 发送模式的数据包处理
需要发送的有效载荷必须写入到TX FIFO。如果使能可变数据包长度第一个字节必须写长度字节。长度字节的值等于数据包的有效载荷(包含可选的地址字节)。如果在接收端使能地址识别,写入到TX FIFO中的第二个字节必须是地址字节。
如果使能固定数据包长度,写入到TX FIFO中的第一个字节必须是地址字节(接收端使用地址识别)。
调制器将首先发送预置数量的前导字节。如果TX FIFO中有可发送的数据,调制器将发送2字节(可选4字节)同步字,紧接着是TX FIFO中的有效载荷。如果使能CRC,校验时计算TX FIFO中的所有数据,然后跟随有效数据发送2个附加字节。若果在完整的数据包发送完成之前TX FIFO变为空的,无线将进入TXFIFO_UNDERFLOW状态。退出该状态的唯一方法是运行SFTX命令。
发送下溢后再向TX FIFO写入数据不能重启TX模式。
如果whitening被使能,同步字后面的所有字节将被whitened。这必须在FEC/Interleaver之前完成。Whitening通过设置PKTCTRL0.WHITE_DATA=1使能。
如果FEC/Interleaving被使能,同步字后面的所有数据在调制之前将被interleaver 和 FEC编码加密。FEC通过设置MDMCFG1.FEC_EN=1使能。
15.5 接收模式的数据包处理
在接收模式,解调器和数据包处理器将寻找一个有效的前导和同步字。当找到后,解调器将获得位和字节同步,并将接收第一个有效字节。
如果使能FEC/Interleaver,FEC解码器将开始解码第一个有效字节。Interleaver将在数据被其他任何处理之前解密。
如果使能whitening,在此基础上数据将被de-whitening。
当使能可变数据包长度模式时,第一个字节是长度字节。数据包处理器储存该值为数据包长度并且通过该长度字节指示接收的字节数量。如果使用固定数据包长度模式,数据包处理器将接收预置数量的字节。
接下来,数据包处理器可选的检测地址并且只有地址匹配才继续接收。如果使能自动CRC校验,数据包处理器计算CRC并与CRC校验结果相匹配。
在有效载荷的结尾,数据包处理器将可选的写入两个复交数据包状态字节,包括CRC状态、LQI和RSSI。
15.6 固件中的数据包处理
如果在固件中执行一个数据包导向的无线协议,MCU需要知道一个数据包什么时候收到/发送。加之,超过64字节长度的数据包,当接收时需要读取RX FIFO和当发送时TX FIFO需要重新填充。这就意味着MCU必须知道有多少个字节可以从RX FIFO中读取或者可以向TX FIFO中写入。有两种方法可以获得必要的状态信息。
a) 中断驱动方法
当同步字接收/发送完成或者完整的数据包接收/发送通过设置
IOCFGx.GDOx_CFG=0x06,GDO脚可以用在RX和TX中产生一个中断。此外,
SWRS061D
Page 13 of 42
CC1101
IOCFGx.GDOx_CFG还有两个配置用来产生中断,源于有多少字节在RX FIFO或TX FIFO。IOCFGx.GDOx_CFG=0x00和IOCFGx.GDOx_CFG=0x01为RX FIFO,IOCFGx.GDOx_CFG=0x02和IOCFGx.GDOx_CFG=0x03为TX FIFO。更多信息查看表35。
b)SPI轮询
PKTSTATUS可以使用给定的速率查询以获得GDO0和GDO2当前值。RXBYTES 和 TXBYTES可以使用给定的速率查询以获得RX FIFO或者TX FIFO中的字节数。合二为一的,RX FIFO和TX FIFO中的字节数量可以从每次头字节、数据字节或命令选通在SPI总线上发送时MISO引脚返回的芯片状态字节读取。
推荐使用中断驱动方法因为高速率SPI轮询将减小RX的灵敏度。而且,在Section10.3和CC1101勘误表【4】中,当使用SPI轮询,单一读取PKTSTATUS、 RXBYTES和 TXBYTES有一个小的有限的错误的可能性。当读取芯片状态字节有同样的问题。 关于SW的例子【9】和【10】参考TI网站。
16 调制方式
CC1101支持振幅、频率和相位移动调制。预期的调制方式在MDMCFG2.MOD_FORMAT寄存器中设置。
另外,数据流可以通过调制进行曼彻斯特编码和解调器解码。该选项通过设置MDMCFG2.MANCHESTER_EN=1使能。
注意:曼彻斯特编码不支持同事使用FEC/Interleaver选项或者当使用MSK调制时。
16.1 频移键控(FSK)
CC1101可以使用高斯型2-FSK(GFSK)。2-FSK信号通过BT=1的高斯滤波器,产生一个GFSK调制信号。这种频谱修整特性改善邻道功率和占用带宽。
在使用生硬的频移键控的真正的2-FSK系统,频谱是固有的宽阔。通过利用频移键控软化(softer),频谱可以显著的变窄。因此,使用GFSK在相同的带宽可以传输更高的数据速率。
当使用FSK/GFSK调制时,DEVIATN寄存器指定在接收中预期的引入信号频率背离并且在必须与TX背离相同。
频率背离通过DEVIATN寄存器中的DEVIATION_M 和 DEVIATION_E设置。该值时指数/尾数形式,由如下公式计算结果:
SWRS061D
Page 14 of 42
CC1101
16.2 最小转换键控(MSK)
当使用MSK,完整的传输(前导,同步字和有效载荷)将是MSK调制。
相移使用恒定的传输时间来完成。部分的信号周期可以通过改变相位来改善,通过DEVIATN.DEVIATION_M来设置。
这相当于改变信号的波形。使用MSK时DEVIATN寄存器的设定在RX中不受影响。 当使用MSK,曼彻斯特编码/解码必须通过设定MDMCFG2来禁止。
16.3 振幅调制
CC1101支持两种不同模式的振幅调制:OOK和ASK。 OOK调制简单的转换PA开或关来分别调制1和0。
通过CC1101的使能ASK可编程调制深度(1和0之间的差异),和脉冲振幅的修整。脉冲修整产生一个更宽的带宽强制输出频谱。
当使用OOK/ASK,来自SmartRF Stdio的AGC设置首选的FSK/MSK设置不是适宜的。DN022指导中有怎样从SmartRF Stdio的首选设置中查找适宜的OOK/ASK设置。当使用OOK/ASK,DEVIATN的设置不影响TX和RX。
17 接收信号限定和链路质量信息
CC1101有几种可以用来增加正确的同步字被检测的几率的限定: l 同步字限定
l PQT(前导质量门限)
l RSSI(接收信号强度指示) l CS(载波监听) l CCA(净信道评估) l LQI(链路质量指示)
17.1 同步字限定
如果在MDMCFG2寄存器中使能接收同步字检测,在检测到有效的同步字之前CC1101不填充RX FIFO并且执行数据包过滤功能。同步字限定模式通过MDMCFG2.SYNC_MODE设置,见表27的说明。表27中的载波监听的描述见Section17.4。
SWRS061D Page 15 of 42
CC1101
17.2 前导质量门限(PQT)
在同步字接收之前必须一个质量高于编程门限的前导。
PQT的另一个应用时作为可选的RX终止时间的一个限定。见Section。
前导质量评估器通过每一次接收的不同于前一位的位增加内部计数器,通过每次接收的与前一位相同的位来减小。门限值通过PKTCTRL1.PQT寄存器配置。该计数器的4·PQT门限用来检测同步字。通过设置为0值,禁止同步字的前导质量限定。
GDO中的一个引脚通过设定IOCFGx.GDOx_CFG=8可以用来检测“前导质量范围”信号。通过检测PKTSTATUS寄存器的PQT_REACHED位也是可以确定前导质量的范围。当接收的信号超过PQT该信号/位assert。
17.3 RSSI
RSSI的值时在选择的通道中信号功率级别的估计。这个值基于RX中当前增益的设置和信道中的标准信号等级。
在RX模式,RSSI可以连续的从RSSI状态寄存器读取知道解调器检测到一个同步字(当同步字检测使能)。此时RSSI读取的值将被冻结知道芯片下一次进入RX状态。
注意:从无线进入RX模式到在RSSI寄存器检测到一个正确的RSSI值需要一定的时间。查看DN505[15]获得RSSI响应时间估算的详细信息。
RSSI的值以dBm和1/2 dB给出。RSSI更新速率,fRSSI 依赖于接收滤波带宽和AGCCTRL0.FILTER_LENGTH。
SWRS061D
Page 16 of 42
CC1101
如果使能PKTCTRL1.APPEND_STATUS,数据包最后的RSSI值自动添加到有效载荷后面的第一个附加字节。
从RSSI状态寄存器读出的RSSI值时2个补足的数字。下面的程序可以将RSSI转换为完整的功率级别(RSSI_dBm)。
1) 读取RSSI状态寄存器
2) 将读到的数据从16进制数转换到二进制数(RSSI_dec)
3) 如果RSSI_dec≧128,RSSI_dBm =(RSSI_dec - 256)/2 – RSSI_offset 4) 如果RSSI_dec<128,RSSI_dBm =RSSI_dec /2 – RSSI_offset
表28给出了RSSI_offset的典型值。表18和19给出了不同数据速率下作为输入功率的功能的RSSI典型图。
SWRS061D Page 17 of 42
CC1101
17.4 载波监听(CS)
CS用来作为同步字限定和净信道评估。CS可以基于以下两种可分别调整的条件来声明: l 当RSSI在编程的绝对门限之上CS assert,当RSSI在同一个门限之下CS
de-assert。
l 当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信号源冲突。
17.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值。这样可以降低接收后的功耗,避免太高的增益设定。
17.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条件:
l 始终(禁止CCA,总是进入TX) l 如果RSSI低于门限值 l 除非正常接收一个数据包
l 以上两个(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
在接收数据包进入RX FIFO之前别移除。
当FEC和交叉使用时,最小的数据有效载荷是2字节。
SWRS061D Page 21 of 42
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):
l 设置SCLK=1,SI=0,避免引脚控制模式可能出现的问题。 l 选通CS低/高。
l 保持CS为低,然后拉高,至少40us才可以拉低 l 将CSn拉低等到SO拉低(CHIP_RDYn)。 l 在SI线上发布SRES选通。
l 当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设定来控制:
l 当从IDLE进入RX或TX(或FSTXON)时校准 l 当从RX或TX自动进入IDLE时校准 l 每四次从RX或TX自动进入IDLE时校准
如果无线从TX或RX使用SIDLE命令进入IDLE,不执行校准。校准占用一定数量的XOSC周期;校准的详细时序见表31。
当RX被激活,芯片将一直保持在接收模式,直到一个数据包被成功的接收或者定时器满RX中止(见Section19.7)。降低错误的同步字被检测的可能性可以通过使用PQT,CS,最大同步字长度和Section17描述的同步字限制。一个数据包被成功接收之后,无线控制器进入的模式由MCSM1.RXOFF_MODE来设定。可能的目的地是:
l IDLE
l FSTXON:同步合成器开并且准备在TX频率。使用STX激活TX l TX:开始发送前导
l 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将终止。
可编程的条件为:
l MCSM2.RX_TIME_QUAL=0:如果发现同步字,继续接收
l 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
CC1101
3. 重复步骤1和2直到n=#数据包中的剩余字节。 4. 从RX FIFO中读出数据包的剩余字节。
4位的FIFOTHR.FIFO_THR设定用来编程FIFO中的门限指针。 表32列出了16个 FIFO_THR的设置和RX TX FIFO的相应门限。该门限值被反相编码到RX FIFO和TX FIFO中。当达到门限值给出相等的上溢和下溢条件。
当FIFO中的字节数等于或高于门限时一个信号将被声明。这个信号可以在GDO引脚上查看。(58页表35)
图25显示了当在FIFO_THR=13门限信号触发时的RX FIFO和TX FIFO中的字节数。图26显示了各自FIFO被填充在门限之上的GDO引脚的信号,和在FIFO_THR=13的排除情况。
SWRS061D Page 28 of 42
CC1101
21 频率设置
CC1101的频率设置设计最小化设置需要信道导向系统。
使用信道号设置一个系统,预置信道空间通过MDMCFG0.CHANSPC_M和MDMCFG1.CHANSPC_E寄存器来配置。分别为底数和指数。基本或启动频率通过位于FREQ2,FREQ1和 FREQ0寄存器的24位频率字来配置。这个字将被设置为最低信道中心频率。
SWRS061D
Page 29 of 42
CC1101
使用26MHz晶振醉倒的信道间隔为405kHz。想要获得1MHz信道间隔,一个方法是使用333kHz信道间隔并在CHANNR.CHAN中每个三个信道选择。
首选的IF频率通过设置FSCTRL1.FREQ_IF寄存器。IF频率由下面给出:
注意:SmartRF® Studio根据信道间隔和信道滤波带宽自动计算最合适的FSCTRL1.FREQ_IF寄存器设定值。
当频率合成器运行的时候任何频率设置寄存器改变,合成器可能会给出一个不想要的响应。因此,必须当无线处于IDLE状态时更新频率设置。
22 VCO
VCO完全是片上的。
22.1 VCO和PLL自校准
VCO的特性随着温度和供电电压的变化而改变,和预置工作频率一样。为了保证可靠运行,CC1101包含了频率合成器自校准电路。校准必须是有规律的,必须执行在上电之后和使用一个新的频率(或信道)之前。完成PLL校准所需要的XOSC周期的数量见52页表31。
校准可以手动或自动开始。合成器在每一次启动或者关闭时可以自动被校准。这由寄存器来配置。在手动模式,当在IDLE模式使用SCAL命令时校准开始。
注意:在SLEEP模式校准值将被保持,因此从SLEEP模式唤醒之后仍然有效,直到供电电压或者温度发生改变。
为了检测PLL被锁定,用户可以配置寄存器IOCFGx.GDOx_CFG=0x0A,使用锁定检测器输出激活在GDOx引脚使MCU产生中断。在GDOx引脚上一个正的传送意味着PLL被锁定。第二种选择是读寄存器FSCAL1。如果寄存器中的内容不同于0x3F说明PLL被锁定。
更多的操作,源代码可以包含一个检测,如果第一次PLL没有锁定那么重新校准PLL直到锁定完成。
23 电压调整器
CC1101包含几个片上线性稳压器来产生低功耗模式所需要的电压。这些电压调整器用户是看不到的,可以作为不同模式的主要部分看待。用户必须保证不超过表1和表16的绝对最大值和所需要的引脚电压。
通过设置CSn为低,数字核的电压调整器打开,晶振启动。SPI接口的SO引脚必须在SCLK的第一个正边沿被拉低(启动时间见表19)。
如果芯片被编程进入power-down模式(执行SPWD命令),在CSn拉高后电源将关闭。
SWRS061D Page 30 of 42
CC1101
当CSn被拉低,电源和晶振将再一次打开。
数字核的电压调整器需要一个外部的退藕电容。 电压调整器的输出只能用来驱动CC1101。
24 输出功率编程
设备的RF输出功率等级有两个可编程的级别,见图27。专用寄存器PATABLE可以提出8个用户选择的输出功率设置。3位FREND0.PA_POWER值选择PATABLE进入使用。这两个级别的功能可灵活的用在PA的功率在传送启动的时候ramp up 和 ramp down,像ASK模式修整一样。PATABLE中的所有PA功率配置从index0一直到FREND0.PA_POWER值被使用。
数据包开始和结束时的功率斜率可以通过设定FREND0.PA_POWER=0来关闭,接下来编程预期的输出功率到PATABLE中的index 0。
如果使用OOK调制,逻辑0和逻辑1的功率等级必须分别编程到index0和index1。 表33包含了不同输出等级的PATABLE推荐值和频率带宽。DN013给出了不同频率带宽的完整表格。不推荐使用0x61到0x6F的PA设定。表34包含了默认PATABLE设置(0xC6)的输出功率和电流消耗。
PATABLE的详细说明见32页的Section10.6。如果想写入到PATABLE[0]之外的其他入口必须使用突发访问模式。
注意:当进入SLEEP状态时除了第一个字节(index0)PATABLE中的内容全部丢失。
25 修整和PA斜率
ASK调制,上传8个功率设置用来修整。该模式包含一个计数器,当传送1时增加二档传送0时减少。计数器在等于8次信号速率的速率下计数。计数器饱和在
SWRS061D
Page 31 of 42
CC1101
FREND0.PA_POWER和0。
计数值作为查看功率表的索引。因此,当ASK模式激活时为了使用整个功率表,FREND0.PA_POWER=7。ASK信号的修整依赖于PATABLE的配置。图28显示了一些ASK修整的例子。
26 基本用途/测试输出控制引脚
三个数字输出引脚GDO0、GDO1和GDO2为普通控制引脚,由IOCFG0.GDO0_CFG,IOCFG1.GDO1_CFG和IOCFG2.GDO2_CFG分别配置。表35显示了可以在GDO引脚上监视的不同信号。这些信号可以作为MCU的输入信号。
GDO1在SPI接口中作为SO引脚,因此在这个引脚上的输出配置只有在CSn为高时有效。GDO1的默认值是3态,这对于SPI接口与其他设备共用时非常有用的。
GDO0的默认值是输出135-141kHz时钟(XOSC频率192分频)。XOSC在上电复位以后打开,可以为MCU提高时钟,在系统内置包含一个晶振。当MCU上电并且运行,可以通过写IOCFG0.GDO0_CFG来改变时钟频率。
SWRS061D
Page 32 of 42
CC1101
通过将128(0x80)写入IOCFG0寄存器,片上模拟温度传感器可以被使能。GDO0引脚上的电压和温度成比例。温度传感器的详细说明见18页的Section4.7。
如果IOCFGx.GDOx_CFG的设置小于0x20并且IOCFGx_GDOx_INV为(01),在SLEEP模式GDO0和GDO2将由硬件置0(1),GDO1将有硬件置1(0)。这些信号将由硬件保持知道CHIP_RDYn变低。
如果IOCFGx.GDOx_CFG设置为0x20或更高,GDO引脚在SLEEP状态也工作在设置的状态。例如,如果IOCFG1.GDO1_CFG=0x2E,GDO1在所有状态都是高阻抗。
GDOx_CFG[5:0] 0(0x00) 1(0x01) 2(0x02) 3(0x03) 4(0x04) 5(0x05) 6(0x06) 7(0x07) 8(0x08) 9(0x09) 10(0x0A) 11(0x0B)
描述
与RX FIFO相关:当RX FIFO被填充到或超过RX FIFO门限置1。当RX FIFO排除到低于相同门限时置0。
与RX FIFO相关:当RX FIFO被填充到或超过RX FIFO门限或者数据包的结束符到达时置1。当RX FIFO为空时置0
与TX FIFO相关:当TX FIFO被填充到或超过TX FIFO门限置1。当TX FIFO排除到低于相同门限时置0。
与TX FIFO相关:当TX FIFO满置1。当TX FIFO排除到低于相同门限时置0。 当RX FIFO上溢置1。当FIFO被清洗置0 当TX FIFO下溢置1。当FIFO被清洗置0。
当同步字被发送/接收置1,数据包结束时置0。在RX,当可选的地址检测错误或者RX FIFO上溢将置0。在TX当TX FIFO下溢将置0
当数据包接收完成并且CRC OK置1。当第一个字节从RX FIFO被读取置0。 前导质量到达。当PQI大于配置的PQT时置1。
CCA。当RSSI级别低于门限值时为高。(依赖于当前CCA_MODE设定)
锁定检测输出。如果锁定检测器输出有一个正的传输或者频繁的逻辑高电平则PPL在锁定状态。为了检测PLL锁定,锁定检测器输出必须作为MCU的中断信号。 串行时钟。在同步串行模式用作同步数据。 在RX模式,当GDOx_INV=0数据建立在下降沿。
在TX模式,当GDOx_INV=0,CC1101的数据采样在串行时钟的上升沿。
12(0x0C) 13(0x0D) 14(0x0E) 15(0x0F) 16(0x10) 17(0x11) 18(0x12) 19(0x13) 20(0x14) 21(0x15) 22(0x16) 23(0x17) 24(0x18) 25(0x19) 26(0x1A) 27(0x1B)
串行同步数据输出。用在同步串行模式。 串行数据输出。用在同步串行模式。 CS。如果RSSI级别在门限之上为高电平。
CRC_OK。最后的CRC对照匹配。当进入/重启RX模式时清0。 保留—用于测试。 保留—用于测试。 保留—用于测试。 保留—用于测试。 保留—用于测试。 保留—用于测试。
RX_HARD_DATA[1]。可与RX_SYMBOL_TICK一起使用,用来选择串行RX输出。 RX_HARD_DATA[0]。可与RX_SYMBOL_TICK一起使用,用来选择串行RX输出。 保留—用于测试。 保留—用于测试。 保留—用于测试。
PA_PD。注意:PA_PD在SLEEP和TX模式有相同的信号等级。为了控制外部PA或RX/TX
SWRS061D Page 33 of 42
CC1101
切换在SLEEP状态下的应用推荐使用GDOx_CFGx=0x2F来代替。
28(0x1C) 29(0x1D) 30(0x1E) 31(0x1F) 32(0x20) 33(0x21) 34(0x22) 35(0x23) 36(0x24) 37(0x25) 38(0x26) 39(0x27) 40(0x28) 41(0x29) 42(0x2A) 43(0x2B) 44(0x2C) 45(0x2D) 46(0x2E) 47(0x2F) 48(0x30) 49(0x31) 50(0x32) 51(0x33) 52(0x34) 53(0x35) 54(0x36) 55(0x37) 56(0x38) 57(0x39) 58(0x3A) 59(0x3B) 60(0x3C) 61(0x3D) 62(0x3E) 63(0x3F)
LNA_PD。注意:LN_PD在SLEEP和RX模式有相同的信号等级。为了控制外部LNA或RX/TX切换在SLEEP状态下的应用推荐使用GDOx_CFGx=0x2F来代替。 RX_SYMBOL_TICK。可与RX_HARD_DATA一起使用,用来选择串行RX输出。 保留—用于测试。 保留—用于测试。 保留—用于测试。 保留—用于测试。 保留—用于测试。 保留—用于测试。 WOR_EVNT0 WOR_EVNT1 保留—用于测试。 CLK_32k 保留—用于测试。 CHIP_RDYn 保留—用于测试。 XOSC_STABLE 保留—用于测试。
GDO0_Z_EN_N。当这个输出为0,GDO0被配置为输入(作为串行TX数据)。 高阻抗(三态)。
硬件置0(通过配置GDOx_INV=1完成HW1)。可以用来控制外部LNA/PA或RX/TX切换。 CLK_XOSC/1 CLK_XOSC/1.5 CLK_XOSC/2 CLK_XOSC/3 CLK_XOSC/4 CLK_XOSC/6 CLK_XOSC/8 CLK_XOSC/12 CLK_XOSC/16 CLK_XOSC/24 CLK_XOSC/32 CLK_XOSC/48 CLK_XOSC/64 CLK_XOSC/96 CLK_XOSC/128 CLK_XOSC/192
注意:有3个GDO引脚,但是在任何时候只能有
一个CLK_XOSC/n被选择作为输出。如果CLK_XOSC/n
在一个GDO引脚上被监控,其他两个GDO引脚必须配置为小于0x30的值。GDO0默认值为CLK_XOSC/192。 为了优化RF的性能,当无线处于RX和TX模式时不能使用这个信号。
表35: GDOx信号选择(x=0,1,2)
SWRS061D Page 34 of 42
CC1101
27 异步和同步串行操作
CC1101中包含的一些特性和工作模式是和以前的Chipcon产品或其他存在的RF通信系统向后兼容的。在新系统中,推荐使用内在的数据包处理器特性,他们可以给出更多的充足的通信,值得卸下MCU,更简单的软件发展。
27.1 异步操作
CC1101包含的异步传输时为了向后兼容已经使用异步传输的系统。 当使能异步传输,CC1101中包含的几个支持MCU的机制将被禁止,像硬件数据包处理器,FIFO缓存等等。异步传输模式不允许使用data whitener, interleaver和FEC,也不能使用曼彻斯特编码。MSK不支持异步传输。
配置PKTCTRL0.PKT_FORMAT=3使能串行异步模式。在TX,GDO0用作数据输入(TX数据)。数据输出可以使用GDO0,GDO1和GDO2。通过设置IOCFG0.GDO0_CFG, IOCFG1.GDO1_CFG 和 IOCFG2.GDO2_CFG。
CC1101采样异步输入的级别8倍于配置的数据速率。异步数据流的时序需求在位周期的错误必须小于1/8的编程数据速率。
27.2 串行同步操作
配置PKTCTRL0.PKT_FORMAT=1使能串行同步模式。在串行同步模式,数据通过2线串行接口传输。CC1101提供一个用来在数据输入线建立新的数据或在数据输出线采样数据的时钟。数据输入(TX数据)在GDO0引脚。当TX激活时这个脚自动配置为输入。TX的执行时间为8位。数据输出引脚可以是任意一个GDO引脚。通过IOCFG0.GDO0_CFG, IOCFG1.GDO1_CFG 和 IOCFG2.GDO2_CFG配置。从开始接收到在接收数据输出引脚上有可用的数据的时间等于9个位。
前导和同步字插入/检测可以激活也可以不激活,依赖于同步模式的MDMCFG2.SYNC_MODE配置。
如果禁止前导和同步字,其他所有的数据包处理特性金额FEC都必须禁止。MCU必须通过软件插入和检测前导和同步字。
如果前导和同步字的插入/检测使能,所有的数据包处理特性和FEC都可以使用。只有一个除外,地址过滤特性在串行同步模式是不可用的。
当在串行同步模式使用数据包处理特性,CC1101将插入和检测前导和同步字,MCU值需要供给/获得数据载荷。这等价于推荐的FIFO操作模式。
一个二选一的RX输出选项是配置任何一个GDO引脚的RX_SYMBOL_TICK 和 RX_HARD_DATA,见表35。RX_HARD_DATA[1:0]是硬件确定信号。RX_HARD_DATA[1:0]包含4-ary调制模式,而RX_HARD_DATA[1]包含2-ary调制模式。RX_SYMBOL_TICK信号是信号时钟,高电平作为1/2信号周期,无论何时一个新的信号出现在硬件或软件数据输出。这个选项可以用在同步和异步接口。
SWRS061D Page 35 of 42
CC1101
28 系统注意事项和指导 28.1 SRD 规章
28.2 频率跳变和多信道系统
315MHz、433MHz、868MHz或915MHz频段在工业、办公和家庭环境等很多系统中共用。因此推荐使用频率跳频扩频(FHSS)或多信道协议,因为频率的差异可以减少和工作在同一个频段的其他设备之间的冲突。FHSS也可以抗多径衰减。
CC1101非常适合FHSS和多信道系统,由于它的灵活的频率合成器和有效的通信接口。使用数据包处理器支持和数据缓冲器也更有利于这样的系统,像这些特性可以显著的减轻主控制器的负担。
当CC1101执行频率跳变时,电荷泵电流,VCO电流和VCO容量组校准数据在每一个频率都是必须的。有3种方法可以从芯片获得校准数据:
1) 每次跳变运行频率跳变校准。PLL校准时间大约720us。每次频率跳变之间的消隐
期大约是810us。
2) 每次跳变运行不带校准的快速频率跳变,可以通过在启动时执行必要的校准和将
FSCAL3, FSCAL2和 FSCAL1的值作为结果存在MCU的存储器中。VCO电流校准的FSCAL1寄存器值在每一个RF频率查询。在FSCAL2 和 FSCAL3中的VCO电流校准值和电荷泵电流校准值不依赖于RF频率,因此这两个寄存器的值可以使用在所有RF频率。每两次频率跳变之间,校准过程可以通过写入符合下一个RF频率的值到FSCAL3, FSCAL2 和 FSCAL1寄存器来代替。PLL启动时间大约90us。每次频率跳变之间的消隐期大约90us。
3) 在启动时在单一频率下运行校准。接下来向FSCAL3[5:4]写入0来禁止电荷泵校准。
写完FSCAL3[5:4]之后,在每次频率跳变MCSM0.FS_AUTOCAL=1执行SRX(或STX)。即VCO电流和VCO容量校准完成,但是不校准电荷泵电流。当电荷泵电流校准被禁止校准时间从720us减少到150us。每次频率跳变之间的消隐期大约240us。 这是消隐时间和存储器空间的交替使用,需要存储校准数据在非易失性存储器中。方案2给出了最小的消隐时间,但是需要更多的存储空间来存储校准值。这个方案也需要电源电压和温度不会有很大变化。方案3给出了比方案1大约少于570us的消隐时间。
TEST0.VCO_SEL_CAL_EN的推荐设定随频率改变。这就意味着在校准之前必须使用SmartRF® Studio来获得详细频率的正确设置,无论使用哪一种校准方法。
注意:TESTn(n=0,1或2)的内容在SLEEP状态下不保持,因此当从SLEEP状态返回时必须要重新写这些寄存器。
28.3 当不使用扩频时的宽带调制 28.4 无线MBUS
SWRS061D
Page 36 of 42
CC1101
28.5 数据突发传输
CC1101的最大数据速率时工作在突发访问。一个低的平均速率链接(如10K)可以通过使用较高的空中数据速率来实现。缓冲数据并且以更高的速率(500k)突发传输能减少在活动模式中的时间,因而可以减少平均电流消耗。
减少在活动模式的时间也可以减少与同频率范围内的其他系统产生冲突的可能。 注意:对于高的数据速率的突发访问比较低速率的灵敏度和传输范围都小。
28.6 连续传输
在数据流应用中,CC1101可以达到在500k有效数据速率下连续传输。在闭环PLL下调制完成,传输的数据长度没有限制(在一些收发器中使用开环调制要避免这样的连续数据流并减小有效数据速率)。
28.7 低功耗系统
像CC1101使用500K波特率多信道的性能,而没有外部SAW或环路滤波器,极低功耗系统是可以实现的。在CC1101EM参考设计中使用一个HC-49型的SMD晶振。晶振的封装极大的影响价格。在有尺寸限制的PCB设计中,需要使用一个小的胆识不贵的晶振。
28.8 电池工作系统
在低功耗应用中,当CC1101不活动时必须使用晶振核关闭的SLEEP状态。如果启动时间达到临界,在SLEEP状态关闭晶振核的运行时必要的。在低功耗应用用使用WOR功能是必要的。
28.9 提高输出功率
在一些应用中扩展链路范围可能是必要的。增加哦一个外部功率放大器(PA)是最有效的方法。PA必须插入到天线和不匹配变压器与匹配电路之间。在接收模式必须使用两个T/R开关隔离PA,详见图29。
SWRS061D Page 37 of 42
CC1101
29 配置寄存器
CC1101的配置通过编程8位寄存器来实现。基于选择好系统参数的最适宜的配置数据的最省力的方法是使用SmartRF® Studio软件。接下来的表格中给出寄存器的完整描述。芯片复位后,所有寄存器恢复为表中的默认值。最适合的寄存器设置可能不同于默认值。上电复位后,不同于默认值的寄存器需要听过SPI接口编程。
表36有12个命令滤波寄存器。访问这些寄存器开始改变内部状态或模式。表37有47个标准8位配置寄存器。有一些寄存器仅用来测试的目的,CC1101的正常操作不需要配置。
表38有12个状态寄存器。这些寄存器为只读,包含CC1101的状态。 两个FIFO通过一个8位寄存器来访问。写操作写入TX FIFO,度操作从RX FIFO读取。 在头字节发送和当写数据到寄存器或TX FIFO,在SO线上返回一个状态字节。这个状态字节见30页表20的描述。
表39概述SPI地址空间。地址的使用通过增加基址到左侧和突发以及读/写位在上面。注意突发位在基址0x2F前和后有不同的含义。 地址 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x38 0x39 0x3A
命令名称 SRES SFSTXON SXOFF SCAL SRX STX SIDLE SWOR SPWD SFRX
描述 复位芯片
使能和校准频率合成器(如果MCSM0.FS_AUTOCAL=1)。如果在RX(使能CCA),仅当合成器运行时转到等待状态(RX/TX快速转换)。 关闭晶振
校准频率合成器并关闭。SCAL可以从IDLE模式执行而不需要设置收到校准模式(MCSM0.FS_AUTOCAL=0)。 使能RX。如果来自IDLE状态并且MCSM0.FS_AUTOCAL=1首先执行校准。
在IDLE状态:使能TX。如果MCSM0.FS_AUTOCAL=1首先执行校准。如果在RX状态并使能CCA仅在信道为空时转到TX。 离开RX/TX模式,关闭频率合成器,如果可用离开WOR。 如果WORCTRL.RC_PD=0像Section19.5的描述一样开始自动RX轮询序列(WOR)。 当CSn拉高进入掉电模式。
清洗RX FIFO缓冲器。只在IDLE 或 RXFIFO_OVERFLOW状态运行SFRX。
Page 38 of 42
SWRS061D
CC1101
0x3B 0x3C 0x3D 地址 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F 0x20 0x21 0x22 0x23
SFTX SWORRST SMOP
寄存器 IOCFG2 IOCFG1 IOCFG0 FIFOTHR SYNC1 SYNC0 PKTLEN PKTCTRL1 PKTCTRL0 ADDR CHANNR FSCTRL1 FSCTRL0 FREQ2 FREQ1 FREQ0 MDMCFG4 MDMCFG3 MDMCFG2 MDMCFG1 MDMCFG0 DEVIATN MCSM2 MCSM1 MCSM0 FOCCFG BSCFG AGCTRL2 AGCTRL1 AGCTRL0 WOREVT1 WOREVT0 WORCTRL FREND1 FREND0 FSCAL3
GDO2输出引脚配置 GDO1输出引脚配置 GDO0输出引脚配置 RX FIFO和TX FIFO门限 同步字,高字节 同步字,低字节 数据包长度 数据包自动控制 数据包自动控制 设备地址 信道号 频率合成器控制 频率合成器控制 频率控制字,高字节 频率控制字,中间字节 频率控制字,低字节 Modem配置 Modem配置 Modem配置 Modem配置 Modem配置 Modem背离设定 主无线控制状态机配置 主无线控制状态机配置 主无线控制状态机配置 频率偏移补偿配置 位同步配置 AGC控制 AGC控制 AGC控制 事件0超时高字节 事件0超时低字节 WOR控制 前端RX配置 前端TX配置 频率合成器校准
清洗TX FIFO缓冲器。只在IDLE 或 TXFIFO_UNDERFLOW状态运行SFTX。
复位实时时钟到Event1值。
无操作,可以用来访问获取芯片状态字节。
表36:命令滤波
描述
睡眠状 态保持 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是 是
Page 39 of 42
SWRS061D
CC1101
0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B 0x2C 0x2D 0x2E 地址 0x30(0xF0) 0x31(0xF1) 0x32(0xF2) 0x33(0xF3) 0x34(0xF4) 0x35(0xF5) 0x36(0xF6) 0x37(0xF7) 0x38(0xF8) 0x39(0xF9) 0x3A(0xFA) 0x3B(0xFB)
SCAL2 SCAL1 SCAL0 RCCTRL1 RCCTRL0 FSTEST PTEST AGCTEST TEST2 TEST1 TEST0
频率合成器校准 频率合成器校准 频率合成器校准 RC振荡器配置 RC振荡器配置 频率合成器校准控制 产品测试 AGC测试 各方面测试设定 各方面测试设定 各方面测试设定
表37 配置寄存器总览
寄存器 PARTNUM VERSION FREQEST LQI RSSI MARCSTATE WORTIME1 WORTIME0 PKTSTATUS VCO_VC_DAC TXBYTES RXBYTES
CC1101零件号 当前版本号 频率偏移评估 解调器链路质量估计 接收信号强度指示 控制状态机状态 WOR定时器高字节 WOR定时器低字节
当前GDOx状态和数据包状态 PLL校准模块的当前设置 下溢和TX FIFO中的字节数 上溢和RX FIFO中的字节数
描述
是 是 是 是 是 否 否 否 否 否 否
0x3C(0xFC) RCCTRL1_STATUS 上一次RC振荡器校准结果 0x3D(0xFD) RCCTRL0_STATUS 上一次RC振荡器校准结果
表38 状态寄存器总览
SWRS061D Page 40 of 42
表39 SPI地址空间
SWRS061D CC1101
Page 41 of 42
SWRS061D CC1101
Page 42 of 42
因篇幅问题不能全部显示,请点此查看更多更全内容