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.

[参考译文] CC2340R5:CC2340R5 NPI 握手 SRDY 未置为有效

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1581782/cc2340r5-cc2340r5-npi-handshake-srdy-not-asserting

器件型号: CC2340R5

我已使用没有握手的 host_test 示例成功进行测试、但自从添加 MRDY (DIO21) 和 SRDY (DIO8) GPIO 以来一直遇到问题。   

我需要添加 NPI_FLOW_CTRL 预定义符号并修改 npi_config.h 以指向正确的引脚。  

MRDY 由主机 MCU 置为有效、但 SRDY 绝不会置为有效。 调试时、会根据事件调用 MRDY 回调、但绝不会启用 SRDY。  

我仔细检查了硬件、并根据需要连接了所有内容。  
image.png

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

    您好 Kevin、

    感谢您的联系。 能否分享您正在使用的 SDK 版本? 此外、您对 host_test 应用程序进行了哪些修改? 是在 Launchpad 还是定制电路板上运行它?

    BR、

    David。

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

    您好、David:

    XDS110 LaunchPad。 CCS 20.2.0。


      


    此致、
    Kevin

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

    您好 Kevin、

    我指的是 SDK 版本。 我将使用最新版本 (9.12) 尝试使用主机测试应用程序重现问题、然后快速返回给您。

    BR、

    David。

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

    您好、David:

    9.12.0.19.

    此致、
    Kevin

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

    您好 Kevin、

    在 npi_tl.c 内已根据以下配置配置了引脚:

        GPIO_setConfig(MRDY_PIN, GPIO_CFG_INPUT_INTERNAL | GPIO_CFG_IN_INT_BOTH_EDGES | GPIO_CFG_PULL_UP_INTERNAL);
        GPIO_setConfig(SRDY_PIN, GPIO_CFG_OUTPUT_INTERNAL | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_HIGH);

    您能否使用原始配置和针脚 (19/8) 进行测试? 此外、您提到正在触发 NPITL_MRDYYPinHwiFxn (正常)、但要使 SRDY 生效、请在调试模式中检查是否 触发了 NPITL_handleMrdyEvent() 和/或特别的 NPITL_writeTL() 函数 、因为有调用 SRDY_ENABLE() 的位置。
    请告诉我。
    BR、
    David。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、David:

    我已经尝试了从 SRDY_ENABLE () 向后工作,就像你提到的。  未 调用 NPITL_handleMrdyEvent() 和 NPITL_writeTL() 函数。

    此致、
    Kevin

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

    您好 Kevin、

    您使用什么作为主机?正在运行什么操作? 如果您只修改了 host_test 应用、但项目中没有任何机密信息、能否与我共享以查看?

    BR、

    David。

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

    您好、David:

    我无法分享。

    我在 SRDY 与主机断开连接的情况下再次进行了测试、并获得了相同的结果。 这可以消除主机对 SRDY 信号的干扰。

    您可以尝试重现上述帖子中提到的问题吗?

    此致、
    Kevin

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

    您好 Kevin、

    对延迟深表歉意。 我们遇到了 e2e 门户方面的一些问题、目前应该修复。 我已经更详细地检查了 NPI 代码流。 以下是我迄今为止的见解。 您可能已经知道、外设或控制器都可以启动握手、在当前使用 NPI 流控制的开箱即用实现中、假设中央器件将启动事务、因此如果您没有主机、SRDY 不会生效。 使 SRDY 有效的两个函数是基于 MRDY 事件触发的:NPITL_handleMrdyEvent() 和 NPITL_writeTL()。 如前所述、MRDY GPIO 的基于双边沿触发的中断被正确触发 、然后调用 NPITL_MRDYYPinHwiFxn ()、因此在开始时 mrdy_state 为 1 时、 应调用 taskMrdyCB。 最新版本实际上指向 NPITASK_MRDYEventCB,这是在 NPITL_initTL() 内完成的操作的一部分。 这应该将 MRDY_ISR_EVENT_FLAG 设置为等于 NPITASK_MRDY_event 并发布事件和 appSem 信标 、这将恢复 NPITask_process () 的流程 — 由事件挂起和 appSem 信标挂起。 在最后一个主进程函数中、 如果确认了 MRDY 事件 (NPITASK_EVENTS & NPITASK_MRDY_EVENT)、我们最终到达 NPITL_handleMrdyEvent ()。 我看到的问题,我也希望你在你这边确认,程序是在 event_pend(syncEvent) 下的 NPITask_Process () 中挂起,即使事件已发布在 NPITask_MRDYEventCB 中。 我目前正在研究为什么 EVENT_POST 没有正确更新事件掩码。

    BR、

    David。  

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

    您好 Kevin、

    您能否请 在 npi_task.c 中的 free_rtos_NPITASK_ALL_events 中添加 NPITASK_MRDY_event

    如下所示:

    #define FREE_RTOS_NPITASK_ALL_EVENTS (NPITASK_TX_READY_EVENT | NPITASK_FRAME_RX_EVENT | NPITASK_TRANSMIT_DONE_EVENT | NPITASK_TRANSMIT_RX_EVENT | NPITASK_ICALL_EVENT | NPITASK_MRDY_EVENT)

    添加事件后:

    BR、

    David。

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

    您好、David:

    感谢您的更新和详细回答。 我可以确认 SRDY 现在置为有效、但 BLE 在未启用握手的情况下不会像之前那样进行响应。  


    此致、
    Kevin

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

    您好 Kevin、

    很高兴听到第一个问题已经解决。 您正在使用哪些命令以及如何配置中心?

    BR、

    David。