CC2541/CC2640 如何实现一主多从

本文介绍使用CC2541芯片实现蓝牙主设备与多个从设备连接的过程。主要内容包括:如何扫描并保存从机MAC地址;建立连接并保存连接句柄;利用句柄进行数据发送及特征值读写;以及断开连接的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先由于芯片自身问题导致CC2541 可以最多一主三从 ,CC2640可以一主八从。

 我们这里以CC2541为例子

1.扫描从机保存从机mac地址

//首先主机需要去扫描设备
GAPCentralRole_StartDiscovery( DEFAULT_DISCOVERY_MODE, DEFAULT_DISCOVERY_ACTIVE_SCAN, DEFAULT_DISCOVERY_WHITE_LIST )
//当扫描完成会进入
GAP_DEVICE_DISCOVERY_EVENT
//请查看
uint16 SimpleBLECentral_ProcessEvent( uint8 task_id, uint16 events ) 
{
   case GAP_DEVICE_DISCOVERY_EVENT:
      {
        // discovery complete
        simpleBLEScanning = FALSE;

        // if not filtering device discovery results based on service UUID
        if ( DEFAULT_DEV_DISC_BY_SVC_UUID == FALSE )
        {
          // Copy results
          simpleBLEScanRes = pEvent->discCmpl.numDevs;
          osal_memcpy( simpleBLEDevList, pEvent->discCmpl.pDevList,
                       (sizeof( gapDevRec_t ) * pEvent->discCmpl.numDevs) );
        }
}

2.建立链接,通过上面的程序我们可以把从机的信息保存下来并保存链接句柄

uint8 addrType;  
uint8 *peerAddr;  


simpleBLEScanIdx = devMacResult[0];  


// connect to current device in scan result   
peerAddr = simpleBLEDevList[simpleBLEScanIdx].addr;  
addrType = simpleBLEDevList[simpleBLEScanIdx].addrType;  


simpleBLEState = BLE_STATE_CONNECTING;  


GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,  
			DEFAULT_LINK_WHITE_LIST,  
			addrType, peerAddr );  
//在GAP_LINK_ESTABLISHED_EVENT事件中保存连接的handle:
MultiConnHandle[num]=ppEvent->linkCmpl.connectionHandle;
3.保存后的句柄可以用于数据的发送以及特征值的读写,连接的断开
attWriteReq_t req;  

req.handle = BLE_NotifyChar_Handle+1;  
req.len = 1;  
req.value[0] = 0x01;  
req.sig = 0;  
req.cmd = 0;  
status = GATT_WriteCharValue( MultiConnHandle[0], &req, simpleBLETaskId ); 
GAPCentralRole_TerminateLink( MultiConnHandle[0]);  
4.附上TI提供的多路连接的例程链接:


http://processors.wiki.ti.com/index.php/Cc2640_MultiRole_Demo
processors.wiki.ti.com/.../File:SimpleBLEMulti_patch.zip 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值