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.

[参考译文] CC2640R2L:SDK 迁移 v1.50.00.58→v5.30.00.03后广播停止

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1397003/cc2640r2l-advertisement-stops-after-sdk-migration-v1-50-00-58-v5-30-00-03

器件型号:CC2640R2L
Thread 中讨论的其他器件:CC2640

工具与软件:

您好!

我们将根据以下 迁移指南将 SDK 从 v1.50.00.58迁移到 v5.30.00.03

升级 SDK 后、我们遇到 CC2640在大约15分钟后停止广播的问题。 我们 过去也报告过一些问题、但未能找到解决方案。 请注意、使用旧的 SDK、我们就不会遇到同样的问题、因为现场已经有五万个器件了。

当器件停止广播时、我们注意到电源模块停止发送由应用程序使用 Power_registerNotify 注册的通知。 但是、主机处理器和 cc2640之间的 SPI 通信会按预期工作。 我们还尝试了使用 ROV 进行调试、但未在那里看到任何内容。

我们的器件使用 SPI 传输与主机处理器进行通信。 我们还注意到、如果我们注释掉 POWER_registerNotify 该器件在从待机事件唤醒后注册 spiPostNotify 回调、然后器件在无限期时间内继续广播。

您能不能就如何调试/解决此问题进一步帮助/指导我们?

请在下面找到 器件停止广播前最后一次电源状态的日志。

#020875 [ 899.770 ]信息:(../Driver_SPI/SPICC26XXDMA.c:1118) SPI:(@40000000) CPU 频率:48000000;SPI 频率至5000000
#020876 [ 899.770 ]信息:(../Startup/main.c :411)电源事件8.
#020877 [ 899.770 ]信息:(../Startup/main.c:411)电源事件16.
#020878 [ 899.815 ] info :(../Startup/main.c :411) Power Event 1.
#020879 [ 899.983 ]信息:(./Startup/main.c :411)电源事件4.
#020880 [ 899.983 ] info:(../Driver_SPI/SPICC26XXDMA.c:1118) SPI:(@40000000) CPU freq:48000000;SPI freq 至5000000
#020881 [ 899.983 ]信息:(./Startup/main.c :411)电源事件8.
#020882 [ 899.984 ]信息:(./Startup/main.c :411)电源事件16.
#020883 [ 900.028 ] INFO:(../Startup/main.c:411) Power Event 1.
#020884 [ 900.199 ]信息:(./Startup/main.c :411)电源事件4.
#020885 [ 900.199 ] info:(../Driver_SPI/SPICC26XXDMA.c:1118) SPI:(@40000000) CPU freq:48000000;SPI freq 至5000000
#020886 [ 900.199 ]信息:(./Startup/main.c :411)电源事件8.


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

    Bhavesh 您好!

    感谢您的咨询。

    我想问一下、这是不是一个开箱即用的示例? 您是否仍在使用 simple_np 项目? 您做了哪些修改?

    我从上一篇文章中看到、取得了一些进展、"完成此更改后、器件可以广播 TxRx 数据不会停止!" 如果没有发生什么变化、情况是否仍然如此?

    BR、

    David。

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

    您好、David、感谢您回来。

    这显然不是开箱即用的示例、因为我们自开发此项目以来已有很长时间。 我们从 SDK v1.50.00.58开始、这里有一个开箱即用示例。 在上一篇文章中尝试的是更多的一个实验性的改变。 我们强制射频功率限制使其不能进入拼接电源状态。 这不是一个可行的解决方案。

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

    Bhavesh 您好!

    我将更详细地介绍这一点。 从您之前共享的事件中、我可以看到以下从待机策略中有意义的顺序:

    1. 电源事件8:器件正在从待机状态唤醒(在唤醒期间、在重新启用中断之后、会稍后发送此事件)。
    2. 电源事件16:高频(HF)时钟源已切换至 XOSC_HF。
    3. 电源事件1:器件正在进入待机睡眠状态。
    4. 电源事件4:器件正在从待机睡眠状态唤醒。

    您能否确认在 Adv is Power Event 8之前您获得的最后一个事件? 如果是这种情况、那么在切换到我正在跟踪的 XOSC_HF (PowerCC26XX_switchXOSC_HF)时会出现问题。 我想问您是否使用定制电路板、如果是这种情况(我假设它正在考虑前面的答案)、您能否评估当您从 SDK 中刷写其中一个开箱即用示例时是否也会发生同样的问题(广告在一段时间后结束)?

    BR、

    David。

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

    尊敬的 David:

    广播与开箱即用示例 simple_np 一起使用。 为了向所提供的信息中添加更多内容、如果我们注释掉 transportWrite、那么器件也会无限期广播。
    器件始终在启动后900秒内停止广播。
    最后一个事件确实是电源事件8。 我们还怀疑时钟切换问题。  每次切换时、我们都会在函数 configureXOSCHF 中添加更多日志。 请看一下

    #060069 [ 899.750 ]信息:(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1395)关闭 OSC_XOSC_HF
    #060070 [ 899.821 ] info:(../Startup/main.c :411) Power Event 1.
    #060071 [ 899.854 ] info:(../Startup/main.c :411) Power Event 4.
    #060072 [ 899.899.854 ] info:(../Driver_SPI/SPICC26XXDMA.c:1118) SPI:(@40000000) CPU freq:48000000;SPI freq 至5000000
    #060073 [ 899.854 ] INFO :(../Startup/main.c :411) Power Event 8.
    #060074 [ 899.854 ]信息:(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1367)使用 OSC_XOSC_HF
    #060075 [ 899.855 ] info:(../Startup/main.c :411) Power Event 16.
    #060076 [ 899.858 ]信息:(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1395)关闭 OSC_XOSC_HF
    #060077 [ 899.929 ] info:(../Startup/main.c :411) Power Event 1.
    #060078 [ 899.960 ] info:(../Startup/main.c :411) Power Event 4.
    #060079 [ 899.960 ] info:(../Driver_SPI/SPICC26XXDMA.c:1118) SPI:(@40000000) CPU freq:48000000;SPI freq 至5000000
    #060080 [ 899.960 ] info:(../Startup/main.c :411) Power Event 8.
    #060081 [ 899.960 ]信息:(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1367)使用 OSC_XOSC_HF
    #060082 [ 899.961 ] info:(../Startup/main.c :411) Power Event 16.
    #060083 [ 899.964 ]信息:(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1395)关闭 OSC_XOSC_HF
    #060084 [ 900.035 ] info :(../Startup/main.c:411) Power Event 1.
    #060085 [ 900.069 ] info :(../Startup/main.c :411) Power Event 4.
    #060086 [ 900.069 ] info:(../Driver_SPI/SPICC26XXDMA.c:1118) SPI:(@40000000) CPU freq:48000000;SPI freq 至5000000
    #060087 [ 900.069 ] INFO :(../Startup/main.c :411) Power Event 8.
    #060088 [ 900.069 ]信息:(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1367)使用 OSC_XOSC_HF
    #060089 [ 900.074 ] INFO :(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1395) Turn off OSC_XOSC_HF
    #060090 [ 900.173 ]信息:(/home/bhavesh/ti/simplelink_cc2640r2_sdk_5_30_00_03/source/ti/drivers/power/PowerCC26XX.c :1367)使用 OSC_XOSC_HF

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

    Bhavesh 您好!

    您是否有 TI Launchpad 来尝试重现此问题? 我假设这是一个定制电路板、对吗?

    BR、

    David。

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

    大家好、David、这的确是一款定制电路板。 我们可以尝试使用我们的代码在 TI Launchpad 上重现此错误。

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

    Bhavesh 您好!

    好的、请告诉我 TI launchpad 上的结果是什么。

    BR、

    David。

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

    大卫、你好吗? 您是否有机会了解此问题? 是的、我们也会在 LaunchPad 上重现。

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

    Bhavesh 您好!

    感谢您的确认。 我不必尝试在我这边重新使用 LaunchPad。

    您提到了从1.50到5.30的迁移、您是直接迁移到5.30还是使用每个迁移步骤(1.5 -> 2.2、然后是2.2 -> 2.3等)?

    此外、您是否设置了任何新的周期性事件?

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

    尊敬的 David:

    感谢您的帮助。 我们发现代码中的错误导致 cc2640在执行 SPI 写入后停止广播。 NPI 传输层中的 SPI_TRANSACTION 缓冲区位于堆栈中、而该堆栈稍后会安排 DMA 传输。 这部分代码已由我们修改。 甚至是在使用旧 SDK 时、我们也感到惊讶。