STM32
直播中

张玲

7年用户 1264经验值
私信 关注
[问答]

BlueNRG-MS Central配对总是失败的原因?

手头有一个Wesu套件和 一个x-Nucleo-IDB05A1套件,需要验证x-Nucleo-IDB05A1 BlueNRG-MS做central 时的配对功能,结果发现BlueNRG-MS总是返回配对失败。
Wesu做peripheral,
x-Nucleo-IDB05A1端做Central,
两边都配置成固定PIN码即123456。
当我用安卓手机向Wesu发起配对请求,手机都可以配对成功。
被这个问题困扰很久,也仔细调试过Wesu 和 x-Nucleo-IDB05A1两端的代码。


请专业工程师指导一下,能否提供central侧的配对参考代码?

我的central代码是参考en.DM00141271_ProgrammingManual.pdf文档文字描述(非源代码)写的,也知道STM32CubeExpansion_BLE1_V2.7.0有central的参考例子(该central参考例子链接不加密也就没有配对)。也从ST下载了BlueNRG DK 2.0.1内含Profiles_Central,但是可惜已经在profile  framework做了封装无源码提供。



回帖(1)

陈存楼

2024-5-8 17:28:16
BlueNRG-MS中央设备配对失败的原因可能有很多,以下是一些建议和可能的解决方案:

1. 确保固件版本兼容:检查Wesu套件和x-Nucleo-IDB05A1套件的固件版本是否兼容。如果不兼容,尝试更新固件。

2. 检查硬件连接:确保Wesu套件和x-Nucleo-IDB05A1套件之间的硬件连接正确无误。

3. 检查PIN码:确保两个设备都使用相同的PIN码(在这个例子中是123456)。

4. 检查配对模式:确保Wesu套件设置为可发现模式,x-Nucleo-IDB05A1套件设置为中央模式。

5. 检查配对过程:确保在配对过程中没有中断或错误。

6. 检查日志和错误代码:查看Wesu套件和x-Nucleo-IDB05A1套件的日志,查找可能的错误代码或异常信息。

7. 参考官方示例代码:以下是x-Nucleo-IDB05A1套件作为中央设备时的配对参考代码:

```c
#include "BLE_Peripheral.h"

BLE_Peripheral blePeripheral;

void setup() {
  // 初始化BLE设备
  blePeripheral.begin();

  // 设置设备名称
  blePeripheral.setLocalName("X-NUCLEO-IDB05A1");

  // 设置PIN码
  blePeripheral.setPin("123456");

  // 设置配对模式
  blePeripheral.setPairMode(BLE_PAIR_MODE_PAIRABLE);

  // 开启广播
  blePeripheral.advertisementOn();

  Serial.println("Waiting for a connection...");
}

void loop() {
  // 检查是否有设备连接
  if (blePeripheral.isConnected()) {
    Serial.println("Connected");

    // 检查是否有数据接收
    if (blePeripheral.available()) {
      int len = blePeripheral.packetLength();
      int type = blePeripheral.read();
      int ch = blePeripheral.read();

      if (type == BLE_DISCONNECTED) {
        Serial.println("Disconnected");
      }
    }
  } else {
    // 检查是否有设备请求连接
    if (blePeripheral.isConnected() == false) {
      Serial.println("Not Connected");
    }
  }
}
```

请注意,这只是一个示例代码,您可能需要根据您的具体需求进行修改。

8. 如果问题仍然存在,建议联系ST官方技术支持或参考官方论坛以获取更多帮助。

希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分