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.

[参考译文] CC2652R:CC2652是否可以连续进行 BLE 扫描?

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1465955/cc2652r-could-cc2652-do-ble-scan-continuously

器件型号:CC2652R

工具与软件:

SDK 版本: 7.40.00.77

#!/bin/sh
#/usr/bin/blescan.sh 
tty="$(uci -q get tisbl.tisbl.tty)"
[ -z "$tty" ] && tty='/dev/ttyMSM1'
exec 100>"/var/lock/ble.lock"
flock 100

MAX_COUNT=20
count=1

com-wr.sh "$tty" 3 "\x01\x1D\xFC\x01\x00" > /dev/null # this reset command delay time must >= 3, if small than 3, the following commands  will be something wrong
com-wr.sh "$tty" 1 "\x01\x00\xFE\x08\x02\x00\x00\x00\x00\x00\x00\x00" > /dev/null
com-wr.sh "$tty" 1 "\x01\x60\xFE\x04\x01\x00\x20\x00" > /dev/null
com-wr.sh "$tty" 1 "\x01\x60\xFE\x04\x01\x01\x20\x00" > /dev/null
com-wr.sh "$tty" 1 "\x01\x61\xFE\x02\x01\x02" > /dev/null
com-wr.sh "$tty" 1 "\x01\x61\xFE\x02\x01\x03" > /dev/null 
com-wr.sh "$tty" 1 "\x01\x61\xFE\x02\x01\x04" > /dev/null
com-wr.sh "$tty" 1 "\x01\x61\xFE\x02\x01\x05" > /dev/null 

while [ $count -le $MAX_COUNT ]
do
	com-wr.sh "$tty" 3 "\x01\x51\xFE\x06\x00\x00\x00\x04\x00\x02" | tee /tmp/blescan.data | ble-scan-rx-parser.sh
	com-wr.sh "$tty" 1 "\x01\x52\xFE\x00" > /dev/null

	count=$((count + 1))
done

exec 100>&-

下面随附的代码介绍了我们如何在每个扫描周期向 CC2652发送命令。

#!/bin/sh
# com-wr.sh tty time command parser
# example com-wr.sh /dev/ttyMSM1 1 "\x01\x1D\xFC\x01\x00" | hexdump.sh  --> send "\x01\x1D\xFC\x01\x00" to /dev/ttyMSM1 and then hexdump receive data until 100ms timeout
#command example "\x7E\x03\xD0\xAF und normaler Text" 
usleep 10000
tty=$1
time=$2
command=$3
parser=$4
stty -F $tty time $time 
exec 99< $tty
echo -en $command > $tty
cat $tty
exec 99<&-

下面 随附代码介绍了我们向 TTY 发送命令的方式

在当前情况下、是我们通过命令从 UART 接收到的数据  "\x01\x51\xFE\x06\x00\x00\x04\x00\x02"  有限制(约16条记录)。  

因此、我们称为命令   "\x01\x51\xFE\x06\x00\x00\x04\x00\x02" 荷电状态。

我们想知道是否有任何方法可以让 CC2652 连续扫描 BLE 信标。

然后、我们可以使用重复的 UART 数据读取、而不是每次都向 CC2652R 发送扫描相关命令。

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

    您好、Tony、

    感谢您的咨询。

    您能否详细介绍一下您运行命令的位置(在哪个工具中)? 应该可以进行连续 BLE 扫描。

    例如、可以使用 SDK 中的 host_test 应用程序和 BTool 来测试此应用程序。 培训材料:低功耗蓝牙基础知识(https://dev.ti.com/tirex/explore/node?node=A__AX8fD.bKB7yAgQmXFl2j4A__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST)

    BR、

    David。

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

    我们使用 Linux shell (主机上)通过 UART 向 CC2652发送命令。  

     

    以下是我们向 CC2652发送的命令:

    \x01\x1D\XFC\x01\x00                             HCI_EXT_ResetSystemCmd
    \x01\x00\xFE\x08\x02\x00\x00\x00\x00\x00\x00\x00      GAP_DeviceInit  
    \x01\x60\xFE\x04\x01\x00\x20\x00                   GapInit_setPhyParam
    \x01\x60\xFE\x04\x01\x01\x20\x00 GapInit_setPhyParam
    \x01\x61\xFE\x02\x01\x02 GapInit_getPhyParam
    \x01\x61\xFE\x02\x01\x03 GapInit_getPhyParam
    \x01\x61\xFE\x02\x01\x04 GapInit_getPhyParam
    \x01\x61\xFE\x02\x01\x05 GapInit_getPhyParam

     

    循环开始
    \x01\x51\xFE\x06\x00\x00\x00\x04\x00\x02 GapScan_enable
    \x01\x52\xFE\x00   GapScan_disable
    循环结束

     

    发送扫描命令后、我们将收到来自 UART 的二进制结果。

     

    这是我们当前的实施方案。

     

    不过、目前每次我们收到扫描结果时、最大结果都是16、我们需要定期发送扫描命令(GapScan_enable)。

     

    我们希望检查我们是否可以通过某种方法向 CC2652发送一条命令、这种方法可以连续进行 BLE 扫描、并且我们可以连续接收结果(通过管道形式)。

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

    您好、Tony、

    我建议使用 Btool 中的 HCI Tx 转储(在 SDK 中找到:\tools\ble5stack\btool)输出作为参考、然后查看将 duration 设置为0的函数 GapScan_enable。 您可以在其他主题中对您提到的接受列表主题执行相同的操作。

    请告诉我如何发展。

    BR、

    David。

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

    您好!

    很高兴听到事情有所改进。

    1. 您如何使用看门狗实例? 我建议查看此处的 API 文档: https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/7.40.00.77/exports/docs/drivers/doxygen/html/_watchdog_8h.html
    2. 您能否详细介绍一下"每个 BLE 记录只输出一次结果"的含义、是指这些报告? 在 BTool TX 信息中、我看不到扫描过程。
    3. 我假设显示的百分比值与正确的扫描结果数相关? 您正在执行主动扫描还是被动扫描(请参阅 GapScan_setPhyParams)? 对于最后一个、您不会考虑扫描响应/请求。 您还可以添加筛选器策略、以便例如仅考虑白名单中的设备。 白名单可以由之前已经与中央设备绑定的设备填充。
    4. 它们如何读取 RSSI 值?
    5. 下面我来收集一些关于 BLE + WIFI 共存的更多信息。 您是否有针对该 WiFi 路由器的特定配置?

    BR、

    David。

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

    您好!

    1. 看门狗时间用作恢复机制。 请与我分享一些有关您目前正在考虑使用它的案例的更多信息。
    2. 对于连续扫描、持续时间必须设置为0、如果不是、扫描将在持续时间 x ms 后停止(在您的情况下为500)。
    3. 好的。 但是、从控制器的角度来看(扫描时)、只能使用对等地址进行筛选。 关于扫描窗口和间隔、请查看此处的培训材料:扫描基础知识- https://dev.ti.com/tirex/explore/node?node=A__AeE0v3645AxQnabd1AT4cA__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST
    4. 他们是否在 WiFi 器件上运行了某种类型的 WIFI 和 BLE 共存? 信号可能会因干扰而受到损害。

    BR、

    David

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

    对于第2期和第3期、我们根据您的建议找到了一些解决方案。

    对于问题1、考虑到我们之前遇到 CC2652没有响应、我们决定添加一个看门狗、以在没有响应出现时重新启动固件。

    关于问题4和问题5、客户已向我们提供了 环境中另一个 AP 的 WiFi 2.4G 配置(如随附图像中所示)。 我们希望这能帮助您更好地了解 WiFi 和 BLE 干扰问题。








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

    您好!

    我正在与团队核实、以便收集更多有关这方面的信息。 我对配置的初步了解还不清楚。 您是否对该问题有新的状态? WiFi 打开时 RSSI 的降级有多糟糕?

    BR、

    David。