JL杰理蓝牙芯片交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 536|回复: 0

AC63N提升BLE传输速率方法

[复制链接]

10

主题

2

回帖

103

积分

普通会员

Rank: 3Rank: 3

积分
103
发表于 2023-6-8 21:09:15 | 显示全部楼层 |阅读模式

注册登录,了解更多芯片技术。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
BLE传输带宽主要跟两个要素有关: 通信周期和每个通信点可传输的数据量。1.通信周期: 安卓手机一般可支持到10ms,苹果一般可支持到15ms2.每个通信点可传输的数据量: 就是指每包的长度以及可以传多少包3.BLE理论带宽传输计算如下:
按15毫秒通信周期,每次基本通信能发4包(发包个数取决于主机)
若PDU长为27, 即payload长是 20 byte,那传输速度是 (1000/15)204 约= 5K byte 速度。
若PDU长为251,即payload长是 244 byte,那传输速度是 (1000/15)2444 约= 63K byte 速度。(要双方同时支持DLE和2M属性)
-----------------------------------------------------------以 AC63_v2.1.0 版本的trans_data示例说明:1.改大本地发送端ATT协议MTU的大小和应用层cbuf的大小。#define ATT_LOCAL_MTU_SIZE    (517)/*本地MTU的长度,range:23~517,会通过接口ble_vendor_set_default_att_mtu配置*/#define ATT_SEND_CBUF_SIZE    (ATT_LOCAL_MTU_SIZE *5)/*cbuf是contoller发包的二级缓存*//*一般情况是client端主动发起MTU交换;但如果client没发起,server角色也可以使用接口发起MTU交换(ble_api.h)*/void att_server_set_exchange_mtu(u16 con_handle);/*MTU是否调整生效,有对应的事件消息 ATT_EVENT_MTU_EXCHANGE_COMPLETE,事件带调整后的MUT的值*/

2.改小蓝牙的通信周期interval的值,最小周期是7.5 ms。(从机只请求,通信周期由主机决定)
/是否调整生效,有对应的事件消息 HCI_SUBEVENT_LE_CONNECTION_UPDATE_COMPLETE 上来/
参考:#I4MEA5:BLE从机修改连接参数意义(提升BLE发包速度、降低连接后的功耗)
static const struct conn_update_param_t trans_connection_param_table[] = {    {6, 9, 0, 400},  /*Android请求的连接参数*/    {6, 12, 0, 400}, /*ios请求的连接参数*/    {16, 24, 0, 400},/*ios请求的连接参数*/};

3.修改每次通信最多收发数据包的个数,contoller的一级缓存。(建议<=10,能收发多少包最终由主机决定)const int config_btctler_le_rx_nums =10; /*空中1次通信可接收最多的数据包个数*/const int config_btctler_le_acl_total_nums =10; /*空中1次通信可发送最多的数据包个数*/

4.开启 Data Length Extension supported (LE_DATA_PACKET_LENGTH_EXTENSION),简称DLE ,ACL层的每个数据包PDU的长度可配置范围 27~251 bytes。(主机要支持蓝牙v4.2或以上版本)/*蓝牙版本features*/const uint64_t config_btctler_le_features = SET_ENCRYPTION_CFG|LE_DATA_PACKET_LENGTH_EXTENSION;const int config_btctler_le_acl_packet_length = 251;/*数据包payload长度,range:27~251*//*主从机都可以发起DLE请求交换,一般是主机发起,可调用接口;做从机默认不需要调用该接口*//*是否调整生效,有对应的事件消息 HCI_SUBEVENT_LE_DATA_LENGTH_CHANGE 上来*//*具体代码调用流程控制可参考SDK版本V2.2.1,有添加调用示例*/int ble_comm_set_connection_data_length(u16 conn_handle, u16 tx_octets, u16 tx_time)ble_comm_set_connection_data_length(conn_handle,config_btctler_le_acl_packet_length ,2120);

注意:如果从设备支持DLE特性,一般手机可用的ATT MTU大小也会跟着变大。
另外ATT_LOCAL_MTU_SIZE 和 config_btctler_le_acl_packet_length的配置关系,参考
#I599P4:NOTE:BLE 中 ATT层 MTU_SIZE 和空中包 PDU长度 两者的配置关系
5.开启2M包的支持,提升物理传输速率。配置feature 属性LE_2M_PHY ,(主机要支持蓝牙v5.0或以上版本)/*蓝牙版本features*/const uint64_t config_btctler_le_features = SET_ENCRYPTION_CFG|LE_2M_PHY ;/*主从机都可以发起2M包请求交换,一般是主机发起,可调用接口;做从机默认不需要调用该接口*//*是否调整生效,有对应的事件消息 HCI_SUBEVENT_LE_PHY_UPDATE_COMPLETE 上来*//*具体代码调用流程控制可参考SDK版本V2.2.1,有添加调用示例*/int ble_comm_set_connection_data_phy(u16 conn_handle, u8 tx_phy, u8 rx_phy, u16 phy_options);ble_comm_set_connection_data_phy(conn_handle,CONN_SET_2M_PHY,CONN_SET_2M_PHY,CONN_SET_PHY_OPTIONS_NONE);

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|JL杰理蓝牙芯片交流论坛 ( 粤ICP备18068352号 )

GMT+8, 2024-5-20 07:41 , Processed in 0.068525 second(s), 22 queries .

Powered by yunthinker云信

© 2001-2023 yunthinker Team.

快速回复 返回顶部 返回列表