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 Zephyr BLE 外设支持状态以获取最少自定义 GATT 应用

Guru**** 2943030 points

Other Parts Discussed in Thread: CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1654229/cc2340r5-cc2340r5-zephyr-ble-peripheral-support-status-for-minimal-custom-gatt-app

器件型号: CC2340R5

我正在尝试  使用 TI 的 Zephyr 支持来确定 LP-EM-CC2340R5 低功耗蓝牙外设支持的当前实际状态。

我们有一个非常小的 Zephyr BLE 外设应用、该应用已在 Nordic Zephyr 目标上运行、因此我们希望使用与 CC2340R5 参考堆栈基线相同的应用。

该应用有意设置为超小规模、并使用标准 Zephyr 蓝牙/GATT API:

  • bt_enable(NULL)

  • bt_le_adv_start(...)

  • BT_GATT_SERVICE_DEFINE

  • BT_GATT_PRIMARY_SERVICE

  • BT_GATT_CHARACTERISTIC

  • BT_CONN_CB_DEFINE

GATT 数据库为:

  • 定制 128 位主要服务 UUID: 0000b100-0000-1000-8000-00805f9b34fb

  • 可读状态特性: 0000b101-0000-1000-8000-00805f9b34fb

  • 可写命令特性: 0000b102-0000-1000-8000-00805f9b34fb

中央交易也很简单:

  1. 连接到外设

  2. 执行有针对性的服务发现

  3. 执行目标特征发现

  4. 向命令特性写入一个字节

  5. 从 Status 特性读取一个字节

  6. 断开连接

  7. 重复进行功率测量

电流 prj.conf 最小:

CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y

CONFIG_BT_DEVICE_NAME="BlueJoule-GATT"
CONFIG_BT_DEVICE_APPEARANCE=0

CONFIG_BT_AUTO_PHY_UPDATE=n
CONFIG_BT_CTLR_PHY_2M=n
CONFIG_BT_CTLR_PHY_CODED=n
CONFIG_BT_DATA_LEN_UPDATE=n
CONFIG_BT_SMP=n
CONFIG_BT_SETTINGS=n
CONFIG_BT_GATT_CACHING=n

CONFIG_SERIAL=n
CONFIG_CONSOLE=n
CONFIG_PRINTK=n
CONFIG_LOG=n

在 Nordic 上、我们还将控制器 TX 功率设置为 0dBm、并将广播限制在信道 37 以简化监听器捕获、但这些并不是初始启动所必需的。

问题:

  1. TI 当前的 Zephyr 支持是否在 CC2340R5 上包含功能 BLE 外设模式

  2. 使用上述标准 Zephyr 蓝牙 API 的自定义 GATT 外设应用目前是否支持 LP-EM-CC2340R5?

  3. 今天应使用哪个存储库、分支/tag 和 SDK 版本?

  4. 什么是正确的 Zephyr 板目标? 是 lp_em_cc2340r5不是?

  5. zephyr/samples/bluetooth/peripheral 已知可在 LP-EM-CC2340R5 上运行吗?

  6. 对于最小 BLE 外设、建议的构建命令是什么?

  7. 推荐的闪存/调试流程是什么? 例如、我们是否应该使用 J-Link 和 west flash、CCS/XDS110 或其他流程?

  8. BLE 外设模式是否有必需或建议的 CC2340R5 特定 Kconfig 设置?

  9. 与 TI 本机 BLE5 栈相比有重要的限制、尤其是在 GATT 外设行为、连接稳定性、电源管理、RAM 使用、日志记录、 或控制器功能?

  10. 如果 Zephyr BLE 外设模式当前未就绪或不推荐用于 CC2340R5、TI 的本机 BLE5 堆栈是否是参考堆栈 BLE 外设基线的建议路径?

目标是不使用任何高级的 BLE 功能。 我们只需要一个极少的自定义 GATT 外设、用于完成用于功率测量的重复连接/发现/写入/读取/断开事务。

我可以附上完整的, main.c prj.conf 如果有帮助。

谢谢、

Bob(在我的 ChatGPT 助手的帮助下)

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

    您好!

    CC2340R5 完全满足您的需求。

    1.是的、我们在此器件上有功能 BLE 外设模式

    2.是的

    3.目前,我们的版本被标记为 EA for Early Access。 我们计划很快发布一个大版本、这将是第一个 GA(通用可用性)版本、这意味着我们的版本可立即投入生产。 我们正在等待 GA 版本完成、然后才开始为 Zephyr 上游贡献力量。 目前、在 CC2340R5 器件上运行 Zephyr 的建议方法是使用 TI 的 Zephyr 下游。 CC23xx 器件的最新分支是 v3.7.0-9.20.00。 建议您阅读我们 有关如何设置 Zephyr 下游的 SimpleLink Academy 指南 、以便开始使用。

    4.是的

    5.是的

    6. Build 命令与 BLE 外设无关,重要的是 prj.conf 和代码的内容。 如果您在 Nordic Targets 上的项目已经是一个几乎无法正常工作的 BLE 应用程序、则应以 CC2340R5 目标为基础进行构建。

    7.我们还有另一份 SimpleLink Academy 指南、介绍了如何 使用 XDS110 和 VSCode 刷写和调试 Zephyr 工程。 使用 JLink 也支持西闪存。 将 west 闪存与 XDS110 一起使用也是可行的、但它需要将 TI_OPENOCD_INSTALL_DIR 环境变量设置为 TI OpenOCD 可执行文件的路径(请参阅 Zephyr\boards\ti\LP_em_cc2340r5\board.cmake 文件)

    8.不是的、Zephyr 的神奇作用应该可以使您的项目在 CC2340R5 上正常运行、而不会对原始项目进行任何更改

    9.目前、与使用 FreeRTOS 的 SimpleLink SDK 实现相比、Zephyr SDK 实现占用的 RAM 略多一些。 除了 Zephyr 上不可用的信道探测之外、BLE 功能目前是相同的

    10.您应该能够使用 CC2340R5 在 Zephyr 上使用 BLE 而不会出现任何问题。 您可能面临的唯一问题是缺少 RAM、因为设备在 RAM 中受限(只有 34 KB)。 如果您发现自己处于缺少 RAM 的位置、则可以删除 prj.conf 中的某些功能并优化一些功能、或升级到 RAM 翻倍的 CC2340R53。

    此致、
    Lea

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

    尊敬的 Lea:

    感谢您的详细(和鼓励)答复!!!

    我能够让我的最小 BLE 外设程序运行——基本上是我已经在 nRF52 和 nRF54 上进行基准测试的程序

    一路上有几个“gotchas“-- python3.10、cmake3.x 等-- Zephyr (TI) 应该更清楚地记录…

    还有一些“较新“的符号常量(例如 BT_LE_ADV_OPT_CONN)在您的下游货叉中不受支持(没什么大不了的)...

    是的、RAM 空间是标准蓝牙/外设示例的问题;不得不删除一些东西

    您可能听说过 BlueJoule --我去年帮助开发和推广的标准 BLE 广告基准 (https://novelbits.io/bluejoule/)

    我们正在开始下一个基准测试的家庭,这是最小的外围连接.. (https://github.com/em-foundation/bluejoule-gatt/)

    我很快就会发布一份关于 CC2340R5 能效结果的报告--老实说、这可以在睡眠电流区域进行一些改进…

    具体而言、基准将在连接事务之间的 1 秒“休眠“、看到~7uA 范围内的电流让人有点惊讶

    我应该用于电源管理和/或 BLE 栈是否有一些 TI 特定的配置选项???

    我还将使用 SimpleLink SDK 完成 BlueJoule-GATT 基准测试的一个版本 — 我们将与 Zephyr 版本进行比较...

    最后、我成功将我的“微型“BLE 外设栈移植到 CC2340R5、该器件会消耗~8K 的代码!!!!!!!

    如我所说、CC2340R5 基准测试结果的早期报告即将发布

    [BIOS] bob

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

    您好 Bob!

    只是给几个指针:  

    -某些定义不存在的原因(例如 BT_LE_ADV_OPT_CONN)可能是因为我们仍在下游的 Zephyr 3.7.0 LTS 上运行。 Zephyr 4.X.X 版本中添加了一些定义。 我们计划在发布 GA 版本后开始升级到 Zephyr 4.4。

    -至于睡眠电流,在 CC2340R5 LaunchPad 板级文件中默认启用 CONFIG_PM=y。 如果您尚未移除 LaunchPad 上的外部闪存、则预计睡眠期间的电流消耗为 7uA、因为该闪存的电流消耗在 6 至 7uA 之间。 要移除外部闪存、您可以移除板上的电阻器 R25。 这应该可以让你达到电流消耗非常接近在我们的数据表广告: https://www.ti.com/lit/ds/swrs272f/swrs272f.pdf?ts = 1781184845995。 在睡眠模式下、 电流应达到约 0.74uA、在关断模式下电流应达到约 165nA。 如果您无法达到这些级别、请创建新主题或回复此主题、我们很乐意提供帮助。

    -有很多东西,你可以禁用/删除,以获得代码大小和 RAM 大小。 例如、如果不使用它、可通过添加 CONFIG_SERIAL=n 来禁用 UART

    此致、
    Lea