找回密码
 立即注册

微信扫码登录

查看: 86|回复: 8

[BLE SDK] tc321xl连接部分蓝牙从设备,为什么有的蓝牙从设备会配对失败呢?

[复制链接]

7

主题

12

回帖

61

积分

不屈白银

积分
61
发表于 3 天前 | 显示全部楼层 |阅读模式 来自 广东深圳
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: tc321x
SDK及版本: tc_ble_sdk-v4.0.2.1
你好,请问下,我现在用tc321x设备作为主设备,想要连接蓝牙从设备;
蓝牙从设备为从网上买的心率带和指拨设备;
当tc321x想要连接心率带的时候,会配对失败 [APP][SMP] paring fail;
当tc321x想要连接指拨的时候,可以配对成功 [APP][SMP] Security process done event:

为什么有的设备可以配对成功,有的设备配对不成功呢?
如果体现在telink sdk中,这个绑定配对的密码是由哪个函数接口来处理的呢?

额外再问一下,为什么有的蓝牙从设备绑定的时候,只要点配对就可以了,不用输入配对码;
而有的蓝牙从设备绑定的时候,点了配对需要输入配对pin码呢?
这两个步骤是什么函数接口处理的?
就比如,如果这时蓝牙从设备要求我输入一个密码,这个输入的pin码是由哪个函数接口调用处理的?
把函数接口告诉我下,我结合上下文调用看看它的流程步骤是咋样的;

谢谢;

0

主题

9

回帖

48

积分

英勇黄铜

积分
48
发表于 3 天前 | 显示全部楼层 来自 上海
你好:
      1. 首先,BLE 配对分为三个阶段——配对特性交换、密钥生成阶段和密钥分发;
      2. 不同设备绑定时,配对和配对码不同的问题,取决于配对特性交换阶段交换的输入输出能力和是否存在 OOB,逻辑如下图,tc_ble_sdk 可以使用 blc_smp_setSecurityParameters API 来控制当前设备的 OOB 和 IO Capabilities,输入的pin码 可以通过 blc_smp_setDefaultPinCode、blc_smp_setAclPeripheralPinCode 等 API 来设置当前设备的 pincode

image.png image.png image.png image.png

      3. 至于配对失败问题,可能由于支持的配对方式不同、配对时间较长等原因导致失败,可以把对应的错误码发给我们,我们可以做初步分析,但进一步的问题,可能需要抓包分析。

0

主题

9

回帖

48

积分

英勇黄铜

积分
48
发表于 3 天前 | 显示全部楼层 来自 上海
此外,tc_ble_sdk/feature_test/feature_smp 中也提供了相应的例程供参考。

7

主题

12

回帖

61

积分

不屈白银

积分
61
 楼主| 发表于 3 天前 | 显示全部楼层 来自 广东深圳
本帖最后由 we_3043576536 于 2025-9-12 11:44 编辑
TL_TZH 发表于 2025-9-11 19:54
你好:
      1. 首先,BLE 配对分为三个阶段——配对特性交换、密钥生成阶段和密钥分发;
      2. 不同设 ...

好的,谢谢;

发现蓝牙从设备绑定失败,返回的错误码是05,是因为蓝牙从设备心率传感器是不支持绑定的设备;只要连接后订阅即可收到心率传感器数据;

所以现在的问题是
1  如何只保留连接流程,把tc321x的acl_conne_demo中的绑定流程去掉呢?
   (tc321x作为central需要连接多个pheriph,指拨外设需要加密绑定流程,心率传感器不需要绑定流程)
2  tc321x作为master设备,在代码中如何订阅心率传感器uuid为2a37的notify属性呢?
    (怀疑可能是因为central没订阅,然后phriph没有上传数据)
3 当心率传感器uuid为0x2a37的notity属性订阅完之后,此时tc321x应该可以自动接收来自心率传感器的心率数据了,那么此时的心率数据应该从什么函数接口中取出呢?

十分感谢;

7

主题

12

回帖

61

积分

不屈白银

积分
61
 楼主| 发表于 前天 10:37 | 显示全部楼层 来自 广东深圳
TL_TZH 发表于 2025-9-11 19:54
你好:
      1. 首先,BLE 配对分为三个阶段——配对特性交换、密钥生成阶段和密钥分发;
      2. 不同设 ...

你好,再请教一个问题

目前我用BLE调试助手app,想要模拟从机设备跟tc321x通讯;
当使用蓝牙主机连接模拟的tc321x进行通讯时,返回错误码如下,请问这是为什么呢?

[APP][CMD] create connection success: 82 1e d7 5b 3d 72

[10:27:32.934]收←◆[APP][EVT] Connection complete event: 80 00 00 01 82 1e d7 5b 3d 72 19 00 00 00 90 01 00

[10:27:33.049]收←◆[APP][EVT] disconnect event: 80 00 3e

谢谢;

0

主题

9

回帖

48

积分

英勇黄铜

积分
48
发表于 前天 14:22 | 显示全部楼层 来自 上海
1. ACL_PERIPHR_SMP_ENABLE/ACL_CENTRAL_SMP_ENABLE 宏关闭即可
2. 可以使用 API  blc_gatt_pushWriteRequest 来订阅(实际是通知 peripheral 可以上传对应的信息),在 app_service_discovery 的末尾调用,但该 API 需要对应的 ATT Handle 而不是 UUID
PixPin_2025-09-12_14-19-30.jpg
3. 可以在 app_gatt_data_handler 里处理

0

主题

9

回帖

48

积分

英勇黄铜

积分
48
发表于 前天 14:29 | 显示全部楼层 来自 上海

0x3e 代表连接超时,即 Central 发送 CONNECT_IND 包后,有六次交互的机会,但在这六次的交互机会中都没有连接上 Periphr (对包失败),这是正常现象,可以多尝试几次。
image.png

7

主题

12

回帖

61

积分

不屈白银

积分
61
 楼主| 发表于 前天 15:30 | 显示全部楼层 来自 广东深圳
本帖最后由 we_3043576536 于 2025-9-12 16:27 编辑
TL_TZH 发表于 2025-9-12 14:22
1. ACL_PERIPHR_SMP_ENABLE/ACL_CENTRAL_SMP_ENABLE 宏关闭即可
2. 可以使用 API  blc_gatt_pushWriteReque ...

好的,谢谢;

再请问下,蓝牙从设备是其他厂家的心率传感器和踏频传感器,不是tc321x;那么这个 attHandle 我应该从哪里获取呢?
tc321x有提供获取蓝牙从设备attHandle的接口吗?

0

主题

9

回帖

48

积分

英勇黄铜

积分
48
发表于 前天 18:55 | 显示全部楼层 来自 上海
可以使用 blm_att_findHandleOfUuid128 或 blm_att_findHandleOfUuid16 根据 UUID 获取对应的 ATT  Handle。
微信图片_20250912184924_34_63.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-9-14 18:12 , Processed in 0.098379 second(s), 24 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表