CC1100: 400-464 MHz and 800-928MHz
CC1101: 387-464 MHz and 779-928MHz
引脚编号 | 引脚名 | 引脚类型 | 描述 |
---|---|---|---|
1 | SCLK | 数字输入 | 连续配置接口,时钟输入 |
2 | SO(GD01) | 数字输出 | 连续配置接口,数据输出当 CSn 为高时为可选的一般输出脚 |
3 | GDO2 | 数字输出 | 一般用途的数字输出脚:1>测试信号;2>FIFO 状态信号;3>时钟输出,从 XOSC 向下分割;4>连续输入 TX 数据 |
4 | DVDD | 功率(数字) | 数字 I/O 和数字中心电压调节器的 1.8V-3.6V 数字功率供给输出 |
5 | DCOUPL | 功率(数字) | 对退耦的 1.6V-2.0V 数字功率供给输出;注意:这个引脚只对 CC2500 使用。不能用来对其他设备提供供给电压 |
6 | GDO0(ATEST) | 数字 I/O | 一般用途的数字输出脚:1> 测试信号;2>FIFO 状态信号;3>时钟输出,从 XOSC 向下分割;4>连续输入 TX 数据;5>也用作原型/产品测试的模拟测试 I/O |
7 | CSn | 数字输入 | 连续配置接口,芯片选择 |
8 | XOSC_Q1 | 模拟 I/O | 晶体振荡器脚 1,或外部时钟输入 |
9 | AVDD | 功率(模拟) | 1.8V-3.6V 模拟功率供给连接 |
10 | XOSC_Q2 | 模拟 I/O | 晶体振荡器脚 |
11 | AVDD | 功率(模拟) | 1.8V-3.6V 模拟功率供给连接 |
12 | RF_P | RF I/O | 接收模式下对 LNA 的正 RF 输入信号发送模式下对 LNA 的正 RF 输出信号 |
13 | AVDD | RF I/O | 接收模式下对 LNA 的负 RF 输入信号发送模式下对 LNA 的负 RF 输出信号 |
14 | AVDD | 功率(模拟) | 1.8V-3.6V 模拟功率供给连接 |
15 | AVDD | 功率(模拟) | 1.8V-3.6V 模拟功率供给连接 |
16 | GND | 地(模拟) | 模拟接地 |
17 | RBIAS | 模拟 I/O | 参考电流的外部偏阻器 |
18 | DGUARD | 功率(数字) | 对数字噪声隔离的功率供给连接 |
19 | GND | 地(数字) | 数字噪声隔离的接地 |
20 | SI | 数字输入 | 连续配置接口,数据输入 |
拓展知识:
MSB:高位前导
LSB:低位前导。
big endian(大端)是指低地址存放最高有效字节(MSB),
little endian(小端)则是低地址存放最低有效字节(LSB)
数据包的处理者可以配置增加下面的元素到TX FIFO中的数据包存储
推荐设置4字节前导和4字节同步字,除了500k波特率时推荐使用8字节前导。另外,在数据区域和附加的2字节CRC校验,以下可以被执行
- 使用PN9序列Whitening数据。
- 通过使用交叉和编码数据(卷积编码)前向纠错。
数据包处理支持将是解构数据包,(如使能)以下可以被执行
数据包的格式可以配置为由以下部分组成:
前导形式是一个交互的0 /1 序 列(01010101...)前导的最小长度是可编程控制的。当启用 TX 时,调制器开始传送前导。当控制数目的前导字节被传送完毕,调制器开始发送同步词汇,然后传送来自 TX FIFO的可利用的数据。若 TX FIFO 为空,调制器将继续传送前导字节,直到第一个字节被写入 TX FIFO。调制器将随后传送同步词汇和数据字节;
前导字节的长度由MDMCFG1.NU_PREAMBLE 值控制。
使用不同长度的配置来支持数据包格式。必须确保在发送前半个或任何字节的时候TX模式不被关闭
数据包长度寄存器PKTLEN,在接收和发送时可以重新编程。结合固定数据包长度模式(PKTCTRL0.LENGTH_CONFIG=0),这使与变长数据包不同的长度配置成为可能。(在可变数据包长度模式下长度字节是同步字节后第一个字节)在接收开始,数据包长度设置为一个大的值。MCU读取足够多的字节来解析数据包中的长度区域。然后依照这个值对PKTLEN进行设置。当数据包处理器中的字节计数器等于PKTLEN寄存器的值时数据包结束。因此,MCU必须在内部计数器达到数据包长度之前确认正确的长度
例子:发送一个600字节的数据包时,MCU必须按照以下执行:
- 设置PKTCTRL0.LENGTH_CONFIG=2。
- 重新设置PKTLEN寄存器的值为:(600,256)=88. (600%256 = 88)
- 至少发送345字节(600-255),例如通过填充64字节 TX FIFO 6次(发送384字节)。
- 设置PKTCTRL0.LENGTH_CONFIG=0。
- 当数据包计数器达到88发送完成。一共600字节被发送。
CC1101支持三种不同类型的数据包过滤:
在可变数据包模式,PKTCTRL0.LENGTH_CONFIG=1,PKTLEN.PACKET_LENGTH寄存器用来设置最大允许的数据包长度。如果接收的长度字节大于这个值,数据包将被丢弃,重新启动接收模式(不管MCSM1.RXOFF_MODE的设置)。
如果在固件中执行一个数据包导向的无线协议,MCU需要知道一个数据包什么时候收到/发送。
加之,超过64字节长度的数据包,当接收时需要读取RX FIFO和当发送时TX FIFO需要重新填充。
这就意味着MCU必须知道有多少个字节可以从RX FIFO中读取或者可以向TX FIFO中写入。
有两种方法可以获得必要的状态信息。
中断驱动方法
当同步字接收/发送完成或者完整的数据包接收/发送通过设置IOCFGx.GDOx_CFG=0x06,GDO脚可以用在RX和TX中产生一个中断。
此外,
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。
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有一个小的有限的错误的可能性。
当读取芯片状态字节有同样的问题。
在RX模式,RSSI可以连续的从RSSI状态寄存器读取知道解调器检测到一个同步字(当同步字检测使能)。此时RSSI读取的值将被冻结知道芯片下一次进入RX状态。
注意:从无线进入RX模式到在RSSI寄存器检测到一个正确的RSSI值需要一定的时间。查看DN505[15]获得RSSI响应时间估算的详细信息。
RSSI的值以dBm和1/2 dB给出。
RSSI更新速率,fRSSI 依赖于接收滤波带宽和AGCCTRL0.FILTER_LENGTH。
如果使能PKTCTRL1.APPEND_STATUS,数据包最后的RSSI值自动添加到有效载荷后面的第一个附加字节。
CC1101内部包含上电复位电路。最小的需求见表15,完整的上电复位功能必须遵循。当CHIP_RDYn变低内部上电序列完成。在CSn拉低后在SO引脚上可以查看CHIP_RDYn。
当CC1101复位完成,芯片将进入IDLE状态,晶振开始运行。如果芯片在上电之后有足够的时间让晶振稳定,在捕获CSn变低之后SO引脚将马上变低。如果在复位完成之前CSn被拉低,SO引脚将首先变高,指示晶振没有稳定,变低之前见下图。
CC1101上的其它全部复位时使用SRES命令。通过执行这个命令,所有内部寄存器和状态恢复默认,IDLE状态。手动复位序列如下(图 手动复位):
注意:以上复位程序只需要在电源给电之后。如果用户在这之后想要复位CC1101,只需要执行SRES命令选通
3 个数字输出引脚 GDO0 和 GDO1 和 GDO2为常规控制脚。它们的功能分别由
GDO0_CFG[5:0] GDO1_CFG[5:0] GDO2_CFG[5:0] | 描述 |
---|---|
0(0x00) | 与 RX FIFO 关联:当 RX FIFO 在 RXFIFO_THR 上被填充时声明。当 RX FIFO 在RXFIFO THR 之下时被反声明 |
1(0x01) | 与 RX FIFO 关联:当 RX FIFO 在 RXFIFO_THR 上被填充或到达数据包末端时声明。当RX FIFO 空时被反声明 |
2(0x02) | 与 TX FIFO 关联:当 TX FIFO 在 TXFIFO_THR 上被填充时声明。当 TX FIFO 在TXFIFO THR 之下时被反声明 |
3(0x03) | 与 TX FIFO 关联:当 TX FIFO 满时声明。当 TX FIFO 在 TXFIFO_THR 之下为空时被反声明 |
4(0x04) | 当 RX FIFO 已溢出时声明。当 FIFO 被淹没时被反声明 |
5(0x05) | 当 TX FIFO 已下溢时声明。当 FIFO 被淹没时被反声明 |
6(0x06) | 当同步词汇被送出/收到时声明,在数据包末端时反声明。对 RX,当可选地址检测失败或 RX FIFO 溢出时,引脚被反声明。若 TX FIFO 下溢,这个引脚将同样被反声明 |
7(0x07) | 当一个数据包被 OK CRC 收到时声明。当第一个字节从 RX FIFO 中读取时反声明 |
8(0x08) | 前导质量达到。当 PQI 高于控制 PQT 值时声明 |
9(0x09) | 清理信道评估。当 RSSI 等级低于门限时为高(决定于当前 CCA MODE 设置) |
10(0x0A) | 锁定检测器输出 |
11(0x0B) | 连续时钟。与同步连续模式下的数据同步。数据在下降沿建立,在 SERIAL CLK 上升沿被读取。 |
12(0x0C) | 连续同步数据输出。同步连续模式时使用。在 SERIAL_CLK 上升沿 MCU 必须读 DO。数据在下降沿由 CC2500 建立 |
13(0x0D) | 连续透明数据输出。同步连续模式时使用。 |
14(0x0E) | 载波感应。当 RSSI 等级低于门限时为高 |
15(0x0F) | CRC OK。上一个 CRC 对比匹配。当进入/重启 RX 模式时清理。 |
16(0x10) | 保留-测试用 |
17(0x11) | 保留-测试用 |
18(0x12) | 保留-测试用 |
19(0x13) | 保留-测试用 |
20(0x14) | 保留-测试用 |
21(0x15) | 保留-测试用 |
22(0x16) | RX_HARD_DATA[1]。能同RX_SYMBOL_TICK一起使用在交替连续RX输出上。 |
23(0x17) | RX_HARD_DATA[1]。能同RX_SYMBOL_TICK一起使用在交替连续RX输出上。 |
24(0x18) | 保留-测试用 |
25(0x19) | 保留-测试用 |
26(0x1A) | 保留-测试用 |
27(0x1B) | 1 时 PA PD.PA 开启,0 时功率降低。能用来控制外部 PA 或 RX/TX 开关 |
28(0x1C) | 1 时 LNA PD.LNA 开启,0 时功率降低。能用来控制外部 LNA 或 RX/TX 开关 |
29(0x1D) | RX_SYMBOL_TICK。能同RX_HARD_DATA一起使用在交替连续RX输出上。 |
30(0x1E) | 保留-测试用 |
31(0x1F) | 保留-测试用 |
32(0x20) | 保留-测试用 |
33(0x21) | 保留-测试用 |
34(0x22) | 保留-测试用 |
35(0x23) | 保留-测试用 |
36(0x24) | 保留-测试用 |
37(0x25) | 保留-测试用 |
38(0x26) | 保留-测试用 |
39(0x27) | 保留-测试用 |
40(0x28) | 保留-测试用 |
41(0x29) | CHIP RDY |
42(0x2A) | 保留-测试用 |
43(0x2B) | XOSC STABLE |
44(0x2C) | 保留-测试用 |
45(0x2D) | GDO0 Z EN N。当这个输出为 0 时,GDO0 配置为输入(为连续 TX 数据) |
46(0x2E) | 高阻抗(3-状态) |
47(0x2F) | HW 到 0(HW1 同 INV 信号一起完成) |
48(0x30) | CLK XOSC/1 |
49(0x31) | CLK XOSC/1.5 |
50(0x32) | CLK XOSC/2 |
51(0x33) | CLK XOSC/3 |
52(0x34) | CLK XOSC/4 |
53(0x35) | CLK XOSC/6 |
54(0x36) | CLK XOSC/8 |
55(0x37) | CLK XOSC/12 |
56(0x38) | CLK XOSC/16 |
57(0x39) | CLK XOSC/24 |
58(0x3A) | CLK XOSC/32 |
59(0x3B) | CLK XOSC/48 |
60(0x3C) | CLK XOSC/64 |
61(0x3D) | CLK XOSC/96 |
62(0x3E) | CLK XOSC/128 |
63(0x3F) | CLK XOSC/192 |
CC1101的配置通过编程8位寄存器来实现
访问这些寄存器将会发起内部状态或模式的改变
地址 | 名称 | 描述 |
---|---|---|
0x30 | SRES | 复位芯片 |
0x31 | SFSTXON | 使能和校准频率合成器(如果MCSM0.FS_AUTOCAL=1)。如果在RX(使能CCA),仅当合成器运行时转到等待状态(RX/TX快速转换) |
0x32 | SXOFF | 关闭晶振 |
0x33 | SCAL | 校准频率合成器并关闭。SCAL可以从IDLE模式执行而不需要设置收到校准模式(MCSM0.FS_AUTOCAL=0)。 |
0x34 | SRX | 使能RX。如果来自IDLE状态并且MCSM0.FS_AUTOCAL=1首先执行校准。 |
0x35 | STX | 在IDLE状态:使能TX。如果MCSM0.FS_AUTOCAL=1首先执行校准。如果在RX状态并使能CCA仅在信道为空时转到TX。 |
0x36 | SIDLE | 离开RX/TX模式,关闭频率合成器,如果可用离开WOR。 |
0x38 | SWOR | 如果WORCTRL.RC_PD=0像Section19.5的描述一样开始自动RX轮询序列(WOR)。 |
0x39 | SPWD | 当CSn拉高进入掉电模式。 |
0x3A | SFRX | 清除RX FIFO缓冲器。只在IDLE 或 RXFIFO_OVERFLOW状态运行SFRX。 |
0x3B | SFTX | 清除TX FIFO缓冲器。只在IDLE 或 TXFIFO_UNDERFLOW状态运行SFTX。 |
0x3C | SWORRST | 复位实时时钟到Event1值。 |
0x3D | SMOP | 无操作,可以用来访问获取芯片状态字节。 |
地址 | 寄存器 | 描述 | 保持在休眠状态中 |
---|---|---|---|
0x00 | IOCFG2 | GDO2输出引脚配置 | 是 |
0x01 | IOCFG1 | GDO1输出引脚配置 | 是 |
0x02 | IOCFG0 | GDO0输出引脚配置 | 是 |
0x03 | FIFOTHR | RX FIFO和TX FIFO门限 | 是 |
0x04 | SYNC1 | 同步字,高字节 | 是 |
0x05 | SYNC0 | 同步字,低字节 | 是 |
0x06 | PKTLEN | 数据包长度 | 是 |
0x07 | PKTCTRL1 | 数据包自动控制 | 是 |
0x08 | PKTCTRL0 | 数据包自动控制 | 是 |
0x09 | ADDR | 设备地址 | 是 |
0x0A | CHANNR | 信道号 | 是 |
0x0B | FSCTRL1 | 频率合成器控制 | 是 |
0x0C | FSCTRL0 | 频率合成器控制 | 是 |
0x0D | FREQ2 | 频率控制字,高字节 | 是 |
0x0E | FREQ1 | 频率控制字,中间字节 | 是 |
0x0F | FREQ0 | 频率控制字,低字节 | 是 |
0x10 | MDMCFG4 | Modem配置 | 是 |
0x11 | MDMCFG3 | Modem配置 | 是 、 |
0x12 | MDMCFG2 | Modem配置 | 是 |
0x13 | MDMCFG1 | Modem配置 | 是 |
0x14 | MDMCFG0 | Modem配置 | 是 |
0x15 | DEVIATN | Modem背离设定 | 是 |
0x16 | MCSM2 | 主无线控制状态机配置 | 是 |
0x17 | MCSM1 | 主无线控制状态机配置 | 是 |
0x18 | MCSM0 | 主无线控制状态机配置 | 是 |
0x19 | FOCCFG | 频率偏移补偿配置 | 是 |
0x1A | BSCFG | 位同步配置 | 是 |
0x1B | AGCTRL2 | AGC控制 | 是 |
0x1C | AGCTRL1 | AGC控制 | 是 |
0x1D | AGCTRL0 | AGC控制 | 是 |
0x1E | WOREVT1 | 事件0超时高字节 | 是 |
0x1F | WOREVT0 | 事件0超时低字节 | 是 |
0x20 | WORCTRL | WOR控制 | 是 |
0x21 | FREND1 | 前端RX配置 | 是 |
0x22 | FREND0 | 前端TX配置 | 是 |
0x23 | FSCAL3 | 频率合成器校准 | 是 |
0x24 | SCAL2 | 频率合成器校准 | 是 |
0x25 | SCAL1 | 频率合成器校准 | 是 |
0x26 | SCAL0 | 频率合成器校准 | 是 |
0x27 | RCCTRL1 | RC振荡器配置 | 是 |
0x28 | RCCTRL0 | RC振荡器配置 | 是 |
0x29 | FSTEST | 频率合成器校准控制 | 否 |
0x2A | PTEST | 产品测试 | 否 |
0x2B | AGCTEST | AGC测试 | 否 |
0x2C | TEST2 | 各方面测试设定 | 否 |
0x2D | TEST1 | 各方面测试设定 | 否 |
0x2E | TEST0 | 各方面测试设定 | 否 |
地址 | 寄存器 | 描述 |
---|---|---|
0x30(0xF0) | PARTNUM | CC1101零件号 |
0x31(0xF1) | VERSION | 当前版本号 |
0x32(0xF2) | FREQEST | 频率偏移评估 |
0x33(0xF3) | LQI | 解调器链路质量估计 |
0x34(0xF4) | RSSI | 接收信号强度指示 |
0x35(0xF5) | MARCSTATE | 控制状态机状态 |
0x36(0xF6) | WORTIME1 | WOR定时器高字节 |
0x37(0xF7) | WORTIME0 | WOR定时器低字节 |
0x38(0xF8) | PKTSTATUS | 当前GDOx状态和数据包状态 |
0x39(0xF9) | VCO_VC_DAC | PLL校准模块的当前设置 |
0x3A(0xFA) | TXBYTES | 下溢和TX FIFO中的字节数 |
0x3B(0xFB) | RXBYTES | 上溢和RX FIFO中的字节数 |
0x3C(0xFC) | RCCTRL1_STATUS | 上一次RC振荡器校准结果 |
0x3D(0xFD) | RCCTRL0_STATUS | 上一次RC振荡器校准结果 |