随笔 - 63  文章 - 1  评论 - 19  阅读 - 33239

【WCH蓝牙系列芯片】-基于CH582开发板—蓝牙一主多从连接

-------------------------------------------------------------------------------------------------------------------------------------

    在使用CH582蓝牙芯片的过程中,有MultiCentral:主机多连接例程,以582作为主机,主动扫描周围设备;连接至给定的多个从机设备地址,寻找自定义服务及特征,执行读写命令。
    在MultiCentral例程中,只写了三个从机的MAC地址,这次修改扩大到六个从机的MAC地址,主机一次性连接六个从机,并同时进行数据传输。在程序也需要将对应的参数进行修改。

在配置文件中将BLE_MEMHEAP_SIZE和CENTRAL_MAX_CONNECTION这两个参数都进行修改如图所示。
    由于芯片支持蓝牙连接数量来看,这与协议栈接口关系比较大,沁恒采用自研协议栈,多主多从可以灵活配置,当前根据实际应用及系统资源情况来设置。
     BLE_MEMHEAP_SIZE是指蓝牙协议栈使用的RAM大小,不小于6K ( 默认:(1024*6) ),当主机连接的蓝牙从机数量较多时,需要调整协议栈的大小,调整为10K。
     CENTRAL_MAX_CONNECTION是指最多可同时做多少主机角色,默认是3,这里需要改为6,这样可以做6个主机设备,连接6个从机设备。

第一步:在设备的地址列表中,添加六个从机的MAC地址

 第二步:在分别添加六个不同的写入从机设备的数据

 第三步:定义六个连接项常量

 第四步:在Central_ProcessEvent中,针对连接任务的处理部分,添加新的设备的连接调用;将任务的事件分发到连接3、连接4、连接5的处理函数中进行处理,并将处理结果返回,根据给定的task_id和连接列表centralConnList,它会将任务的事件传递给对应连接的处理函数,使得系统可以处理更多连接的事件。

第五步:根据连接0的是connect0_ProcessEvent处理的,进行增加连接1的是connect1_ProcessEvent处理的函数,直接复制connect0_ProcessEvent的程序,把CONNECT0_ITEM改成CONNECT1_ITEM

第六步:还需要添加centralConnIistStartDiscovery_1函数,只需要根据centralConnIistStartDiscovery_0进行复制,将CONNECT0_ITEM改成CONNECT1_ITEM。
用于在蓝牙中心设备上启动服务发现操作的功能,以便发现指定 UUID 的主服务。

第七步:在centralGATTDiscoveryEvent函数中,根据连接0的枚举增加连接1的枚举服务和其他连接的枚举服务。将连接0的枚举中的CONNECT0_ITEM改成CONNECT1_ITEM。

    通过接六个CH582设备,作为从机设备,再拿一个CH582作为主机设备,同时连接这个六个从机,通过串口去观察到,主机连接到从机设备1,就会一直发送AA,连接到从机设备2,就会一直发送BB,连接到从机设备3,就会一直发送CC;连接到从机设备4,就会一直发送DD;连接到从机设备5,就会一直发送EE;连接到从机设备6,就会一直发送FF。主机端也有对应从机的信号强度。

 

posted on   凡仕  阅读(895)  评论(7编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示