This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TI cc2540 Central 连接 nRF51822 Peripheral 无法使能Notify!

Other Parts Discussed in Thread: CC2540, CC2541

cc2540 协议栈版本:BLE-CC254x-1.3.2

这里有两个问题:

1:用cc2540 Central,搜索到51822 Peripheral 并建立连接,

但是协议栈没有进入simpleBLECentralEventCB( );下面的GAP_LINK_PARAM_UPDATE_EVENT: 事件;

用cc2540 Central,连接cc2541 Peripheral 时,能触发GAP_LINK_PARAM_UPDATE_EVENT: 事件;

程序就是在GAP_LINK_PARAM_UPDATE_EVENT: 里面使能Peripheral 的Notify

问题1:触发GAP_LINK_PARAM_UPDATE_EVENT: 事件,是TI BLE协议栈才有的,还是蓝牙标准要求的,任意一款BLE Peripheral都能触发?

2:用cc2540 Central,搜索到51822 Peripheral 并建立连接,可以通过UUID:0xFFF6进行读写操作,但是无法使能Notify

51822 Peripheral 的UUID、handle:0x000B,使能Notice用的 handle:0x000C确认无误!

重点:我用BTool,往0x000C写入0x0001可以使能51822 Peripheral 的Notice。

用IOS蓝牙软件 LightBlue 也可以使能51822 Peripheral 的Notice。

但是用cc2540 Central的工程写无法使能

代码如下:

attWriteReq_t AttReq;
uint8 ValueBuf[2];

AttReq.handle = (simpleBLECharHd6+1);//0x0036
AttReq.len = 2;
AttReq.sig = 0;
AttReq.cmd = 0;
AttReq.value[0]=LO_UINT16(GATT_CLIENT_CFG_NOTIFY); //0x0001为开notify
AttReq.value[1]=HI_UINT16(GATT_CLIENT_CFG_NOTIFY);
// ValueBuf[0] = 0x01;
// ValueBuf[1] = 0x00;
// osal_memcpy(AttReq.value,ValueBuf,1);
GATT_WriteCharValue( 0, &AttReq, simpleBLETaskId );

问题2:我改怎么实现在cc2540 Central 上使能51822 Peripheral 的Notice。


附上几张图协助分析:

图1:51822 Peripheral的服务

 图2:cc2541Peripheral的服务