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

cc2640 连接超时会复位吗?

ble_cc26xx_2_01_00_44423   使用的是这个版本,现在遇到问题是:我用Nrf51822 扫描cc2640,当nrf51822 那边出现

#define 

BLE_HCI_CONNECTION_TIMEOUT   0x08

的时候,cc2640就复位了。这个正常吗?

设置连接超时如下:

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

判断断开连接的处理如下:

    case GAPROLE_ADVERTISING:
      UART_DEBUG_DISPLAY_MESSAGE("BLE Advertising.\r\n");
      break;
      
    case GAPROLE_CONNECTED:
      {
#ifdef UART_DEBUG
        UART_DEBUG_DISPLAY_MESSAGE("BLE Connected.\r\nPeerAddr:");
        uint8_t displayBuff[10];
        GAPRole_GetParameter(GAPROLE_CONN_BD_ADDR, displayBuff);
        BF_UtilReverseArray(displayBuff,B_ADDR_LEN);
        UART_DEBUG_DISPLAY_HEX(displayBuff,B_ADDR_LEN);
        GAPRole_GetParameter(GAPROLE_PROFILEROLE,displayBuff);
        UART_DEBUG_DISPLAY_MESSAGE_VALUE("GAP Role:",displayBuff[0]);
        SimpleBLEPeripheral_ConnParamParamDisplay();
#endif
        Protocol_BleState(true);
      }
      break;

    case GAPROLE_CONNECTED_ADV:
      UART_DEBUG_DISPLAY_MESSAGE("BLE Connected Advertising.\r\n");
      break;

    case GAPROLE_WAITING:
      SimpleBLEPeripheral_freeAttRsp(bleNotConnected);
      UART_DEBUG_DISPLAY_MESSAGE("BLE Disconnected.\r\n");
      uint8_t params8b;
      GAPRole_GetParameter(GAPROLE_CONN_TERM_REASON,&params8b);
      UART_DEBUG_DISPLAY_MESSAGE_VALUE("Disconnect Reason:",params8b);
      Protocol_BleState(false);
      break;

    case GAPROLE_WAITING_AFTER_TIMEOUT:
      SimpleBLEPeripheral_freeAttRsp(bleNotConnected);
      UART_DEBUG_DISPLAY_MESSAGE("BLE Timed Out.\r\n");
      break;

    case GAPROLE_ERROR:
      UART_DEBUG_DISPLAY_MESSAGE("BLE GAP Role Error.\r\n");
      break;

    default:
      break;
  }
SimpleBLEPeripheral_freeAttRsp(bleNotConnected)

{

// See if there's a pending ATT response message
  if (pAttRsp != NULL)
  {
    // See if the response was sent out successfully
    if (status == SUCCESS)
    {
      UART_DEBUG_DISPLAY_MESSAGE_VALUE("Rsp sent, retry:",rspTxRetry);
    }
    else
    {
      // Free response payload
      GATT_bm_free(&pAttRsp->msg, pAttRsp->method);
      UART_DEBUG_DISPLAY_MESSAGE_VALUE("Rsp retry failed:",rspTxRetry);
    }
    
    // Free response message
    ICall_freeMsg(pAttRsp);
    
    // Reset our globals
    pAttRsp = NULL;
    rspTxRetry = 0;
  }

}

user4049846:

我帮你查询了一下,可以参考一下
e2echina.ti.com/…/107058

Viki Shi:

连接超时应该只会断开连接,你测试的情况是每次超时都会复位还是偶尔才这样?

Gerry Fan:

回复 Viki Shi:

每次都是。因为设备复位后,时间会重置,所以每次出现0x08,时间就没了。另外。我打印主机那边的log,发现都是连接上以后,大概4s 发现不了服务的话,会出现这个0x08,0x08 不是HCI_ERROR_CODE_CONN_TIMEOUT连接超时吗?为什么已经连接上了,只是没有发现服务,也会报这个错误吗?

Gerry Fan:

回复 Viki Shi:

另外 cc2640 从机端的连接参数是:// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic
// parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL40

// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic
// parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL40

// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_DESIRED_SLAVE_LATENCY0

// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter
// update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT60,
主机端nrf51822 在更新连接参数时候,不做处理,是不是有改善呢,就不会出现连接超时?
主机端连接参数设置:
#define MIN_CONNECTION_INTERVAL MSEC_TO_UNITS(20, UNIT_1_25_MS)/**< Determines minimum connection interval in millisecond. */
#define MAX_CONNECTION_INTERVAL MSEC_TO_UNITS(75, UNIT_1_25_MS)/**< Determines maximum connection interval in millisecond. */
#define SLAVE_LATENCY0/**< Determines slave latency in counts of connection events. */
#define SUPERVISION_TIMEOUTMSEC_TO_UNITS(4000, UNIT_10_MS)/**< Determines supervision time-out in units of 10 millisecond. */
就是注释掉:连接参数更新的请求。case BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST:// Accepting parameters requested by peer.//err_code = sd_ble_gap_conn_param_update(p_gap_evt->conn_handle,//&p_gap_evt->params.conn_param_update_request.conn_params);//APP_ERROR_CHECK(err_code);break; // BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST

Gerry Fan:

回复 user4049846:

嗯,也是一个思路,复位就那几种原因,排除一下。

da qin zheng sheng:

正常情况应该不会复位的。

赞(0)
未经允许不得转载:TI中文支持网 » cc2640 连接超时会复位吗?
分享到: 更多 (0)