一、简介
本文主要讲解蓝牙连接参数说明。
二、实验平台
协议栈版本:BLE-CC254x-1.4.0
编译软件:IAR 8.20.2
硬件平台:Smart RF(主芯片CC2541)
三、版权声明
博主:si_zhou_qun_84342712
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://write.blog.csdn.NET/postedit
联系方式:495527583@qq.com
开源四轴群:84342712
开源四轴(淘宝店):
四、关于蓝牙连接参数
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 40
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 800
// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_DESIRED_SLAVE_LATENCY 0
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT 1000
// Whether to enable automatic parameter update request when a connection is formed
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
1.
DEFAULT_DESIRED_MIN_CONN_INTERVAL(最小连接间隔)和#define DEFAULT_DESIRED_MAX_CONN_INTERVAL(最大连接间隔)
这个间隔 是指成功连接后 的周期性通讯时间,主机会根据使用情况 在 这个取值范围内 选择合适的 间隔时间,这个具体值是不可控的,所以需要划定一个范围使得通讯响应在自己的可控范围之内。这个具体值会影响到下一次通讯数据包的响应时间,需要根据自己的情况来调整这个范围达到 既省电又匹配程序响应速度 的目的。
比如:
大数据传递时:通讯数据包是连续传递的,主机会选择min值来进行通讯。
无数据传递时:通讯是空闲状态,主机会选择max值来定期询问从机状态,以保持连接不中断。(在空闲时,由于使用max的值作为通讯周期,会影响到程序的下一个命令的发送时间)
2
DEFAULT_DESIRED_SLAVE_LATENCY: (从机所存)
Slaver设备没有数据要发时,跳过一定数目的ConnectionEvent的值,Rang:0-499.
跳过的interval个数,设置为0则每次interval都连接。数字约小通信速度越快,但是功耗越高
注意:这个参数更重要的应用 :比如在距离远或者干扰大的时候 无数据通信的时候。把这个值设大可以减少掉线概率。
比如防丢器:放在口袋里面假如这个参数设置为0 表示规定时间内必须响应从机,不然就以为是蓝牙断开了。假如设置为5。假如信号不好的时候,即使中间丢了4个,只接受了1个就表示连接了。因为他会跳过其中4个 ,保证了不掉线的概率
3.
DEFAULT_DESIRED_CONN_TIMEOUT:(连接超时)
超时时间,就是两个设备在连接的这段时间没有发生通讯而导致连接自动断开的值。Range(10ms-----32s)
连接超时时间,用在信号不太好的情况下, 给对方一点时间。超过这个时间通信就建立失败
IOS对连接参数要求
另外附上苹果对connection interval的要求, 其实还有其他的连接参数要求, 比如slave latency, supervision timeout, 如果不满足这些, iOS设备会拒绝.
● Interval Max * (Slave Latency + 1) ≤ 2 seconds
● Interval Min ≥ 20 ms
● Interval Min + 20 ms ≤ Interval Max Slave Latency ≤ 4 //这个是这样么???
● connSupervisionTimeout ≤ 6 seconds
● Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout
DEFAULT_ENABLE_UPDATE_REQUEST:
从机可以向主机发送连接参数更新请求,来请求主机的连接参数 更新到与从机一致。方法是:(参考simpleBLEperipheral.c)
// Whether to enable automatic parameter update request when a connection is formed
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
uint8 enable_update_request = DEFAULT_ENABLE_UPDATE_REQUEST;
GAPRole_SetParameter( GAPROLE_PARAM_UPDATE_ENABLE, sizeof( uint8 ), &enable_update_request );
更改这3句代码,来使能或禁止,从机向主机发送连接参数更新请求,只要发送之后 主机就允许 然后连接参数就会变成你 从机端设定的参数 了
假如设置为FALSE 则表示连接参数由主机设置 更从机设置的参数没有关系(可否这样理解)?