微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640 无法配对、绑定

CC2640 无法配对、绑定

时间:10-02 整理:3721RD 点击:

CC2640绑定的程序,设置如下: 

 // Setup the GAP Bond Manager  

{    

uint32_t passkey = 0; // passkey "000000"    

uint8_t pairMode = GAPBOND_PAIRING_MODE_INITIATE;    

 uint8_t mitm = TRUE;    

 uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;    

uint8_t bonding = TRUE;

 GAPBondMgr_SetParameter(GAPBOND_DEFAULT_PASSCODE, sizeof(uint32_t),  &passkey);

 GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode);    

GAPBondMgr_SetParameter(GAPBOND_MITM_PROTECTION, sizeof(uint8_t), &mitm);    

GAPBondMgr_SetParameter(GAPBOND_IO_CAPABILITIES, sizeof(uint8_t), &ioCap);    

GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bonding);   }

 

启动程序,执行配对的时候,函数没有执行回调函数。

仿真时,发现函数可以进入 GAP_SLAVE_REQUESTED_SECURITY_EVENT事件,但是从设备没有进入回调函数,主设备也没有进入回调函数。

求大神指点一下。

 

ye,

你的主设备是什么?有没有拿手机测试过?

Yan:

      你好,我用手机测试过,同样无法进入绑定函数。

ye,

stack工程里面的buildConfig.opt里面的-DGAP_BOND_MGR有打开吗?

YAN:

谢谢你的回答。

的确没有打开。

我打开了,编译报错:

Fatal Error[Pe035]: #error directive: "Bond Manager cannot be used since NO_OSAL_SNV used! Disable in buildConfig.opt" C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\Profiles\Roles\gapbondmgr.c 43

我把OSAL_SNV=0 注销掉后,报错:

unable to allocate space for sections/blocks with a total estimated minimum size of 0xfb3f bytes (max align 0x4) in <[0x0000e000-0x0001efff]> (total uncommitted space 0xefd0).

请问,我改如何修改?

ye,

你用的是哪个工程?

bond需要SNV的空间来保存背对信息,你再看一下stack工程的options里面preprocessor 下关于SNV的宏定义。

没有相关的宏定义,该如何定义?

我的宏定义如下:

USE_ICALL

 FLASH_ROM_BUILD

 xPOWER_SAVING

 INCLUDE_AES_DECRYPT

xPM_DISABLE_PWRDOWN

xTESTMODES

xTEST_BLEBOARD

OSAL_CBTIMER_NUM_TASKS=1

xDEBUG HALNODEBUG

xDEBUG_GPIO

xDEBUG_ENC

xDEBUG_SW_TRACE

NEAR_FUNC=

DATA=

CC26XXWARE CC26XX

该填什么东西:?

ye,

不需要加任何东西,默认是有SNV的。

你用的是什么工程?

我用的工程模板是SimpleBLEMulti   实现的是多角色连接。但是我目前想绑定设备,发现无法绑定。

ye,

原来如此。这个工程占用的空间比较大,因为4.1的特性以及为了和多个设备连接。

你需要调节一下ICALL_STACK0_ADDR 起始地址试试看,需要扩大点flash空间。

请问这个地址ICALL_STACK0_ADDR  在哪修改?

我找到这个地址了,原来设置的是:

#ifndef ICALL_STACK0_ADDR

 #define ICALL_STACK0_ADDR              0x00008000ul

 #endif

我修改成 0x00006000ul 和0x00010000ul,编译后报的错是一样的。还是不行。

ye,

可以在IAR-Boundary.xcl & IAR-Boundary.bdef修改ICALL boundaries 

YAN:

       非常的感谢,修改这两个地方,解决了问题。遇到一个有趣的事情,就是我更改了这两个地址,编译完后,会报错,然后再看这两个地址,发现已经变了。然后再次编译,就可以通过了。应该是IAR自动给分配的空间吧。

       再次谢谢了!

ye,

这是因为boundary.exe这个脚本在修改地址空间后需要运行两次才可以,第一次报错正常。

同时要感谢活力股HG。 

你好:

        我也遇到相同的问题,但是我打开-DGAP_BOND_MGR,修改--define=ICALL_STACK0_ADDR=0x0000D000地址空间后,系统无法正常运行了。使用的也是SimpleBLEMulti工程;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top