TI中文支持网
TI专业的中文技术问题搜集分享网站

simplelink_cc2640r2_sdk_4_30_00_08的协议栈似乎有个连接参数更新的问题

1.首先我使用simplelink_cc2640r2_sdk_4_30_00_08/examples/rtos/CC2640R2_LAUNCHXL/blestack/hexfiles/cc2640r2lp_simple_peripheral.hex的文件烧录。

2.使用nrf connect连接。

3.在debug中发现了两次连接参数更新。如图,前两次的更新的间隔还不到1S,并且这两次都并非我配置的参数更新,只有第三次连接更新的时候,才是我配置的连接参数。如果我关闭连接参数更新,仍然会自动更新连接参数。

4.我尝试在peripheral.c更改

#define DEFAULT_ADVERT_OFF_TIME 30000 // 30 seconds

#define DEFAULT_MIN_CONN_INTERVAL 0x0006 // 100 milliseconds
#define DEFAULT_MAX_CONN_INTERVAL 0x0C80 // 4 seconds

实际上没有任何作用。

5.后面我增加了一段程序。

// Minimum connection interval (units of 1.25ms, 80=100ms) for automatic
// parameter update request
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 185

// Maximum connection interval (units of 1.25ms, 800=1000ms) for automatic
// parameter update request
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 208

// Slave latency to use for automatic parameter update request
#define DEFAULT_DESIRED_SLAVE_LATENCY 0

//when connected,how long Update Connection Parameter
#define DEFAULT_CONN_PAUSE_PERIPHERAL 15

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

// After the connection is formed, the peripheral waits until the central
// device asks for its preferred connection parameters
#define DEFAULT_ENABLE_UPDATE_REQUEST GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS

uint8_t enableUpdateRequest = DEFAULT_ENABLE_UPDATE_REQUEST;
uint16_t desiredMinInterval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;
uint16_t desiredMaxInterval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;
uint16_t desiredSlaveLatency = DEFAULT_DESIRED_SLAVE_LATENCY;
uint16_t desiredConnTimeout = DEFAULT_DESIRED_CONN_TIMEOUT;

GAP_SetParamValue(TGAP_CONN_PAUSE_PERIPHERAL, DEFAULT_CONN_PAUSE_PERIPHERAL);

GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t),
&enableUpdateRequest);
GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t),
&desiredMinInterval);
GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t),
&desiredMaxInterval);
GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t),
&desiredSlaveLatency);
GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t),

注意我的timeout已经设置成了600,这样设置之后15S内出现了三次连接参数更新。这个是simple_peripheral例程上更改的,并且只在task初始化时修改了这段程序。

6.我发现并非所有的蓝牙设备都会出现这种问题,CC2540/1以及CC2642R并没有这个问题。

Kevin Qiu1:

连接参数更新参照任务5中的方式dev.ti.com/…/node

shimin zhang:

回复 Kevin Qiu1:

你好,CC2640R2F我使用的是默认的例程,没有修改任何东西也有问题呀。
同样的CC2642R和CC2541都没有此类问题。

Kevin Qiu1:

回复 shimin zhang:

你说的问题指的是前两次自动更新连接参数?看连接参数应该是手机发起的

shimin zhang:

回复 Kevin Qiu1:

似乎跟手机有关,不同手机会有不同的情况,不同蓝牙芯片也有不同的情况

赞(0)
未经允许不得转载:TI中文支持网 » simplelink_cc2640r2_sdk_4_30_00_08的协议栈似乎有个连接参数更新的问题
分享到: 更多 (0)