微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于CC2540的peripheral断开连接不成功的问题

关于CC2540的peripheral断开连接不成功的问题

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

hi,

当前我在调试一个遥控,只控制central的连接与断开。是这样处理的:

peripheral发起广播,central请求连接,连接成功后,peripheral主动断开连接。

但是我遇到一个问题:

当距离稍远并且中间有某些杂物阻隔的时候,peripheral能够连接成功,但是,peripheral主动断开连接后,有时候因为无法收到GAPROLE_WAITING这个通知,在之后的20s内,无法再次发起连接。

求解决思路,十分感谢。

请问您希望的再次发起连接的时间是多少呢?

经过调试,我发现是无法收到GAPROLE_WAITING通知消息,而在20s后产生了GAPROLE_WAITING_AFTER_TIMEOUT消息。。

我希望GAPROLE_WAITING通知消息接收不成功的情况下,直接可以重新开始广播。我这里使用的是按键。

从目前来看应该是timeout时间问题。

不知这个时间该如何调整?

可以使用按键产生中断处理消息 然后处理中断把设备置于Advertise状态

有关timeout可以尝试修改

// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT          1000

刚调试了,貌似在这段时间里我启动广播是无法广播的。

参数更新请求我关闭了,这个修改了有效果?

请问您是用

 GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

函数去设置广播的吗?

是的,的确是用这个函数来设置广播。

jianxiong,

这个超时是必须的, 就是用在信号不太好的情况下, 给对方一点时间, 但是这个supervision timeout的时间可以修改.

你可以试一下WBJ说的方法.

把参数更新请求打开, 然后照WBJ说的去修改一下.

不使用参数更新请求或者使用参数更新请求,peripheral都会发出这则消息,里边的timeout 一直是0x7D0, 也就是2000,单位是10ms,刚好是20S,这个0x7D0无论怎么修改这个参数DEFAULT_DESIRED_CONN_TIMEOUT  多无法改变。

并且这个则消息不知从何而来,摸不着头脑。

还有个问题请教下,使用参数更新请求,只有在peripheral的连接参数与central不符合然后发起连接参数更新吧? 

求解答,十分感谢

还在吗、

从机主动断开连接是哪个函数?当主机和从机连接后,从机怎么设置断开连接?

GAPRole_TerminateConnection

这个函数即可。

还有peripheral自动断开连接的问题,20s这个时间是可以设置的。

通过这个函数:GAP_SetParamValue( TGAP_CONN_EST_SUPERV_TIMEOUT,t); t是你的连接超时时间,可以自己设置时间长度。

你好,请问一下,如果是从机接到GAP_LINK_TERMINATED_EVENT的信号,怎样断开从机这边的连接?即是被动断开。用GAPRole_TerminateConnection行吗?

发现此时notify还是使能的,没有复位。谢谢!

YAN,你好!新手求助,希望得到你的回复。 不知道怎样从机断开连接?即主机发出断开连接信号,从机收到GAP_LINK_TERMINATED_EVENT,然后怎样处理,才可以将从机这边的连接断开,notify也复位为0,不再发送数据了?非常感谢!

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

网站地图

Top