CH579 CH573 CH582 CH592 蓝牙主机(Central)实例应用讲解(一)

蓝牙主机(Central),顾名思义,就是一个蓝牙主设备,与从机(Peripheral)建立连接进行通信,可以接收从机通知,也可以给从机发送信息,通常Central和Peripheral结合使用。

一、官方例程Central的工作流程

从官方例程中,我们可以看到,Central的工作流程大致如下:

一、初始化完成开启扫描,

二、获取扫描信息

三、将扫描到的mac地址与目标连接mac地址作比较,扫描到目标mac就发起连接否则继续开启扫描

四、枚举服务进行通信测试

上图标注1:开始扫描
标注2将扫描获取的从机MAC地址加入扫描列表
标注3与目标连接MAC地址比较
标注4没有找到目标,重新开始扫描
标注5找到目标mac,发起连接

从上述描述中我们知道,要想与Peripheral建立连接,必须知道Peripheral的MAC地址,但实际应用中,我们很难知道Peripheral的MAC的地址,就算知道了,也很难输入Central中,毕竟大多数情况下,每个Peripheral的MAC地址是不同的,尤其是我们针对的是现有的产品时。

那么我们如何应对这种问题呢?

二、BLE广播数据中的AD Type详解

 一般来说,同一种产品,广播数据是相同的,甚至同一个厂家的同一种类型的产品,广播数据也会有一些共同的特征,我们可以通过研究产品的广播数据来解决上面提到的问题。所以我们先来了解一下广播数据中的AD Type。

AD Type是广播数据单元(AD Structure)的核心字段,用于定义后续数据(AD Data)的类型和格式。以下是常见AD Type的分类及说明:

一)、基础设备信息类

  1. Flags(类型=0x01)

    • 功能‌:标识设备的发现模式和兼容性,如是否支持BLE/BR/EDR双模。
    • 数据格式‌:1字节,各bit位含义:
      • Bit 0:LE有限发现模式(仅临时可连接)
      • Bit 1:LE普通发现模式(持续可连接)
      • Bit 2:不支持BR/EDR(纯BLE设备)
      • Bit 3-4:控制器/主机支持双模
    • 示例‌:0x06表示支持普通发现模式且不支持BR/EDR。
  2. 完整设备名称(类型=0x09)

    • 功能‌:声明设备完整名称(如Nordic_HRM)。
    • 数据格式‌:UTF-8字符串
### CH582蓝牙模块配对方法 CH582款基于32位RISC-V内核的低功耗蓝牙(BLE)MCU芯片,支持BLE 5.3协议[^2]。其内置了丰富的外设资源,适用于多种应用场景。以下是关于CH582蓝牙模块配对的具体方法: #### 1. 初始化设置 在进行蓝牙配对前,需确保CH582已正确初始化并进入可被发现的状态。这通常通过固件编程实现。可以通过以下方式配置: - 设置设备名称以便于识别。 - 启用广播功能,使其他设备能够扫描到该模块。 ```c // 示例代码:初始化蓝牙模块 void ble_init() { // 配置设备名称 ble_set_device_name("CH582_Device"); // 开启广播模式 ble_start_advertising(); } ``` 上述代码片段展示了如何通过API函数`ble_set_device_name()`和`ble_start_advertising()`完成基本的初始化操作[^3]。 --- #### 2. 进入配对状态 为了让CH582与其他蓝牙设备成功配对,需要将其置于配对模式下。具体步骤如下: - **广播数据配置**:定义广播包中的服务UUID和服务特性,便于目标设备识别。 - **PIN码设定**(如有必要):某些经典蓝牙场景可能需要输入固定PIN码,默认通常是`0000`或`1234`。 对于BLE设备而言,般无需手动输入PIN码,而是依赖安全连接机制自动建立信任关系。 --- #### 3. 手动触发配对过程 如果使用手机或其他外部设备作为主控端,则可通过以下方式进行配对: - 使用蓝牙扫描工具找到名为“CH582_Device”的设备。 - 点击连接按钮发起请求。 - 如果存在身份验证需求,按照提示确认配对信息即可完成绑定。 值得注意的是,在实际开发过程中,可以利用官方SDK提供的接口简化这流程。 --- #### 4. 测试通信稳定性 旦配对成功后,建议执行简单的读写测试以验证链路质量。例如发送段字符串消息或者交换传感器采集的数据样本。 ```python import bluetooth # 创建客户端套接字对象 sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) # 尝试连接至远程地址上的指定通道号 target_address = "XX:XX:XX:XX:XX:XX" port = 1 sock.connect((target_address, port)) # 发送条测试命令给对方接收处理 test_message = b"Hello from Python!" sock.send(test_message) # 关闭链接释放资源 sock.close() ``` 此脚本演示了个基础的Python程序用于向特定MAC地址的目标机器传递短文本信号[^1]。 --- ### 注意事项 - 确认硬件焊接无误以及供电电压稳定适配。 - 若长时间无法正常工作,请检查天线设计是否合理匹配频率范围。 - 更新最新版本驱动程序有助于解决潜在兼容性问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的元子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值