微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > CC2541的连接参数常见问答解答

CC2541的连接参数常见问答解答

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

CC2541的连接参数常见问答解答


一、本篇介绍CC2541的连接参数。
协议栈版本:BLE-CC254x-1.4.0
编译软件:IAR 8.20.2
硬件平台:Smart RF开发板
二、基础知识
1、连接参数是什么?
答:连接参数用于规定主从机数据通信时间,包含最小连接间隔、最大连接间隔等参数,如果连接参数设置不合理,就会导致连接断开。
CC2541端的SimpleBLEPeripheral工程默认的连接参数如下:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled  
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL     80        //最小连接间隔  
// 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      //连接超时时间,连接IOS时此参数必须小于6S  
// Whether to enable automatic parameter update request when a connection is formed  
#define DEFAULT_ENABLE_UPDATE_REQUEST         TRUE      //使能连接参数更新请求  
// Connection Pause Peripheral time value (in seconds)  
#define DEFAULT_CONN_PAUSE_PERIPHERAL         6         //有时当CC2541断开连接时,主机端过10S才会断开,此时将此数值改小可让主机快速发现断开连接  
2、连接参数更新过程是如何?
答:主从机连接时,首先使用的是主机端默认的连接参数。
1)如果从机端禁止参数更新,则之后的通信都将使用主机端默认的连接参数。
2)如果从机端允许参数更新,则在主从机连接后的几秒内,从机会向主机端发送连接参数更新请求。
如果从机的连接参数符合主机端的连接标准,则更新参数;
如果从机的连接参数不符合主机端的连接标准,则不更新参数。
3、为何有时主机读取从机的特征值需要2S的时间?
答:因为连接参数中的连接超时时间过长,可以作如下修改:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled  
#define DEFAULT_DESIRED_CONN_TIMEOUT          100//1000      //连接超时时间,连接IOS时此参数必须小于6S  
4、IOS端的连接参数有何具体要求?
答:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
?Interval Max * (Slave Latency + 1) <= 2 s  
?Interval Max >= 20 ms  
?Interval Min + 20 ms <= Interval Max  
?Slave Latency <= 4  
?ConnSupervisionTimeout <= 6 s  
?Interval Max * ( Slave Latency + 1) * 3 < ConnSupervisionTimeout  
根据上述要求,要特别注意的是下面两点:
1、最大连接间隔要比最小连接间隔大20ms。
2、连接超时参数需要小于6S。(CC2541的SimpleBLEPeripheral工程默认的连接参数是不符合IOS的连接参数要求的,因此默认连接参数会导致连接参数更新失败)
3、IOS的默认连接参数是30ms。
五、主从机端代码中的参数更新
从机端只能发出参数更新申请,只有主机端能决定是否更新参数。
1)主机端直接更新参数使用函数GAPCentralRole_UpdateLink
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
if ( keys & HAL_KEY_RIGHT )  
{  
  BLE_DEV *p =  &(gDev[simpleBLEScanIdx]);  
  NPI_PrintString("  [KEY RIGHT pressed!]\r\n");  
  // Connection update  
  if ( p->simpleBLEState == BLE_STATE_CONNECTED )  
  {  
    // 更新参数   
    GAPCentralRole_UpdateLink( p->simpleBLEConnHandle,  
                               DEFAULT_UPDATE_MIN_CONN_INTERVAL,  
                               DEFAULT_UPDATE_MAX_CONN_INTERVAL,  
                               DEFAULT_UPDATE_SLAVE_LATENCY,  
                               DEFAULT_UPDATE_CONN_TIMEOUT );  
  }  
}  
2)从机端发出参数更新申请
GAPRole_SendUpdateParam

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

网站地图

Top