【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。主机端也有对应从机的信号强度。