一、要解决的问题和相关关键词
1. 实测射频通信频点
有一款产品,使用了多个频道,需要实测各个频道具体的频点数据。用来测试的仪器是频谱仪。射频芯片需要进入单载波模式。
2. 相关关键词
- 单载波(CW, Continuous Wave)
- 连续发射模式
- CW 射频信号
- 用来测试发射功率
- 恒载波模式
3. 其他
中文网站上很少关于这方面的完整记载。我记录一下自己整个实现过程,方便自己,也方便有需要的人。
二、定频测试的流程
三、配置cc2500 进入单载波模式
查阅了一轮cc2500
的datasheet
,没看到有那个寄存器或者标志位是明确写着进入单载波模式的。在TI 官方论坛搜索了一轮,根据各个信息片段,整理出下面流程。
3.1 配置 SmartRF Studio
3.1.1 打开 SmartRF Studio,双击选择我们使用的cc2500 芯片
3.1.2 在 SmartRF Studio 上根据我们实际情况配置cc2500
- 选择 Expert Mode(专业模式)。Easy Mode 无单载波模式。
- 选择 Continuous TX
- 选择我们实际使用的数据速率(Data rate)。
- 配置RF 的基本参数:Base Frequency,Channel Spacing,晶振频率等
- 切换至Continuous TX 选项卡。
- 选择调制和非调整。(Modulated)
- 选择数据格式。(Synchronous serial mode)
3.1.3 在 SmartRF Studio 查看相关的寄存器和值
勾选 Register View ,在右侧会显示相关的寄存器和对应的值。点击寄存器名前面的三角形,能够查看寄存器各个字段对应的值。
3.2 从 SmartRF Studio 导出寄存器配置
进入导出数据界面
在右侧寄存器信息的顶部点击 Register Export ,导出寄存器的配置信息
根据自己的需求,选择导出模板
3.3 根据导出来的寄存配置,编写程序
3.3.1 配置cc2500 进入单载波模式
typedef struct
{
uint8_t reg;
uint8_t val;
} registerSetting_t ;
static const registerSetting_t rf_cw_setting[] =
{
{CC2500_REG_IOCFG2, 0x0B},
{CC2500_REG_IOCFG0, 0x0C},
{CC2500_REG_PKTCTRL0, 0x12},
{CC2500_REG_FSCTRL1, 0x12},
{CC2500_REG_FREQ2, 0x5C},
{CC2500_REG_FREQ1, 0x4E},
{CC2500_REG_FREQ0, 0xC3},
{CC2500_REG_MDMCFG4, 0x2D},
{CC2500_REG_MDMCFG3, 0x3B},
{CC2500_REG_MDMCFG2, 0xF0},
{CC2500_REG_DEVIATN, 0x00},
{CC2500_REG_MCSM0, 0x18},
{CC2500_REG_FOCCFG, 0x1D},
{CC2500_REG_BSCFG, 0x1C},
{CC2500_REG_AGCCTRL2, 0xC7},
{CC2500_REG_AGCCTRL1, 0x00},
{CC2500_REG_AGCCTRL0, 0xB0},
{CC2500_REG_FREND1, 0xB6},
{CC2500_REG_FSCAL3, 0xEA},
{CC2500_REG_FSCAL1, 0x00},
{CC2500_REG_FSCAL0, 0x11},
};
void cc2500_config_for_sw_mode( void )
{
uint8_t i = 0;
for ( i = 0 ; i < sizeof( rf_cw_setting ) / sizeof( rf_cw_setting[0] ); i++ )
cc2500_write_reg( rf_cw_setting[i].reg, rf_cw_setting[i].val );
}
3.3.2 cc2500 进入发送模式,配置完成
cc2500_write_strobe( CC2500_STROBE_STX );