您好!
我正在使用7.40.00.77版 SimpleLink SDK 开发面向 CC1352的应用。 该应用的其中一种模式是在接收到特定串行命令时以指定时间发送 CW 音调。 我可以使用 CMD_TX_TEST 命令成功将 CC1352置于 CW 模式。 该器件需要退出 CW 模式以响应另一个串行命令。 我正在尝试使用 CMD_ABORT 停止 CMD_TX_TEST 操作、但它会继续返回 RF_StatCmdDoneError、而不会停止 CMD_TX_TEST 操作。 使用 CMD_PROP_RADIO_DIV_SETUP_PA 和 CMD_FS 命令可以正确配置 CC1352。 作为完整性检查、我尝试在器件配置后发出 CMD_ping 命令; 但是、该命令还会返回 RF_StatCmdDoneError。 我是否有配置错误? 或者是否有更好的方法来停止 CW 测试模式?
这是 CC1352初始化代码。
int32_t
cc1352_rf_init(void)
{
// Initialize default RF parameters.
RF_Params rf_params;
RF_Params_init(&rf_params);
if (pthread_mutex_init(&rf_lock,
NULL) != 0)
{
return -2;
}
// Open handle to radio with properties and sysconfig setup.
rf_handle = RF_open(&rfObject,
&RF_prop,
(RF_RadioSetup*)&RF_cmdPropRadioDivSetup,
&rf_params);
if (rf_handle == NULL)
{
return -1;
}
// Tune radio to default freq from sysconfig setup.
RF_runCmd(rf_handle,
(RF_Op*)&RF_cmdFs,
RF_PriorityNormal,
NULL,
0);
// Check radio is configured correctly.
if ((RF_cmdFs.status != DONE_OK) ||
(RF_cmdPropRadioDivSetup.status != PROP_DONE_OK))
{
return -3;
}
// Sanity check. CMD_PING also returns RF_StatCmdDoneError.
RF_Stat status = RF_runDirectCmd(rf_handle,
CMD_PING);
return 0;
}
以下是将 CC1352置于 CW 测试模式的代码。
int32_t
cc1352_rf_cw_tone(void)
{
RF_Handle *hdl = cc1352_rf_get_handle();
RF_cmdTxTest.config.bUseCw = 1;
if (hdl)
{
RF_postCmd(*hdl,
(RF_Op*)&RF_cmdTxTest,
RF_PriorityNormal,
NULL,
0);
cc1352_release_handle();
// Should return 2 (ACTIVE) if TX test mode started successfully.
return (int32_t)RF_cmdTxTest.status;
}
else
{
return -1;
}
}
以下是发出 CMD_ABORT 命令的代码。
int32_t
cc1352_rf_stop(void)
{
RF_Handle *hdl = cc1352_rf_get_handle();
if (hdl)
{
RF_Stat status = RF_runDirectCmd(*hdl,
CMD_ABORT);
//CMD_PING);
cc1352_release_handle();
return 0;
}
else
{
return -1;
}
}
谢谢。
杰夫