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.

[参考译文] CC2650:低功耗传感器示例

Guru**** 2587365 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/910775/cc2650-low-power-sensor-example

器件型号:CC2650

您好!

是否有任何示例、其中外部中断器件仅在广播模式下唤醒并发送特定数据?  我已经使用了 simple_peripheral 示例、并且能够将器件置于待机模式并在发生外部中断时唤醒。 但是、该示例提供了可连接模式。

我只想在四个不同通道上发生外部中断时发送传感器数据一次、并将器件恢复睡眠模式。 简单的广播设备是否是正确的示例?  我如何每次更改广播数据?

谢谢

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

    我建议您使用 simple_broadcaster 来执行此操作。

    1.使用以下命令停止广播:

    uint8_t initial_advertising_enable = false;
    GAPRole_SetParameter (GAPROLE_advertise_enabled、sizeof (uint8_t)、
    初始广播启用(&P); 

    2.使用 以下命令更改广播数据 advertData:

    GAPRole_SetParameter (GAPROLE_adverted_data、sizeof (advertData)、advertData); 

    3.使用以下命令再次启用广播:

    uint8_t initial_advertising_enable = true;
    GAPRole_SetParameter (GAPROLE_advertise_enabled、sizeof (uint8_t)、
    初始广播启用(&P); 

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

    好的、可以尝试一下。 另一个问题:如何控制广播数据的次数? 如果我只想广播一次需要配置哪些参数、 如何配置以在不同的通道上传输该数据?

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

    我在 simple_Peripheral 示例中尝试了相同的方法、但它不会更新广播数据。

    我在回调函数之一中设置了后续操作

        #define ADV_MAX_LEN 31.
        #define ADVDATA_Manuf_DATA_IDX 5.
            uint8 i = 0;
            静态 uint8 advData = 0;

            advertData[i++]= 0x02;  //此数据的长度
            advertData[i++]= GAP_ADTYPE_FLAGS;
            advertData[i++]= DEFAULT_DISCOVERATE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED;

            //初始设置自定义用户数据
            advertData[i++]= ADV_MAX_LEN - I - 1;//此数据的长度
            advertData[i++]= GAP_ADTYPE_MANUFACTURER_SPECIFIC;//此数据的长度

            //使用自定义的 ADV 数据(即0x00、0x01、0x02等)填充剩余的数据
            对于(i = ADVDATA_Manuf_data_IDX;i < ADV_MAX_LEN;i++)
              advertData[i]= advData++;

            uint8 status1 = GAPRole_SetParameter (GAPROLE_advertise_data、sizeof (advertData)、advertData);

    我从这里得到了这一点:  但我的手机扫描仪上的原始数据与以前的数据相同。 我清除了历史记录并从 电话历史记录中删除了所有设备。

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

    有时、智能手机 BLE 会缓存广播数据、以便您可以尝试清除智能手机上的缓存或停止 BLE 并重新启动它、以查看是否可以更新广播数据。

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

    这与智能手机无关、但我正在更新引脚中断回调函数中的广播参数。 需要从 SimpleBLEPeripheral_taskFxn()更新广播数据。  现在、我将按预期更新广播包。

    但是、当我在智能手机上看到原始数据时、它包含 广播数据+扫描响应数据(如名称"SimpleBLEPeripheral")。 这是正常的吗? 我在 Android 上使用 BLE Scanner。

    在 simple_Peripheral 示例中、是否还有禁用连接模式的方法?

    谢谢

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

    我认为包含 广播数据+扫描响应数据(如名称"SimpleBLEPeripheral")是正常现象。

    2.您可以使用"GAPRole_SetParameter (GAPROLE_ADV_NONCONN_ENABLED、sizeof (uint8_t)、&advertEnabled);"而不是"GAPRole_SetParameter (GAPROLE_advertise_enabled、sizeof (uint8_t)、&connectEnabled);启用非广播表。