CH582M从机连接参数更新失败和发现服务时间较长

我要把579M芯片换成582M

手机连接579的时候如图,2次更新参数都成功,从连接到发现服务用了大概900ms

微信图片_20211119180423.jpg


用手机连接582的时候,更新连接参数失败,且发现服务时间大概在2300ms左右

微信图片_20211119190012.jpg

用的工程是peripheral,用默认的参数2次更新都失败,

不知是不是主设备发送参数更新失败导致发现服务时间比较长,如何更快的发现服务?

这个发现速度慢的根本原因,是整个发现过程中的连接间隔比较长,

上面的错误是连接间隔更改失败, 根本原因是 代码在初始化时候给连接间隔限制了一个较小的范围,,

实际上你可以修改为更大的范围,如(代码来自 CH583EVT_v1.1\EVT\EXAM\BLE\BLE_UART  ):

void Peripheral_Init( )
{
  Peripheral_TaskID = TMOS_ProcessEventRegister( Peripheral_ProcessEvent );
  
  // Setup the GAP Peripheral Role Profile
  {
    uint8 initial_advertising_enable = TRUE;
    uint16 desired_min_interval = 6;
    uint16 desired_max_interval = 1000;
    
    // Set the GAP Role Parameters
    GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
    GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
    GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
    GAPRole_SetParameter( GAPROLE_MIN_CONN_INTERVAL, sizeof( uint16 ), &desired_min_interval );
    GAPRole_SetParameter( GAPROLE_MAX_CONN_INTERVAL, sizeof( uint16 ), &desired_max_interval );
  }

后面从机可以根据实际的应用需求,再去请求主机更新需要的连接参数

  if ( events & SBP_PARAM_UPDATE_EVT )
  {
    // Send connect param update request
    GAPRole_PeripheralConnParamUpdateReq( peripheralConnList.connHandle,
                                          DEFAULT_DESIRED_MIN_CONN_INTERVAL,
                                          DEFAULT_DESIRED_MAX_CONN_INTERVAL,
                                          DEFAULT_DESIRED_SLAVE_LATENCY,
                                          DEFAULT_DESIRED_CONN_TIMEOUT,
                                          Peripheral_TaskID);


//        GAPRole_PeripheralConnParamUpdateReq( peripheralConnList.connHandle,
//                                              10,
//                                              20,
//                                              0,
//                                              400,
//                                              Peripheral_TaskID);



我用的是CH582M官方开发板,用BLE_UART工程,依然会出现更新参数失败。我也尝试了更大范围,还是更新参数失败,难道是手机工具不对吗?


如果是安卓手机的话,可以到应用市场搜索 BLE调试助手,这个app是我们公司自己做的app。


BLE调试助手日志没有显示更新参数的情况,我用的是nRF Connect

nRF Connect

https://github.com/NordicSemiconductor/Android-nRF-Connect

请确认一下CH582第一次手机发起更新参数失败的原因。


只有登录才能回复,可以选择微信账号登录