CC1150射频芯片频率与功率配置实战指南
1. 项目概述与核心价值
在Sub-1GHz无线通信领域,无论是智能家居的遥控器、工业传感器网络,还是远距离的物联网节点,稳定可靠的射频链路都是整个系统的生命线。而这条生命线的“心脏”,就是射频收发芯片的频率合成器与功率放大器。我接触过不少项目,从简单的315MHz车库门遥控到复杂的915MHz多跳自组网,发现很多工程师在初次配置像TI CC1150这类芯片时,往往对频率编程和功率配置感到头疼——数据手册上的公式看起来抽象,寄存器配置表又密密麻麻,稍有不慎就会导致通信距离不达标、功耗飙升,甚至根本搜不到信号。
这篇文章,我就结合自己踩过的坑和积累的经验,把CC1150的频率与功率配置这件事掰开揉碎了讲清楚。这不是一份照搬数据手册的翻译,而是一个一线工程师的实战笔记。我会重点解释两个核心问题:第一,如何精确地计算出你想要的载波频率,并把它转换成那三个神秘的FREQ寄存器值;第二,如何灵活地配置输出功率,不仅是为了满足法规的发射功率限制,更是为了在通信距离、功耗和信号质量之间找到最佳平衡点。无论你是正在调试第一个无线模块的新手,还是希望优化现有系统性能的老手,相信这些从实际项目中总结出的步骤、公式和避坑指南,都能让你少走弯路。
2. 频率编程:从信道规划到寄存器写入
无线通信不是随便选个频率就能工作的。你需要一个精确且稳定的载波频率作为信号的“搬运工”。在CC1150中,这个任务由全集成化的频率合成器完成,其核心是一个锁相环(PLL)和压控振荡器(VCO)。我们的编程工作,本质上就是告诉这个合成器:“请产生某某频率的信号。”
2.1 理解频率合成公式
数据手册给出的载波频率计算公式是理解一切的起点:f_carrier = (FREQ[23:0] * f_XOSC / 2^16) + (CHAN * f_channel)
这个公式包含两部分:
- 基频(Base Frequency):由24位的频率控制字
FREQ[23:0]和晶振频率f_XOSC决定。FREQ[23:0]是一个无符号整数,它决定了频率合成器输出频率的“粗调”基准。计算时,FREQ[23:0]乘以一个步进值(f_XOSC / 65536),得到基频。 - 信道偏移(Channel Offset):由8位信道号
CHAN和信道间隔f_channel决定。这部分实现了“细调”,允许你在基频的基础上,以固定的步进切换频率,这对于实现多信道或跳频系统至关重要。
而信道间隔f_channel本身也是一个可编程的值,由两个寄存器共同决定:f_channel = f_XOSC / 2^18 * (256 + CHANSPC_M) * 2^CHANSPC_E
这里,CHANSPC_M(8位尾数)和CHANSPC_E(2位指数)共同构成了一个浮点数,提供了非常灵活的信道间隔设置能力。
注意:在修改任何频率相关的寄存器(
FREQ2/1/0,MDMCFG0/1中的CHANSPC_M/E,CHANNR)之前,必须确保芯片处于IDLE状态。如果在合成器运行时修改这些寄存器,可能导致VCO失锁,产生不可预测的杂散频率或根本无法工作。稳妥的做法是,先发送SIDLE命令切换到空闲状态,再修改寄存器,最后根据需要重新校准或启动发射。
2.2 实操:如何计算并设置433.92MHz信道
理论有点枯燥,我们直接看一个最常用的例子:在26MHz晶振下,设置中心频率为433.92MHz,信道间隔为200kHz的系统。
步骤一:确定信道间隔寄存器值我们的目标是f_channel = 200 kHz。代入公式:200,000 = 26,000,000 / 262,144 * (256 + CHANSPC_M) * 2^CHANSPC_E简化后:(256 + CHANSPC_M) * 2^CHANSPC_E ≈ 2016.78
我们需要找到一对CHANSPC_M和CHANSPC_E,使计算结果尽可能接近2016.78。通过枚举尝试(或使用TI的SmartRF Studio软件):
- 如果
CHANSPC_E = 0,则(256 + CHANSPC_M) ≈ 2016.78,CHANSPC_M ≈ 1760.78,超出8位寄存器范围(0-255),不可行。 - 如果
CHANSPC_E = 1,则(256 + CHANSPC_M) * 2 ≈ 2016.78,CHANSPC_M ≈ 752.39,仍超出范围。 - 如果
CHANSPC_E = 2,则(256 + CHANSPC_M) * 4 ≈ 2016.78,CHANSPC_M ≈ 248.195。取整后CHANSPC_M = 248(0xF8)。 - 验证:
(256 + 248) * 4 = 2016,对应的实际信道间隔f_channel = 26e6 / 262144 * 2016 ≈ 199.951 kHz。这与目标200kHz的误差极小,完全满足一般应用需求。
因此,我们设置:MDMCFG1.CHANSPC_E = 2(二进制10),MDMCFG0.CHANSPC_M = 0xF8。
步骤二:确定基频寄存器值我们希望信道0(CHAN=0)的频率就是433.92MHz。此时载波频率公式简化为:f_carrier = FREQ[23:0] * f_XOSC / 2^16即:433,920,000 = FREQ[23:0] * 26,000,000 / 65,536解得:FREQ[23:0] = 433,920,000 * 65,536 / 26,000,000 ≈ 1,094,079.754
取整到最接近的整数:FREQ[23:0] = 1,094,080(0x10B040)。 这是一个24位数,需要拆分成三个8位寄存器:
FREQ2 = 0x10(高8位: 0x10B040 >> 16 = 0x10)FREQ1 = 0xB0(中8位: (0x10B040 >> 8) & 0xFF = 0xB0)FREQ0 = 0x40(低8位: 0x10B040 & 0xFF = 0x40)
步骤三:设置信道号现在,如果你想使用第5个信道,只需设置CHANNR.CHAN = 5。那么实际发射频率将是:f = 433.92MHz + 5 * 199.951kHz ≈ 434.919755MHz
步骤四:频率合成器校准配置好寄存器并不算完。由于温度、电压和频率点变化会影响VCO特性,CC1150需要在频率变化后进行校准,以确保PLL能够锁定。校准可以通过自动或手动方式触发。
- 自动校准:通过配置
MCSM0.FS_AUTOCAL寄存器。例如,设置为01,则每次从IDLE状态进入TX(或FSTXON)状态时,芯片会自动执行一次校准。这是最省事的方式。 - 手动校准:在IDLE状态下,向命令寄存器写入
SCAL命令(0x33)。这在需要精确控制校准时机时使用,比如在跳频系统中。
校准完成后,如何确认PLL已锁定?有两种方法:
- 读取状态寄存器:读取
FSCAL1寄存器,如果其值不等于0x3F,则表明PLL已锁定。 - 使用GDOx引脚监控:将
IOCFGx.GDOx_CFG配置为0x0A,该引脚会输出锁相环锁定检测信号。当引脚产生一个上升沿或保持高电平时,表示PLL已锁定。你可以将此引脚连接到MCU的中断引脚,实现事件驱动。
实操心得:对于固定频点的应用,强烈建议使用自动校准(
MCSM0.FS_AUTOCAL=01)。但在电池供电、需要频繁睡眠唤醒的应用中,要注意从SLEEP状态唤醒后,校准数据会丢失,必须重新校准或重新配置寄存器并校准。一个稳健的初始化流程是:唤醒→配置所有寄存器→发送SCAL命令→检查FSCAL1或GDOx锁定信号→开始通信。
2.3 信道间隔的灵活应用与限制
数据手册提到,在26MHz晶振下,最大信道间隔约为405kHz。如果你需要1MHz的信道间隔怎么办?手册给出了一个巧妙的思路:将信道间隔设置为333kHz,然后在CHANNR寄存器中每次递增3。这样,实际跳频步进就是 333kHz * 3 ≈ 1MHz。这种“软件倍频”的方法扩展了硬件的能力。
但这里有个坑:信道间隔设置得太小,可能会超出芯片的频率分辨率;设置得太大,又可能无法覆盖想要的频段。在设计初期,最好用SmartRF Studio软件验证一下目标频段和信道间隔是否可行,它会自动计算并给出最优的寄存器配置,避免手动计算的误差和无效配置。
3. 输出功率配置:从寄存器到天线端的辐射
输出功率配置直接决定了通信距离和整机功耗。CC1150的功率放大器(PA)配置非常灵活,采用了两级控制结构,理解这个结构是进行高效配置的关键。
3.1 两级功率控制结构解析
第一级是PATABLE(功率放大表)。这是一个可以存储8个功率值的表(PATABLE[0]到PATABLE[7]),每个值对应一个具体的输出功率等级。这个表的值需要你根据目标频率和期望的功率等级来查找数据手册或通过SmartRF Studio获取。
第二级是FREND0.PA_POWER。这是一个3位字段,其值(0-7)作为索引,指向PATABLE中的某一个条目。芯片在发射时,就使用这个索引对应的功率值。
这种结构的好处是什么?它实现了功率斜坡(Ramping)。在发射开始时,PA的输出功率并不是瞬间跳到目标值,而是从PATABLE[0]开始,逐步增加到PATABLE[PA_POWER];在发射结束时,又从PATABLE[PA_POWER]逐步降低到PATABLE[0]。这个过程能显著减少谐波和杂散发射,更容易通过无线电法规认证(如FCC、CE)。
3.2 实操:配置+10dBm输出功率(以433MHz为例)
假设我们在433MHz频段,需要最大+10dBm的输出功率。
步骤一:查找PATABLE推荐值查阅数据手册中的“Table 5-8. Optimum PATABLE Settings”,找到433MHz频段、+10dBm输出功率对应的“SETTING”一栏。我们看到值是0xC2。同时,表格也给出了典型电流消耗为26.1mA。这意味着,你需要将PATABLE的某个条目(通常是索引值较大的,比如PATABLE[7])设置为0xC2。
步骤二:设置FREND0.PA_POWER如果我们希望最大功率就是+10dBm,并且使用完整的功率斜坡,那么就将FREND0.PA_POWER设置为7(二进制111),指向PATABLE[7]。
步骤三:配置功率斜坡如果我们希望使用从低到高的完整斜坡,就需要填充PATABLE[0]到PATABLE[6]的值。这些值通常选择逐步递增的功率代码。例如,可以设置为:0x12,0x26,0x57,0x60,0x8A,0xC8,0xC2。这样,发射时功率会平滑上升和下降。
步骤四:写入PATABLE寄存器PATABLE的地址是0x3E。但要注意,只有PATABLE[0]可以通过单字节写入模式配置。如果你想一次性配置整个PATABLE(多个条目),必须使用突发(Burst)写入模式。在SPI通信中,这意味着在发送寄存器地址0x3E时,同时将Burst位(地址字节的第6位)置1,然后连续发送最多8个字节的数据,这些数据会按顺序填充到PATABLE[0]到PATABLE[7]。
一个完整的配置代码片段(C语言风格)可能如下:
// 假设SPI写函数为 spi_write_reg(addr, value) // 1. 配置功率表 (Burst模式写入,地址位6置1) uint8_t patable_values[8] = {0x12, 0x26, 0x57, 0x60, 0x8A, 0xC8, 0xC2, 0xC2}; // 示例值 spi_write_burst(0x3E | 0x40, patable_values, 8); // 0x40是Burst位 // 2. 配置PA功率选择索引为7 (使用PATABLE[7]) spi_write_reg(0x22, 0x00 | 0x07); // FREND0寄存器,低3位为PA_POWER,假设高5位为03.3 ASK/OOK调制下的特殊配置
对于ASK(幅移键控)或OOK(开关键控)调制,功率配置有特殊含义。此时,FREND0.PA_POWER索引指向的PATABLE条目代表“逻辑1”的发射功率,而PATABLE[0]则代表“逻辑0”的发射功率(对于OOK,通常是零功率或极低功率)。
芯片内部有一个计数器,在发送“1”时递增,发送“0”时递减,计数速率是符号率的8倍。这个计数器的值就作为PATABLE的索引。因此,为了实现ASK调制,你需要合理设置PATABLE[0]到PATABLE[PA_POWER]之间的值,以塑造上升沿和下降沿的波形。手册特别强调,CC1150的ASK/OOK脉冲整形功能仅支持输出功率低于-1 dBm的情况,如果你需要更高的ASK功率,这个功能将不可用,需要特别注意。
注意事项:数据手册中的“Table 5-8”是不同频段下的推荐值,但实际最佳值可能因你的PCB布局、天线匹配和电源质量而略有差异。在批量生产前,务必使用频谱仪和功率计在实际产品上进行最终验证和微调。此外,将输出功率设置得高于必要值不仅是浪费电量,还可能因为PA饱和导致信号失真,反而降低通信质量。
4. 寄存器配置的完整流程与最佳实践
理解了频率和功率的核心原理后,我们需要一个可靠、稳健的配置流程。CC1150的配置是通过SPI接口读写一系列8位寄存器完成的。芯片上电或复位后,大部分寄存器都有默认值,但为了满足特定应用,我们必须对其进行重新配置。
4.1 配置流程与状态机管理
一个标准的初始化配置流程应遵循以下步骤,尤其要注意芯片状态机的转换:
- 复位与等待稳定:发送
SRES(0x30) 命令复位芯片。之后,需要等待一小段时间让晶振起振并稳定。可以通过检查IOCFG0默认输出的时钟(XOSC/192)或等待足够的时间(如几毫秒)来实现。 - 进入IDLE状态:确保芯片处于IDLE状态(可通过发送
SIDLE命令实现)。绝大多数配置寄存器只能在IDLE状态下安全写入。 - 批量写入配置寄存器:按照你的通信参数(频率、数据率、调制方式、带宽、前导码、同步字、包格式、地址过滤等),依次配置所有相关的寄存器。这包括我们前面重点讨论的
FREQ2/1/0、MDMCFG0/1(信道间隔)、MDMCFG2(调制方式)、MDMCFG3/4(数据率)、PKTCTRL0/1(包控制)、SYNC1/0(同步字)以及FREND0和PATABLE(功率控制)。 - (可选)手动校准:如果未启用自动校准,在频率相关寄存器配置完成后,发送
SCAL(0x33) 命令进行频率合成器校准。建议在初始化流程中至少执行一次手动校准。 - 验证配置与锁定:读取状态寄存器
MARCSTATE确认芯片处于IDLE状态。如果使用了GDOx引脚监控PLL锁定,检查其电平或中断状态。 - 进入工作模式:根据应用需求,发送
STX进入发射状态,或发送SRX进入接收状态。如果启用了自动校准(MCSM0.FS_AUTOCAL=01),在发送STX命令时,芯片会先自动执行校准,再开启发射。
4.2 关键寄存器配置详解与示例
除了频率和功率,其他一些寄存器对系统性能也至关重要。这里列举几个常需修改的:
- 数据率设置 (
MDMCFG3/4):数据率由MDMCFG3.DRATE_M(9位尾数,最高位隐含为1) 和MDMCFG4.DRATE_E(4位指数) 共同决定,公式为:Data Rate = (256 + DRATE_M) * 2^DRATE_E * f_XOSC / 2^28。例如,对于26MHz晶振,默认值DRATE_M=0x22(34),DRATE_E=0x0C(12) 计算出的数据率约为115.051 kBaud。 - 调制方式 (
MDMCFG2.MOD_FORMAT):000 为 2-FSK,001 为 GFSK,011 为 ASK/OOK,111 为 MSK。MSK模式通常需要更高的数据率(>26 kBaud)。 - 同步字模式 (
MDMCFG2.SYNC_MODE):这决定了接收机需要检测到多少位同步字才认为数据包有效。例如,010(16/16) 要求完全匹配16位同步字,抗干扰性最强,但可能因微小频偏导致失锁;001(15/16) 允许1位容错,鲁棒性更好。在噪声较大的环境中,可以考虑使用带载波侦听(Carrier Sense)的模式,如110。 - GDO引脚配置 (
IOCFG0/1):这两个引脚非常灵活,可以输出时钟、TX/RX FIFO状态、包同步信号、PLL锁定信号等。合理配置它们可以极大减轻MCU的负担。例如,将GDO0配置为在同步字发送完成时断言(0x06),MCU就可以利用这个信号来精确控制外部功放或LED指示。
4.3 配置脚本与调试技巧
在实际开发中,我强烈建议将寄存器配置写成数组或结构体,方便管理和修改。下面是一个示例框架:
typedef struct { uint8_t addr; uint8_t value; } cc1150_reg_config_t; // 一个针对433MHz, 10dBm, 38.4kbps GFSK的配置示例(部分关键寄存器) const cc1150_reg_config_t cc1150_config[] = { {0x0D, 0x10}, // FREQ2 {0x0E, 0xB0}, // FREQ1 {0x0F, 0x40}, // FREQ0 -> 433.92MHz {0x10, 0x2D}, // MDMCFG4: DRATE_E etc. {0x11, 0x3B}, // MDMCFG3: DRATE_M -> ~38.4kbps {0x12, 0x13}, // MDMCFG2: GFSK, 16/16 sync mode {0x13, 0x22}, // MDMCFG1: FEC off, 4 bytes preamble, ChanSpc_E=2 {0x14, 0xF8}, // MDMCFG0: ChanSpc_M=248 -> ~200kHz spacing {0x15, 0x62}, // DEVIATN: ~20kHz deviation {0x18, 0x18}, // MCSM0: Auto-cal when going to TX {0x22, 0x01}, // FREND0: PA_POWER=1 (示例,实际根据PATABLE索引定) // ... 更多寄存器 {0x3E, 0xC2}, // PATABLE[0] - Burst模式写入更高效,此处仅为示例 }; void cc1150_init(void) { cc1150_reset(); // 发送SRES delay_ms(10); // 等待稳定 cc1150_cmd_strobe(SIDLE); // 进入IDLE for(int i = 0; i < sizeof(cc1150_config)/sizeof(cc1150_reg_config_t); i++) { spi_write_reg(cc1150_config[i].addr, cc1150_config[i].value); } // 使用Burst模式写入完整的PATABLE uint8_t patable[8] = {0x12, 0x26, 0x57, 0x60, 0x8A, 0xC8, 0xC2, 0xC2}; spi_write_burst(0x3E | 0x40, patable, 8); cc1150_cmd_strobe(SCAL); // 手动校准 // 可选:检查PLL锁定或等待校准完成 }调试技巧:
- 频谱仪是终极工具:它能直观显示载波频率是否准确、输出功率大小、以及谐波和杂散发射情况。
- 善用SmartRF Studio:TI提供的这个软件可以基于你的目标参数(频率、数据率、调制方式)自动生成最优的寄存器配置数组,直接复制到代码中即可,能节省大量计算和试错时间。
- 逻辑分析仪抓SPI:如果通信不正常,用逻辑分析仪抓取MCU与CC1150之间的SPI时序,确认命令和寄存器写入的数据是否正确。
- 测量电流:在不同工作模式(睡眠、空闲、接收、发射)下测量整机电流,与数据手册的典型值对比,可以快速发现配置错误(如功率设置过大)或硬件问题。
5. 常见问题排查与实战经验
即使按照手册配置,在实际项目中还是会遇到各种问题。下面是我总结的一些典型故障现象和排查思路。
5.1 频率相关典型问题
问题1:实际发射频率与计算值有偏差。
- 可能原因A:晶振频率不准。26MHz晶振的负载电容不匹配或本身精度不够(如使用了±20ppm的廉价晶振而非±10ppm)。用频率计测量晶振引脚(注意高阻抗探头的影响)或测量CC1150输出的时钟(如GDO0配置为XOSC分频)来验证。
- 可能原因B:寄存器写入错误或未生效。确保在IDLE状态下写入频率寄存器,并且写完后执行了校准(
SCAL)。用SPI读取回FREQ2/1/0、MDMCFG0/1寄存器,确认写入值正确。 - 可能原因C:电源噪声或PCB布局问题。电源纹波过大或数字信号线对RF部分干扰,可能导致VCO相位噪声增大或频率轻微漂移。确保电源去耦电容(特别是VDD引脚附近的)焊接良好,RF走线尽量短且远离数字线路。
问题2:PLL无法锁定,通信完全失败。
- 排查步骤:
- 检查
MCSM0.FS_AUTOCAL设置或是否手动发送了SCAL命令。 - 将GDO0配置为锁相环锁定检测输出(
IOCFG0.GDO0_CFG = 0x0A),用示波器或MCU GPIO检测该引脚。正常应在校准完成后出现高电平。 - 读取
FSCAL1寄存器,如果值为0x3F,说明校准失败或未进行。 - 重点检查
TEST0寄存器。手册5.19.2节强调,TEST0.VCO_SEL_CAL_EN的推荐值随频率变化。必须使用SmartRF Studio获取你目标频率下的正确TEST0寄存器值,并在初始化时写入。这是一个极易忽略的坑! - 检查电源电压是否在额定范围内(通常1.8V-3.6V),电压过低可能导致VCO无法正常工作。
- 检查
5.2 功率相关典型问题
问题1:实测输出功率远低于预期。
- 可能原因A:PATABLE值设置错误。确认你使用的PATABLE值是否对应正确的频段和功率等级。不同频段(315/433/868/915MHz)的PATABLE值是不同的。
- 可能原因B:
FREND0.PA_POWER索引错误。如果你将功率值写入了PATABLE[3],但PA_POWER设置为0,那么实际使用的将是PATABLE[0](可能是很小的功率值)。 - 可能原因C:天线匹配网络不佳或天线本身效率低。即使芯片PA输出功率达标,如果天线匹配不好,能量无法有效辐射,在天线端口测得的功率也会很低。需要使用网络分析仪调试天线匹配电路(通常是π型或L型网络)。
- 可能原因D:PCB损耗。在较高频率(如868/915MHz),PCB走线的损耗不可忽视。尽量缩短RF走线,使用50欧姆阻抗控制,并避免使用直角走线。
问题2:发射时电流过大,甚至导致电源电压跌落。
- 可能原因A:输出功率设置过高。对照数据手册Table 5-8,检查你设置的PATABLE值对应的典型电流是否与你测量的电流在一个数量级。如果设置
0xC0以上值追求高功率,电流达到30mA以上是正常的。 - 可能原因B:电源供电能力不足或去耦不良。发射时PA瞬间需要较大电流,如果电源线细、稳压芯片输出能力不够或去耦电容失效,会导致电压跌落,可能引起芯片复位或工作异常。确保电源路径能提供至少150mA的峰值电流,并在芯片的VDD引脚就近放置一个10uF的钽电容和一个100nF的陶瓷电容。
问题3:ASK/OOK调制时,波形失真严重。
- 首先确认输出功率是否低于-1 dBm。这是CC1150支持ASK脉冲整形功能的硬性条件。
- 检查
PATABLE[0]到PATABLE[PA_POWER]的值是否合理设置。对于OOK,PATABLE[0]应设置为一个很小的值(甚至0x00)来代表“0”,PATABLE[PA_POWER]设置为代表“1”的功率值。中间的值用于塑造边沿。 - 测量数据速率与符号率是否匹配。ASK/OOK对时序要求较高,需确保MCU发送的数据时序与CC1150配置的数据率一致。
5.3 系统级问题与进阶技巧
问题:通信距离不如预期,误码率高。这往往是系统性问题,需要综合排查:
- 频谱分析:用频谱仪看发射频谱是否干净,有无明显杂散或谐波(可能由功率斜坡设置不当或匹配电路引起)。
- 接收灵敏度测试:在屏蔽房或远离干扰的环境下,使用信号发生器衰减器测试接收机的实际灵敏度,与数据手册对比。
- 协议与软件:检查前导码长度、同步字容错、CRC校验是否启用。在恶劣环境下,可以增加前导码长度、使用容错的同步字模式(如15/16)、并启用白化(Whitening)和FEC(前向纠错,但注意FEC会降低有效数据率)。
- 环境干扰:Sub-1GHz频段干扰源很多。尝试切换信道,看是否避开了一个固定的干扰源。考虑实现简单的跳频(FHSS)算法,虽然CC1150本身不支持自动跳频,但可以通过MCU控制定期切换
CHANNR或FREQ寄存器来实现,大幅提升抗干扰能力。
进阶技巧:实现快速跳频如手册5.19.2节所述,有三种跳频策略:
- 每次跳频都校准:最慢(~810us空白期),但最稳健。
- 预校准并存储
FSCALx值:最快(~90us空白期),但需要为每个频点存储FSCAL1/2/3寄存器值,占用MCU存储空间,且对温度电压变化敏感。 - 禁用电荷泵校准:折中方案(~240us空白期)。先在校准一个频点,然后写
FSCAL3[5:4]=0禁用电荷泵校准,之后跳频时只做VCO校准。
对于多数应用,方案3是较好的平衡选择。实现时,在初始化阶段完成一次全校准,然后保存此时的FSCAL1/2/3值,并将FSCAL3[5:4]清零后写回。跳频时,先更新频率寄存器,再写入保存的FSCAL1/2/3值(其中FSCAL3[5:4]已为0),最后发送STX命令(需设置MCSM0.FS_AUTOCAL=1)。这样可以大幅缩短信道切换时间,适用于需要快速跳频的抗干扰系统。
最后,寄存器配置只是无线系统设计的一部分。一个稳定的无线链路还需要良好的PCB布局、精准的天线匹配、合理的电源管理和健壮的通信协议。多动手测试,善用仪器,理解数据手册每一句话背后的含义,是玩转CC1150这类射频芯片的不二法门。
