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.

[参考译文] CC2540:BTool v1.40.15、我们能否将一些用户数据写入 CC2540软件狗并在以后读取?

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/900733/cc2540-btool-v1-40-15-can-we-write-some-user-data-to-the-cc2540-dongle-and-read-it-later

器件型号:CC2540

在 CC2540软件狗中、是否有任何字段可用于存储 可通过 BTool 进行读取/写入的用户数据(16字节或更多字节)?  

谢谢

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

    您可以尝试使用 UTIL_NVWrite/UTIL_NVRead 来实现它。

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

    您好 YiKai、

    感谢您的回答。

    进一步的问题:我无法读取 NV 项。 操作码= 0xFE81、nvId = 0x20、nvDatalen = 0x0E (gapBondRec_t 的大小)。

    这些参数是否有任何问题?

    [1]: -11:29:34.902
    类型:0x01 (命令)
    -OpCode:0xFE81 (UTIL_NVRead)
    数据长度:0x02 (2)字节
    NvID:0x20 (32)
    NvDataLen:0x0E (14)
    转储(Tx):
    0000:01 81 FE 02 20 0E.... 。
    ----------------------------------------
    [2]: 11:29:34.918
    类型:0x04 (事件)
    -EventCode:0x00FF (事件)
    数据长度:0x06 (6)字节
    事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态:0x02 (2)(参数无效)
    操作码:0xFE81 (UTIL_NVRead)
    数据长度:0x00 (0)
    转储(Rx):
    0000:04 FF 06 7F 06 02 81 FE 00 ........
    ----------------------------------------

    此致、

    小牛城

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

    NVID=0x20为 GAP_Bond 保留。 您可以尝试使用客户 NV 项目-范围 0x80 - 0x8F。

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

    您好 YiKai、

    请告诉我如何设置参数以与客户 NV 数据配合使用? 例如,操作码= 0xFE81,nvId = 0x80,nvDatalen =?

    是否有描述客户 NV 数据的文档链接? 我正在使用 TI_BLE_Vendor_specific HCI_Guide_2.2.1、但无法从规范中找到这些信息。

    谢谢、

    小牛城

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

    你好、Xiaoxiong、

    请在 HCI_ext_app.c->processExtMsgUTIL 中查看 HCI_EXT_UTIL_NV_READ/HCI_EXT_UTIL_NV_WRITE。 如果遇到问题、可以在调试模式下运行 HostTest、并在 processExtMsg 中设置断点、并观察操作码提取以验证是否按预期发送命令。

    HCI_ext.h:

    // HCI 操作码的10位 OCF (操作码命令字段)进一步
    //分为两个子部分:
    //-子组(3位):
    //- 0 (LL)
    //- 1 (L2CAP)
    //- 2 (ATT)
    //- 3 (GATT)
    //- 4 (GAP)
    //- 5 (UTIL)
    //- 6 (保留)
    //- 7 (用户配置文件)
    //-命令(7位)或配置文件(7位) 如果子组值设置为
    //用户配置文件(即所有配置文件),则需要使用另一个八位位组来
    表示用户配置文件命令。
    //
    #define HCI_EXT_LL_SUBGRP 0x00
    #define HCI_EXT_L2CAP_SUBGRP 0x01
    #define HCI_EXT_ATT_SUBGRP 0x02
    #define HCI_EXT_GATT_SUBGRP 0x03
    #define HCI_EXT_GAP_SUBGRP 0x04
    #define HCI_EXT_UTIL_SUBGRP 0x05
    #define HCI_EXT_PROFILE_SUBGRP 0x07
    
    #define HCI_EXT_UTIL_RESERVED 0x00
    #define HCI_EXT_UTIL_NV_READ 0x01
    #define HCI_EXT_UTIL_NV_WRITE 0x02 

    请参阅  TI BLE HCI 供应商特定 HCI 指南中的第9.1节供应商特定命令:

    Util NV 读取 63 5 1 0xFE81  

    Util NV 写入 63 5 2 0xFE82  

    您决定 nvDatalen。  16字节应该正常。

    PS:SNV API 用于存储和读取设置/校准数据的细微调整。 SNV 页面的大小仅为2kB、因此实际上不建议在该存储器中存储大数组、因为 SNV 将被填满、 SNV 驱动器通常必须切换页面并擦除上一页、这会消耗大量电力、还会中断 BLE 连接。