Topic
FAQ
FAQ
Login
Register
English
简体中文
tlsr8267 蓝牙模块休眠问题
HugeZeng
Nov 27, 2018 10:59
Subscribe
中
/
A
中
/
A
Revert
HI :
在用826x_ble_remote的demo source做测试时发现在disable PM(BLE_REMOTE_PM_ENABLE= 0)的情况下,连接8267的设备会在连接后一段时间后收到断开的信号。
请问,8267在空闲的情况会不会自动关闭蓝牙?或者有什么操作没有?
sdk版本:telink_ble_sdk_release_v3.2.0_20170906
best regards
18 replies
TL_Jerry
Nov 28, 2018 11:15
0
中
/
A
可以关闭PM的宏,BLE_REMOTE_PM_ENABLE;另外确认下bls_pm_setSuspendMask (SUSPEND_DISABLE)有打开,这时就关闭了低功耗;
HugeZeng
[Author]
Nov 28, 2018 11:42
0
中
/
A
HI :
已经是设置了bls_pm_setSuspendMask(SUSPEND_DISABLE);和 BLE_REMOTE_PM_ENABLE=0.
现在的情况还是每30S就会断开,但是断开之后在8267没有重启的情况可以重新连接。 对826_ble_remote的连接有什么特殊的要求没有?
TL_Jerry
Nov 28, 2018 13:47
0
中
/
A
1、如果BLE_REMOTE_PM_ENABLE= 0,bls_pm_setSuspendMask (SUSPEND_DISABLE);app_power_management ()低功耗处理就会屏蔽掉,应该不会进入到deep状态。请设置后重新clear 一下工程重新编译,确保设计的宏都关掉。
2、如果你说是30s 就会断开,判断不应该是硬件其他问题造成射频问题;还需要具体在查下你的代码;
只有以上2点应该会影响到,不能解决的话需要找具体FAE 协助看下你的应用可能有设置错误导致。
HugeZeng
[Author]
Nov 28, 2018 16:59
0
中
/
A
HI:
用tdebug读取参数时里面的值全部是cccc,为什么?
TL_Jerry
Nov 28, 2018 17:49
0
中
/
A
在进行tedebug时,需要关掉低功耗,保证SWS通信是一直联通的;如果有suspend或者deep,sws 通信会中断;所以没有读出来数据,表现是CCC;
HugeZeng
[Author]
Nov 29, 2018 12:09
0
中
/
A
HI :
我已经disable了pm,但是只成功一次。3v3,gnd,sws这三根线插上的顺序有要求吗?
另外一个问题:蓝牙和设备连接成功后断电重启blc_smp_param_getCurrentBondingDeviceNumber() 或取到的number是0。
成功配对之后需要手动取储存绑定设备的信息吗?还是它自动保存的?
TL_Jerry
Nov 29, 2018 14:52
0
中
/
A
1、三根线插线顺序没有要求,但是在读取ram之前需要sws sync ok,才能读取;具体请详阅AN-18101200-E1_Telink Burning and
Debugging Tool (BDT) User Guide.pdf手册;
2、请确保BLE_REMOTE_SECURITY_ENABLE ,加密宏是打开的,并且设置了
blc_smp_param_setBondingDeviceMaxNumber(4); 绑定设备数量;
bls_smp_enableParing (SMP_PARING_CONN_TRRIGER );打开加密绑定;
设置了加密绑定,才可以读取到bond_number;
请详阅开发手册3.5章节;
HugeZeng
[Author]
Nov 29, 2018 16:56
0
中
/
A
HI :
#define BLE_REMOTE_SECURITY_ENABLE 1
这个已经设置为1了,但是那个bond_number还是0
bond_number = blc_smp_param_getCurrentBondingDeviceNumber();
我用的是8267x_ble_remote的代码
blc_smp_param_setBondingDeviceMaxNumber(1);
最大bonding number设置为1.
HugeZeng
[Author]
Nov 29, 2018 19:15
0
中
/
A
HI :
经过测试,我用手机连接82XX_ble_remote那个bond_number是不为0的。
但是我添加了一个gatts service,然后只连接我添加的service,那个bond_number是0
{4,ATT_PERMISSIONS_READ, 2,2,(u8*)(&my_primaryServiceUUID), (u8*)(&my_timerUUID), 0},
{0,ATT_PERMISSIONS_READ, 2, 1,(u8*)(&my_characterUUID), (u8*)(&PROP_READ_NOTIFY), 0}, //prop
{0,ATT_PERMISSIONS_RDWR,2,sizeof(my_controlTimer),(u8*)(&my_timerCharUUID), (u8*)(my_controlTimer), 0}, //value
{0,ATT_PERMISSIONS_RDWR, 2,sizeof (my_timerCCC),(u8*)(&clientCharacterCfgUUID), (u8*)(my_timerCCC), 0},
另外我注册了两个回调函数,也没有被调用到:
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_END, &pairing_end);
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_BEGIN, &pairing_begin);
有什么建议没?
TL_Jerry
Nov 30, 2018 10:03
0
中
/
A
1、“经过测试,我用手机连接82XX_ble_remote那个bond_number是不为0的。“-------在这种可配对的情况下去调用paring begin&end的回调函数,另外你是怎么判断没有进的;两个方法,一是,抓包看BLT_EV_FLAG_PAIRING_BEGIN/BLT_EV_FLAG_PAIRING_END配对过程的底层事件;二是、在该底层事件回调函数中设置LED指示;参见开发手册3.5章节抓包数据说明;
2、“但是我添加了一个gatts service,然后只连接我添加的service,那个bond_number是0“-------只连接你的server,这个概念是错误的;server相关的请参考开发手册3.4章节内容;
PS:如果您是个人开发爱好者请详阅SDK开发手册,基本概念性的信息比较详细;
HugeZeng
[Author]
Nov 30, 2018 11:33
0
中
/
A
HI :
1、“经过测试,我用手机连接82XX_ble_remote那个bond_number是不为0的。“-------在这种可配对的情况下去调用paring begin&end的回调函数,另外你是怎么判断没有进的;两个方法,一是,抓包看BLT_EV_FLAG_PAIRING_BEGIN/BLT_EV_FLAG_PAIRING_END配对过程的底层事件;二是、在该底层事件回调函数中设置LED指示;参见开发手册3.5章节抓包数据说明;
huge: 我知道怎么判断,我设置了变量通过debug工具读取。也设置了LED。判断没有问题的。问题是无论成功配对与否我设置的回调函数都没有进。
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_END, &pairing_end);
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_BEGIN, &pairing_begin);
这两个是不是在做slave时无法使用?
2、“但是我添加了一个gatts service,然后只连接我添加的service,那个bond_number是0“-------只连接你的server,这个概念是错误的;server相关的请参考开发手册3.4章节内容;
PS:如果您是个人开发爱好者请详阅SDK开发手册,基本概念性的信息比较详细;
huge: 我是公司行为,而且已经看了SDK的手册。只是蓝牙的概念也许没表达清楚。
我的意思是连接之后在search service时只search我自己定义的UUID和处理相关的character。
TL_Jerry
Nov 30, 2018 13:50
0
中
/
A
1、这两个底层事件就是slave 在连接的时候的事件;你可以抓包去分析这个过程;
2、你可以参考文档添加你需要的server,看是否可以读到对应属性值;如果添加没有问题,你可以在尝试删除其他你不需要的server;(但是通用属性部分不要删除);
可以找对应FAE做一下开发培训。
HugeZeng
[Author]
Nov 30, 2018 13:59
0
中
/
A
Hi
1. sdk好像没有提到怎样抓包?蓝牙的包要怎样抓取?
2. 我自己添加的service是可以了,那些character也可以正常访问。
现在就是好像有些什么东西不匹配,它连接上之后32s就会断开。即使我不断发notify给master,它还是断。
但是反过来,如果master不断去write character则不会断。
TL_Jerry
Nov 30, 2018 18:51
0
中
/
A
1、telink 抓包可详阅AN_BLE-15060200-C1_Telink BLE Sniffer User Guide.pdf文档;BLE 抓包方式各家相同,也可以使用友商工具进行开发;
2、如果是固定时间周期断开,请检查代码是否有定时低功耗设置处理;如果是不定时断开请排查RF 硬件相关问题;
[size=150]
[size=150]
请咨询对应FAE,谢谢。
[/size]
[/size]
HugeZeng
[Author]
Nov 30, 2018 18:59
0
中
/
A
HI:
Thanks。
FAE让有问题先发贴
:lol:
TL_Jerry
Nov 30, 2018 19:06
0
中
/
A
我司都是拜访客户实地培训,体现优良服务。你的评论需谨慎一些,这里是公共服务平台!谢谢合作。
:)
HugeZeng
[Author]
Nov 30, 2018 20:34
0
中
/
A
HI :
有问题先发贴是正常的流程啦。这个流程我也表示理解,否则什么事情都找FAE,忙不过来。
TL_tigeryang0203
Dec 05, 2018 09:16
0
中
/
A
你好,你的问题比较复杂,建议来深圳或上海办公室现场解决。
Related topics
No related topics
Author's other topics
No more topics
已经是设置了bls_pm_setSuspendMask(SUSPEND_DISABLE);和 BLE_REMOTE_PM_ENABLE=0.
现在的情况还是每30S就会断开,但是断开之后在8267没有重启的情况可以重新连接。 对826_ble_remote的连接有什么特殊的要求没有?
2、如果你说是30s 就会断开,判断不应该是硬件其他问题造成射频问题;还需要具体在查下你的代码;
只有以上2点应该会影响到,不能解决的话需要找具体FAE 协助看下你的应用可能有设置错误导致。
用tdebug读取参数时里面的值全部是cccc,为什么?
我已经disable了pm,但是只成功一次。3v3,gnd,sws这三根线插上的顺序有要求吗?
另外一个问题:蓝牙和设备连接成功后断电重启blc_smp_param_getCurrentBondingDeviceNumber() 或取到的number是0。
成功配对之后需要手动取储存绑定设备的信息吗?还是它自动保存的?
Debugging Tool (BDT) User Guide.pdf手册;
2、请确保BLE_REMOTE_SECURITY_ENABLE ,加密宏是打开的,并且设置了
blc_smp_param_setBondingDeviceMaxNumber(4); 绑定设备数量;
bls_smp_enableParing (SMP_PARING_CONN_TRRIGER );打开加密绑定;
设置了加密绑定,才可以读取到bond_number;
请详阅开发手册3.5章节;
#define BLE_REMOTE_SECURITY_ENABLE 1
这个已经设置为1了,但是那个bond_number还是0
bond_number = blc_smp_param_getCurrentBondingDeviceNumber();
我用的是8267x_ble_remote的代码
blc_smp_param_setBondingDeviceMaxNumber(1);
最大bonding number设置为1.
经过测试,我用手机连接82XX_ble_remote那个bond_number是不为0的。
但是我添加了一个gatts service,然后只连接我添加的service,那个bond_number是0
{4,ATT_PERMISSIONS_READ, 2,2,(u8*)(&my_primaryServiceUUID), (u8*)(&my_timerUUID), 0},
{0,ATT_PERMISSIONS_READ, 2, 1,(u8*)(&my_characterUUID), (u8*)(&PROP_READ_NOTIFY), 0}, //prop
{0,ATT_PERMISSIONS_RDWR,2,sizeof(my_controlTimer),(u8*)(&my_timerCharUUID), (u8*)(my_controlTimer), 0}, //value
{0,ATT_PERMISSIONS_RDWR, 2,sizeof (my_timerCCC),(u8*)(&clientCharacterCfgUUID), (u8*)(my_timerCCC), 0},
另外我注册了两个回调函数,也没有被调用到:
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_END, &pairing_end);
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_BEGIN, &pairing_begin);
有什么建议没?
2、“但是我添加了一个gatts service,然后只连接我添加的service,那个bond_number是0“-------只连接你的server,这个概念是错误的;server相关的请参考开发手册3.4章节内容;
PS:如果您是个人开发爱好者请详阅SDK开发手册,基本概念性的信息比较详细;
1、“经过测试,我用手机连接82XX_ble_remote那个bond_number是不为0的。“-------在这种可配对的情况下去调用paring begin&end的回调函数,另外你是怎么判断没有进的;两个方法,一是,抓包看BLT_EV_FLAG_PAIRING_BEGIN/BLT_EV_FLAG_PAIRING_END配对过程的底层事件;二是、在该底层事件回调函数中设置LED指示;参见开发手册3.5章节抓包数据说明;
huge: 我知道怎么判断,我设置了变量通过debug工具读取。也设置了LED。判断没有问题的。问题是无论成功配对与否我设置的回调函数都没有进。
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_END, &pairing_end);
bls_app_registerEventCallback (BLT_EV_FLAG_PAIRING_BEGIN, &pairing_begin);
这两个是不是在做slave时无法使用?
2、“但是我添加了一个gatts service,然后只连接我添加的service,那个bond_number是0“-------只连接你的server,这个概念是错误的;server相关的请参考开发手册3.4章节内容;
PS:如果您是个人开发爱好者请详阅SDK开发手册,基本概念性的信息比较详细;
huge: 我是公司行为,而且已经看了SDK的手册。只是蓝牙的概念也许没表达清楚。
我的意思是连接之后在search service时只search我自己定义的UUID和处理相关的character。
2、你可以参考文档添加你需要的server,看是否可以读到对应属性值;如果添加没有问题,你可以在尝试删除其他你不需要的server;(但是通用属性部分不要删除);
可以找对应FAE做一下开发培训。
1. sdk好像没有提到怎样抓包?蓝牙的包要怎样抓取?
2. 我自己添加的service是可以了,那些character也可以正常访问。
现在就是好像有些什么东西不匹配,它连接上之后32s就会断开。即使我不断发notify给master,它还是断。
但是反过来,如果master不断去write character则不会断。
2、如果是固定时间周期断开,请检查代码是否有定时低功耗设置处理;如果是不定时断开请排查RF 硬件相关问题;
[size=150][size=150]请咨询对应FAE,谢谢。Thanks。
FAE让有问题先发贴
有问题先发贴是正常的流程啦。这个流程我也表示理解,否则什么事情都找FAE,忙不过来。