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.

[参考译文] CC2640R2F:在基于 CC2640R2F (RSM)的模块的电流消耗中发现一些异常

Guru**** 2610575 points
Other Parts Discussed in Thread: LAUNCHXL-CC2640R2, CC2640R2F, CC2640, CC2650, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1097317/cc2640r2f-some-anomalies-noticed-in-current-consumption-of-cc2640r2f-rsm-based-module

器件型号:CC2640R2F
主题中讨论的其他器件:LAUNCHXL-CC2640R2CC2640CC2650UNIFLASH

你(们)好

我们在硬件中使用来自无线电控制的 RC-CC2640-B 模块。  

我学习了其中的两个模块。  
我使用 TI 的简单外设示例对其中一个进行了编程、并修改了板级配置文件以反映 RSM 封装的较少引脚数。  
我们得到的电流消耗如下所示(~7mA 平均值)-  
我现在采用了另一个模块、并使用与上述相同的代码对其进行了刷写。 但是、电流消耗有很大不同、如下所示。  
10小时后、电流消耗增加、如下所示。
我们想知道为什么我们看到这种行为。  
我们衷心感谢您在这一问题上的支持。
谢谢
Tushar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tushar、

    我不确定 Radiocontrolli 是如何设计其模块的、因此我不一定要确定在其产品中使用我们的 SDK 项目是否需要任何特定的详细信息。 如果您尚未这样做、也许您可以联系他们、看看在将软件调整为新软件包时是否会考虑到任何其他方面。

    尽管如此,我想知道,为适应新的一揽子计划所做的修改是否正确。 您能否查看下面提供了执行此迁移的一些提示的参考?

    https://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_4_30_00_08/docs/blestack/ble_user_guide/html/ble-stack-3.x/custom-hardware.html#ti-provided-board-files

    另一个问题:simple_peripheral 是否与低功耗蓝牙中央设备正确通信? 我怀疑由于功耗非常不一致而未发生这种情况、但正如我之前提到的、该模块可能具有我不考虑的其他特性。

    如果我发现任何相关问题、我将尝试思考其他方面并报告。

    希望这对您有所帮助、

    拉斐尔

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

    你(们)好

    我确实联系了 Radiocontrolli、他们要求我们联系 TI 支持 、因为他们主要是硬件制造商。 我可以做的是、询问他们是否可以共享硬件原理图、我可以与您共享。

    正如您共享的链接中所述、我们创建了定制的特定于硬件的电路板文件。  但是、我们的顶级 board.c 和其他板级文件位于 ble5stack 目录中、而不是 blestack。 具体而言、我们遵循的步骤如下:

    1. 已修改 \source\ti\ble5stack\target\board.c
    2. 与参考文献中提到的不同、我没有看到任何 kit_type 文件
    3. 我们在 C:\ti\simplelink_cc2640r2_sdk_5_30_00_03\source\ti\ble5stack\boards\custom\custom 中定义了电路板文件。 特定文件为 Board.h、custom.c 和 CUSTOM.h
    4. 我们在项目选项文件"ble5_simple_peripheral_cc2640r2lp_app_FlashROM_StackLibrary.opt"中创建了用于定制的预定义符号

    是的、simple_peripheral 正在正确广播、我可以通过手机连接到它。

    谢谢

    Tushar

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

    Tushar、

    感谢您的更多见解。 我收到了该文件、并将查看该设计。 知道器件在电流消耗可变的情况下仍可正常工作、它可能指示特定的软件配置或导致寄生电流消耗(第二张图片)和随时间推移而增加(最后一张图片)的外部因素。

    此致、

    拉斐尔

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

    你(们)好

    是否有此问题的更新?

    谢谢、

    Tushar

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

    Tushar、

    感谢您重新发送文件。 该原理图看起来与我们的参考设计中的原理图非常相似、但由于缺少值或 PCB 图纸本身、我无法评估与器件型号或电路板上位置有关的任何偏差。 这对于直流/直流和电源路径尤其重要、因为它们会影响电流分布。

    话虽如此、由于当前配置文件的行为因代码的不同执行周期而异、我怀疑某些特定外设(ADC、SPI 等)正在被激活、并导致代码执行发生变化。 另一种可能的情况是、外部任何东西、例如连接调试探针、都可能由于泄漏增加而增加电流消耗。

    由于您提到应用程序在这种情况下正常运行、我认为这不是硬件引起的问题。 在这种情况下、我将通知软件团队中的某个人、以提供更多见解。

    此致、

    拉斐尔

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

    你(们)好

    我们一定会感谢软件团队对此提供的见解。 不过、我想提醒大家、我在 LAUNCHXL-CC2640R2上烧录了相同的代码、并观察了它在一段时间内的电流消耗行为、发现它完全正常(符合预期)、而且它正在进行广播、也可以连接到。 如果是软件问题、我本以为 LAUNCHXL 的行为与 Radio Controlli 模块的行为相同。 不过,我愿意接受建议。

    我将尝试为您获取器件型号/值和电路板布局。  

    此致、

    Tushar

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

    你(们)好

    我还无法从 Radio Controlli 获得响应。 您自己或软件团队是否有任何进一步的见解?

    此致、

    Tushar

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

    Radio Controlli 回复我说、他们无法提供 BOM 和 PCB 布局。 TI 是否可以与他们联系?

    此致、

    Tushar

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

    您好、Tushar、

    感谢您的耐心等待。 对于较长的响应时间表示歉意。 今天上午、我收到了您提出的问题的通知。

    我认为这将有助于在具有不同软件映像的模块上运行新的能耗测量。 目标是尝试消除软件的可能性、并可能确定硬件问题的根源。

    请尝试在器件上运行以下示例并测量能耗吗? 目标是确定哪些示例会导致能耗差异、哪些示例不会导致能耗差异。

    • 空示例(在中提供 \examples\rtos\CC2640R2_LAUNCHXL\drivers\empty)
    • 引脚关断(在中提供 \examples\rtos\CC2640R2_LAUNCHXL\drivers\pinShutdown)
    • uartecho 示例(在中提供 \examples\rtos\CC2640R2_LAUNCHXl\drivers\uartecho)
    • rfPacketTx 和 rfPacketRx 示例(在中提供 \examples\rtos\CC2640R2_LAUNCHXL\drivers\)
    • 适用于 BLE 堆栈的 simple_peripheral (在中提供 \examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral)

    除此之外、您是否有可能在其他几个模块上运行一些测试? 目标是确定高电流问题是否可在多个模块上重现。

    此致、

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

    您好 Clement

    我将逐一尝试这些示例、测量 Launchpad 以及无线电控制模块上的电流。  

    我之前尝试过多个模块、我发现在多个模块中重复出现了类似的问题、尽管电流并不总是相同。 如果您愿意、我也可以在多个模块上尝试上述示例。  

    此致、

    Tushar

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

    您好 Clement

    我尝试了您要求我提供的示例。 除了在编译时给我错误的 simple_peripheral (下面的屏幕截图)外、随附的是所有其他观察结果的屏幕截图。 我测试了两个模块。 总之、这些模块消耗的电流大于 LaunchPad。 其中一个模块消耗的电流大于另一个模块。  

    可从 https://www.dropbox.com/t/EW3eBqiBY8Gxh2aX 获取屏幕截图

    上图显示了编译 simple_peripheral 时的错误。

    -有刷

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

    您好、Tushar、

    如果在 simple_peripheral 中调用 Display_open(),则会打开 UART,从而增加基极电流消耗。 此外、调试修改后的简单外设并确保没有挂起。

    -kel

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

    您好、Tushar、

    您使用的模块使用 的是 CC2640FRSMR 而不是 CC2640R2F。

    https://shop.radiocontrolli.com/it/moduli-iot-texas-instruments/67-rc-cc2640-b.html

    -kel

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

    您好 Kel、我们不使用显示驱动程序、而是在选项文件 -Display_disable_all 中将其禁用。

    Tushar

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

    我们知道这些模块使用  CC2640FRSMR、 并已更改板级配置文件以减少引脚数。 我们还应该了解其他什么吗?

    谢谢。

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

    您好!

    请确保先构建堆栈库项目。

    此致、

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

    您好 Clement、我这样做了、但没有帮助。

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

    您好、Tushar、

    由于您使用 的是 CC2640FRSMR、因此应使用 BLE Stack 2.2.x 中的简单外设  

    https://www.ti.com/tool/BLE-STACK

    您使用的是 CC2640R2F SDK 中的简单外设。

    -kel

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

    尊敬的 Kel:

    我不知道  CC2640 型号有单独的堆栈可用。 让我尝试 一下、然后返回给您。

    谢谢、

    Tushar

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

    你(们)好、Kel

    您能告诉我  在使用 SDK 中的 simple_peripheral 代码设置广播时是否缺少一些内容。 我想它应该默认是广播、但实际上不是。 请参阅下面的 GAP 设置代码。

    GAP_SetParamValue(TGAP_CONN_PAUSE_PERIPHERAL, DEFAULT_CONN_PAUSE_PERIPHERAL);
    
      // Setup the GAP Peripheral Role Profile
      {
        // For all hardware platforms, device starts advertising upon initialization
        uint8_t initialAdvertEnable = TRUE;
    
        // By setting this to zero, the device will go into the waiting state after
        // being discoverable for 30.72 second, and will not being advertising again
        // until the enabler is set back to TRUE
        uint16_t advertOffTime = 0;
    
        uint8_t enableUpdateRequest = DEFAULT_ENABLE_UPDATE_REQUEST;
        uint16_t desiredMinInterval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;
        uint16_t desiredMaxInterval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;
        uint16_t desiredSlaveLatency = DEFAULT_DESIRED_SLAVE_LATENCY;
        uint16_t desiredConnTimeout = DEFAULT_DESIRED_CONN_TIMEOUT;
    
        // Set the GAP Role Parameters
        GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),
                             &initialAdvertEnable);
        GAPRole_SetParameter(GAPROLE_ADVERT_OFF_TIME, sizeof(uint16_t),
                             &advertOffTime);
    
        GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData),
                             scanRspData);
        GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData);
    
        GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t),
                             &enableUpdateRequest);
        GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t),
                             &desiredMinInterval);
        GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t),
                             &desiredMaxInterval);
        GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t),
                             &desiredSlaveLatency);
        GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t),
                             &desiredConnTimeout);
      }
    
      // Set the GAP Characteristics
      GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, attDeviceName);
    
      // Set advertising interval
      {
        uint16_t advInt = DEFAULT_ADVERTISING_INTERVAL;
    
        GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MIN, advInt);
        GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MAX, advInt);
        GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MIN, advInt);
        GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MAX, advInt);
      }
    

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

    您好、Tushar、

    对于 BLE Stack 2.2.x 中的简单外设、您需要先刷写栈十六进制文件、然后刷写应用十六进制文件。

    要让简单外设在定制板上工作、请在 CC2650_LAUNCHXL.c 中对此进行注释

    CC2650_LAUNCHXL.h 上的正确射频配置

    闪存栈十六进制和十六进制应用程序后、对其进行调试以确保没有挂起。 如果有挂起、请解决。

    -kel

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

    Kel、我按照您的建议对特定于电路板的.c 和.h 文件进行了更改。 然后、我使用 CCS 烧录了堆栈十六进制文件、然后使用十六进制文件烧录了应用十六进制文件、但我仍然看不到器件广播。  

    我也尝试过通过 uniflash 一个接一个地刷写十六进制文件、但没有任何帮助。 是否有一些设置可用于连续刷写两个十六进制文件?

    Tushar

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

    您好、Tushar、

    尝试使用 SmartRF Flash Programmer v1.0.0。 设置选项 Erase->Pages in Range、Program->Entire Source File。 如果它仍然没有广告你有一个闲逛的地方. 调试它并找到挂起。

    -kel

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

    克尔

     我应该将断点放置在代码中的哪个位置作为调试的起点?  开始调试时、程序似乎进入未知/自由运行状态、并且没有用于暂停的选项(灰显)、只有停止选项被启用。

    Tushar

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

    您好、Tushar、

    对于基于 CC2650/CC2640的项目、我使用 CCSv7.2。 在调试简单外设之前、我首先使用 SmartRF 闪存编程器2刷写堆栈十六进制文件和十六进制应用文件。 调试后,它应该会在 main()处中断,并且您应该能够调试步骤。 完成该调试步骤后,通过 SimpleBLEPeripheral_init()。

    您可以设置编译器优化零、以便每行调试一个步骤行。

    目标是使简单外设在您的定制板上运行、并能够使用智能手机应用程序查看其广播。

    -kel

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

    你(们)好、Kel

    我现在使用的是 CCS v7.2。 我首先使用 SmartRF 闪存移植器2版本1.8.2刷写了十六进制和十六进制应用程序。 然后返回到 CCS v7.2并开始调试、但控件在 main 中仍然没有停止!

    Tushar

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

    您好、Tushar、

    您能否使用 SmartRF Flash Programmer 2重试,其中包含 Erase->Pages in Range、Program->Entire source file 选项。

    -kel

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

    是的、这就是我所做的。  

    有两个观察结果-我看到的不是"范围内的页面"、而是"图像中的页面"。 此外、编程器将我们的板视为 CC2640R2F。 这些似乎可以吗?

    谢谢

    Tushar

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

    您好、Tushar、

    抱歉、它是图像中的页面。 如果 SmartRF 闪存编程器2检测到 CC2640R2F、则您的电路板上有 CC2640R2F。 其页面上的信息未更新。  

    RC-CC2640-B

    抱歉、您可以返回使用 CC2640R2F SDK 中的简单外设。 对于 CC640R2F 简单外设、只需对十六进制文件进行编程即可。

    -kel

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

    是的、我刚刚重新查看了他们的原理图、IC 标记为 CC2640R2。  

    您好  您对我先前分享的结果有什么意见/看法吗?

    谢谢

    Tushar

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

    您好、Tushar、

    查看您的 CC2640R2F 模块、它已经可以实现低功耗。 只有打开的 UART 端口才会增加基极电流消耗。 但首先、您需要确保您的简单外设在 CC2640R2F 模块中正常运行。

    如果您的另一个模块的行为不同、则可能存在问题。

    -kel

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

    Kel、

    有趣的是、相同的简单外设固件 可与 CC2640R2 Launchpad 完美配合(实现低电流消耗)。  似乎只有模块有问题。  

    Tushar

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

    您好、Tushar、

    我唯一能想到的是您的模块有问题、或者 CC2640R2F 是假的。 总之、最好评估其他供应商提供的其他 CC2640R2F 模块。

    此外、请确保正确设置与模块射频 前端和偏置 配置匹配的定义。

    -kel

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

    你(们)好、Kel

    定义设置正确。  模块 RFFE 是差分 模式外部偏置、因此我们将定义设置为 CC2650EM_4xD。

    您是否对任何其他模块供应商有建议?

    谢谢

    Tushar

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

    您好、Tushar、

    我在下面推荐这种方法。 我没有使用过它、因此我不知道它是否能够实现低功耗。

    https://www.lairdconnect.com/wireless-modules/bluetooth-modules/bluetooth-5-modules/sable-x-r2-bluetooth-module

    -kel