CH579芯片BLE库v1.4和BLE库v1.7速度测试比较问题

芯片CH579,经测试,BLE库v1.4和v1.7的速度差别很大,使用官方提供的ch57x_ble_uart程序,分别使用BLE v1.4和BLE v1.7版本(在CH57xBLE_LIB.H中定义的VER_FILE),参数使用BufMaxLen=90,BufNumber=10,TxNumEvent=1,使用官方提供的BLE调试注手,发送采用连续发送,发送间隔1ms,数据量280字节,HEX发送,v1.4平均速度可达4000B/s以上(最大可达6000B/s以上),v1.7的速度平局只有1000B/s以上(最大也就是大概1300B/s左右)。

另外发现使用v1.7版本的BLE库ROM版本,非LIB(用于OTA升级),此时BufMaxLen无法设置为251,简单测试了下,超过100都不行,会导致,能扫描到,但是连接不上,无法获取Services。


速度测试截图如下:

下图为v1.4版本的库

1616905324580144.jpg


下图为v1.7版本的库

1616905325150807.jpg


是否我使用的方法有问题,请官方给与帮助,谢谢

补充一下,芯片是ch579


这个差异的主要原因可能是来自于 两个工程 在你测试时候建立的连接间隔不同,

可以着重关注下工程里面的这个值的变化 


connInterval
/*********************************************************************
 * @fn      peripheralParamUpdateCB
 *
 * @brief   Parameter update complete callback
 *
 * @param   connHandle - connect handle
 *          connInterval - connect interval
 *          connSlaveLatency - connect slave latency
 *          connTimeout - connect timeout
 *          
 * @return  none
 */
static void peripheralParamUpdateCB( uint16 connHandle, uint16 connInterval, 
                                      uint16 connSlaveLatency, uint16 connTimeout )
{
  if( connHandle == peripheralConnList.connHandle )
  {
    peripheralConnList.connInterval = connInterval;
    peripheralConnList.connSlaveLatency = connSlaveLatency;
    peripheralConnList.connTimeout = connTimeout;
 
    printf("Update %x - Int %x \n", connHandle, connInterval);
  }
  else
  {
    PRINT("ERR..\n");
  }
}

连接间隔可以由主机端来设置, 也可以由从机端请求设置.



另外,对于你说的"此时BufMaxLen无法设置为251,简单测试了下,超过100都不行,会导致,..."

这个是因为你的工程中 BLE_MEMHEAP_SIZE 跟BLE_BUFF_MAX_LEN与BLE_BUFF_NUM设置的不太合理

这里BLE_BUFF_MAX_LEN*BLE_BUFF_NUM 越大需要的BLE_MEMHEAP_SIZE 就越大


可以考虑减小BLE_BUFF_NUM 来增加BLE_BUFF_MAX_LEN 

如按照下面这样

#ifndef BLE_MEMHEAP_SIZE
#define BLE_MEMHEAP_SIZE						(1024*8)
#endif
#ifndef BLE_BUFF_MAX_LEN
#define BLE_BUFF_MAX_LEN						251
#endif
#ifndef BLE_BUFF_NUM
#define BLE_BUFF_NUM							4
#endif
#ifndef BLE_TX_NUM_EVENT
#define BLE_TX_NUM_EVENT						2

另外BLE_BUFF_MAX_LEN 这个值增加后, 建立连接后往往也是 按照最大单包20字节传输的

主机在连上那个后,需要进行MTU更新后才会启用长包传输




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