This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2642R:HCI_EXT_ModemTestTxCmd ()问题

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/671921/cc2642r-hci_ext_modemtesttxcmd-issue

器件型号:CC2642R

当我尝试进入其中一种无线电测试模式时、我的应用似乎正在脱离电源轨。 我使用 的 HCI_EXT_ModemTestTxCmd ()调用与我们的 R2F 应用中完全相同、这没有任何问题、并以请求的频率开始传输。 如果用户请求测试模式,我会检查 BLE 连接是否处于活动状态,并在必要时将其关闭,然后禁用广播,最后会调用 HCI_EXT_ModemTestTxCmd ():

如果(已连接)
{
Rval = GAP_TerminateLinkReq (CONNNANDLE_ALL、0);
log (log_console_level、"测试模式的连接关闭:%d\n"、rval);
//connected = 0;
}

rval = GapAdv_disable (advHandleLegacy);
log (log_console_level、"GapAdv_disable:广播被禁用:%d\n"、rval);

HCI_ret = HCI_EXT_SetTxPowerCmd (HCI_EXT_TX_POWER_0_DBM);
log (log_console_level、"Tx 功率设置为0dBm、0x%x\n"、HCI_ret);

IF (testModeCmd >= eTEST_MODE_CW_2402MHz_0dBm &&
testModeCmd <= eTEST_MODE_CW_2480MHz_0dBm)
{
HCI_EXT_ModemTestTxCmd (HCI_EXT_TX_UNMODEG_CARRIER、
testChannelIdxLookup [testModeCmd - eTEST_MODE_CW_2402MHz_0dBm]);
}
否则、如果(testModeCmd >= eTEST_MODE_2402MHz_0dBm &&
testModeCmd <= eTEST_MOD_2480MHz_0dBm)
{
HCI_EXT_ModemTestTxCmd (HCI_EXT_TX_TANDEG_CARRIER、
testChannelIdxLookup [testModeCmd - eTEST_MODE_2402MHz_0dBm]);
}
否则、如果(testModeCmd == eTEST_MODE_TX_Hop)
{
HCI_EXT_ModemHopTestTxCmd ();
} 

看门狗跳闸、我的应用程序复位。 在发生违规的 HCI_EXT_ModemTestTxCmd ()调用后、我禁用了看门狗并停止了处理器、它位于 ROM_init.c 中的 ROM_Spinlock ()处

是否有关于如何进一步调试的建议? 上述代码与我们的 R2F 应用之间的唯一区别是使用 GAPRole API 来关闭连接和禁用广播。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    约书亚、您好!

    我也在我身边确认了这种行为。 让我在内部与开发团队讨论、并在我有更多信息时进行更新。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    约书亚、您好!

    对于 BLE5堆栈、您必须使用"增强型"测试命令(HCI_EXT_EnhancedModemTestTxCmd ())。 有关详细信息、请参阅 BLE Stack HCI API 文档。

    谢谢、
    Fredrik
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供信息 Fredrik。 从 BLE5堆栈文档中删除导致问题的旧 API 似乎是一种不错的做法、以避免混淆。 这假设没有一些堆栈配置、它们仍然有效...

    增强型命令用于进入测试模式。 但是,当我调用 HCI_EXT_EndModemTestCmd ()尝试结束测试时,也会出现同样的问题。 我们可以解决这个问题、因为这些模式很少使用、但我想知道是否有解决方案? 我看不到"HCI_EXT_EnhancedEndModemTestCmd ()" API、未来是否会有一个 API?

    谢谢、
    Josh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Josh、您好!

    一些值得报道的好消息。 经过进一步调查、您在本地 SIMPLELINK-CC26x2-SDK v1.60安装中看到的问题可以通过修改\source\ti\ble5stack\rom\r2\rom_init.c 来解决 请参阅第530和539行上的 ROM_Flash_JT[]条目:

    #if defined (CTRL_V50_CONFIG)
    (uint32) LL_EXT_EndModemTest、 // rom_JT_offset[150]
    #else //!CTRL_V50_config
    (uint32) rom_Spinlock、
    #endif // CTRL_V50_config
    (uint32) LL_EXT_ExtendRfRange、 // ROM_JT_OFFSET[151]
    (UINT32) LL_EXT_GetConnInfo、 // ROM_JT_OFFSET[152]
    (uint32) LL_EXT_HaltDuringRf、 // ROM_JT_OFFSET[153]
    (uint32) LL_EXT_MapPmIoPort、 // ROM_JT_OFFSET[154]
    #IF 定义(CTRL_V50_CONFIG)
    (uint32) LL_EXT_ModemHopTestTx、 // ROM_JT_OFFSET[155]
    (UINT32) LL_EXT_ModemTestRx、 // ROM_JT_OFFSET[156]
    (uint32) LL_EXT_ModemTestTx、 // ROM_JT_OFFSET[157] 

    在带有#if !defined (CTRL_V50_CONFIG)的行中、删除"!" 这样它们就像上面列出的那样、 并且在定义 CTRL_V50_CONFIG 时编译相应的表条目(适用于 ble5stack)

    此问题已在暂定于第二季度初发布的下一个 SDK 中得到纠正。 在是否使用增强型与传统 ModemTestTX API 方面、最好使用将来的增强型变体。 这两个 API 目前都存在、但增强版本是旧版的超集。

    祝你一切顺利

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您再次与我取得 JXS。 我进行了建议的更改、一切工作正常!