Hi,
目前在CC1310所提供的DEMO程序上(rfPacketRX),经过我的测试发现,从切换频率命令发出RF_postCmd(…,&RF_cmdFs,..)到射频解调器能够输出正确码流,至少需要花1.2ms的时间。对于一个良好的射频芯片来说,这个时间太长了,简直让人无法接受。所以我在探索一种更快的频率切换方法。
我在《CC13x0, CC26x0 SimpleLink™ Wireless MCU Technical Reference Manual》上面发现一条修改FS的立即命令。
23.3.3.2.18 CMD_MODIFY_FS: Set New Synth Frequency Without Recalibration
但是我使用后发现,这条命令似乎没起到作用。
所以有谁知道这条立即命令是怎么使用的吗?或者说有没有一种快速切换频率的方法?
我使用的代码如下:
struct __RFC_STRUCT rfc_CMD_MODIFY_FS_s {uint16_t commandNo;//!<The command ID number 0x0013uint16_t frequency;//!<The frequency in MHz to tune to, compensated for LO divider settinguint16_t fractFreq;//!<Fractional part of the frequency to tune to }; /* Request access to the radio */ rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams); /* Set the frequency */ RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, &callback, RF_EventRxEntryDone); /* Enter RX mode and stay forever in RX */ terminationReason = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropRx,RF_PriorityNormal, &callback,RF_EventRxEntryDone); while(1) {SoftDelay(256);/* Test No.3 Fail */RF_cancelCmd(rfHandle, terminationReason, 0);RF_pendCmd(rfHandle, terminationReason, RF_EventRxEntryDone);RF_cmdModifyFs.frequency = 868;RF_cmdModifyFs.fractFreq = 0;v1 = RF_runImmediateCmd(rfHandle, (uint32_t *)&RF_cmdModifyFs);terminationReason = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropRx,RF_PriorityNormal, &callback,RF_EventRxEntryDone);SoftDelay(256);RF_cancelCmd(rfHandle, terminationReason, 0);RF_pendCmd(rfHandle, terminationReason, RF_EventRxEntryDone);RF_cmdModifyFs.frequency = 869;RF_cmdModifyFs.fractFreq = 0;v1 = RF_runImmediateCmd(rfHandle, (uint32_t *)&RF_cmdModifyFs);terminationReason = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropRx,RF_PriorityNormal, &callback,RF_EventRxEntryDone); }
硬件:CC1310 LaunchPad。
Susan Yang:
请问您现在想达到什么目的?需要注意的是,设置频率之前需要先退出TX/RX状态
yusen fan:
回复 Susan Yang:
目的是提高射频切换频率的速度。比如我希望使用两个频点A 和 B ,我希望在100us的时间内从频点A切换到频点B.