ble:连接流程中,平均电流的影响参数都有哪些

ble-mcu中,都是以平均电流来计算功耗的,我现在想知道ble的整个连接流程中,平均电流的影响参数都有哪些;

那我们得先知道平均电流是啥,然后得知道连接流程是咋样的,以及连接流程中都需要设置哪些参数?

1 平均电流

  aaaaa  bbb

  电流:       单位时间内通过的电荷量,单位A,mA;

  平均电流:工作周期内,各个离散电流的电荷量累加后,对工作周期取平均值;单位A,mA;

  电池容量:电池能输出的总电荷量;单位C,Ah,mAh;

  电池时间:电池容量 / 平均电流;

    eg:假设广播平均电流30uA =0.03mA,电池时间h =  电池容量38mAh/0.03mA = 1266h;

    ps:为什么电流定义不关注横截面呢?

      比如一段管子<粗细粗>,当电荷在细的地方通过慢时电场瞬间改变;所以粗的地方的电荷量也就变一致;横截面不影响电荷量;

    ps:在A,mA的电流单位中已经包含了时间"每秒";

**************

2 ble连接流程

  对于slave而言,就是advertising >> slave role connection >> idle;

  对于master而言,就是scanning >> initiating >> master role connection >> idle;

  其中在telink-sdk中,只有advertising, slave role connection有低功耗处理,idle可以调用api低功耗处理,其他状态下没有低功耗处理;

  333

3 advertising/scanning state

  我们先看下广播和扫描的操作是咋样的?概括来说就是间隔周期,间隔周期内的持续时间,持续时间内的射频电路开启的消耗;

  222

  3.1 广播参数

参数名称 协议层级 典型取值范围 功耗影响 影响说明
TX Power RF -40 dBm ~ +10 dBm >>3db,0db 发射功率越高,瞬时电流越大
Advertising Interval LL 20 ms ~ 10.24 s  >>30ms,50ms 间隔越短,广播次数越多,TX 射频开启次数增加
Advertising Event Length PHY 几百 µs ~ 1 ms+ 单次广播事件持续时间,数据是从GAP>>LL>>PHY的,
Primary PHY PHY

1M PHY / 2M PHY  /

Coded PHY:S=2,S=8

\

ADV默认1M,LL建连后交换PHY mask看mcu是否切2M;

1M/2M的射频参数没区别,2M速率快时间短

1MPHY:1byte =8us,  2MPHY:1byte=4us

Filter Policy LL Allow Any / White List   不过滤,每个req设备都会回包,还是过滤下;
Advertising Type LL

ADV_IND / ADV_NONCONN_IND /

ADV_SCAN_IND / ADV_DIRECT_IND

 

可连接可扫描广播会触发额外交互

Directed Advertising LL 高速直连   高频率短间隔,极高瞬时功耗(特定用法)
Advertising Channel Map PHY ch37/38/39   默认 3 个信道,减少信道数可略微降功耗
Advertising Data Length GAP 0 ~ 31 bytes   数据越长,TX 时间越长
Scan Response Data Length GAP 0 ~ 31 bytes   被扫描时才发送,但增加整体平均功耗

  3.2 扫描参数

参数名称 协议层级 典型取值 功耗影响 影响说明
Scan Interval LL 2.5 ms ~ 10.24 s 扫描周期
Scan Window LL ≤ Scan Interval 扫描周期内的射频时间
Scan Type LL Passive / Active \ Passive不要发送 Scan Request
Scan PHY PHY 1M / Coded   Coded PHY 接收时间更长
Channel Map PHY ch37/38/39   通常设置不了
Duplicate Filtering LL Enable / Disable   减少无效处理
Scan Filter Policy LL Allow Any / White List   减少无效接收
Extended Scanning LL Legacy / Extended   扩展包更长

  3.3 代码配置

        blc_ll_setAdvData( (u8 *)tbl_advData, sizeof(tbl_advData) );
        blc_ll_setScanRspData( (u8 *)tbl_scanRsp, sizeof(tbl_scanRsp));
        blc_ll_setAdvParam(ADV_INTERVAL_50MS, ADV_INTERVAL_50MS, ADV_TYPE_CONNECTABLE_UNDIRECTED, OWN_ADDRESS_PUBLIC, 0, NULL, BLT_ENABLE_ADV_ALL, ADV_FP_NONE);
        blc_ll_setAdvEnable(BLC_ADV_ENABLE);  //ADV enable
    
        blc_ll_setScanParameter(SCAN_TYPE_PASSIVE, SCAN_INTERVAL_100MS, SCAN_WINDOW_50MS, OWN_ADDRESS_PUBLIC, SCAN_FP_ALLOW_ADV_ANY);
        blc_ll_setScanEnable (BLC_SCAN_ENABLE, DUP_FILTER_DISABLE);
    
        rf_set_power_level_index (RF_POWER_P3dBm);

  3.4 典型值

    telink多连接-电流测试报告  

    Online Power Profiler for Bluetooth LE - opp - Online Power Profiler - Nordic DevZone  >> nordic在线计算平均电流,有帮助;

    TX假设广播间隔30ms,16字节,0dBm  >> 100ms大约0.03mA;

    RX根据TX估测可知 扫描占空比50% >> 每秒2.7mA;

    RX虽然不向外发射信息,可是RX在工作的时候射频前端也需要开着,所以RX和TX工作时的平均电流接近,RX时间长所以功耗高;

4 connection state

参数名称 协议层级 典型取值 功耗影响 说明
Connection Interval LL 7.5 ms ~ 4 s 极大

主从设备之间连接事件的周期,单位 1.25ms;间隔越长,平均功耗越低

master放入 CONNECT_IND 指令中,双方必须采用

Slave Latency LL 0 ~ 499

Slave 允许跳过响应的 event

master放入 CONNECT_IND 指令中,Slave必须采用

Supervision Timeout LL 100 ms ~ 32 s 间接

监督超时,超时未收到数据包则断开连接,影响最长休眠时间

master放入 CONNECT_IND 指令中,双方必须采用

Connection Event Length LL 几百 µs ~ 数 ms

单次连接事件包持续时间

LL-PDU为一个空中包数据,CEL为第一包LL-PDU到最后一包LL-PDU的持续时间

  对于master而言,需要参加每个connection event,没有slave lantency;在每个connection interval间隔内,master有数据的话就发数据包,没有数据就发个空包;

ble_sts_t 	blc_ll_createConnection( scan_inter_t scanInter, scan_wind_t scanWindow, init_fp_t fp, u8 peerAdrType, u8 *peerAddr, own_addr_type_t ownAdrType,
									 conn_inter_t conn_min,  conn_inter_t conn_max, u16 conn_latency, conn_tm_t timeout, u16 ce_min,   u16 ce_max );

u8 status = blc_ll_createConnection( SCAN_INTERVAL_100MS, SCAN_WINDOW_100MS, INITIATE_FP_ADV_SPECIFY, pa->adr_type, pa->mac, OWN_ADDRESS_PUBLIC, \
								     CONN_INTERVAL_31P25MS, CONN_INTERVAL_48P75MS, 0, CONN_TIMEOUT_4S, 0, 0xFFFF);

5 idle state

  对于telink的低功耗有3种模式

选项\睡眠模式 suspend deep sleep retetion deep sleep
SRAM 保留 只保留first 16K/32K 丢失
digital register 保留 丢失 丢失
analog register 保留 丢失 丢失
电流 60-70uA 2-3uA  < 1uA
BLE状态 连接 断开 断开
对应日常

工作时的休眠态

BLE长睡眠后重新连接

只有PM硬件模块维持工作

设备断电,

如果flash电流流出可能测到1-2uA电流

6 设备连接

  6.1 l指拨

    6.1.1 指拨 >> 手机 >> 头盔

      1 指拨按键 >> 触发开机自动广播30s

      2 打开手机app >> 连接装备  >> 自动扫描蓝牙 >> 连接指拨

      3 打开头盔 >> 自动连接手机 >> 此时指拨会断开自动重新头盔,或按键触发自动重连头盔

      4 断开头盔 >> 指拨断连

    6.1.2 指拨 >> 头盔 >> 手机

      1 按键指拨  >> 触发开机自动广播15s

      2 打开头盔 >> 后台自动扫描连接 >> 连接指拨

      3 打开手机  >> 自动连接头盔和指拨的数据 

      4 断开手机  >> 头盔和指拨还是自动保持连接

    6.1.3 

      指拨 + 手机+头盔 时,指拨优先连接头盔,指拨控制手机的操作应该是通过头盔转发的;

      指拨 + 手机 时,指拨控制手机的操作应该是通过手机app去调用的;

      指拨与设备连接后将会始终保持连接,直到手机app或头盔断开;

      指拨参数:广播时长30s;加密方式应该为标准加密的pin码加密,pin码通过指令在app中传输给指拨;

      头盔参数:头盔后台始终扫描;

      l-手机app连接,app关闭后重新打开,app不会自动重连指拨;

  6.2 d指拨

    1 打开指拨 >> 自动广播15s

    2 码表开机 >> 后台自动扫描连接

      码表与指拨建立连接后将始终保持连接,直到码表关机

      指拨参数:广播时长15s,发射功率4dB,加密方式大概为额外加了校验指令的加密方式,第三方设备不允许绑定;

  6.3 连接参数Interval

    由上可知平均电流主要由连接参数决定,所以在此把几个连接参数给列出来

    作为保持连接的空包,有26bytes;lRemote的ATT-payload为8bytes,空中包34bytes

    l_helmet + remote     >> Interval: 50 (62.5 msec) + Latency: 0 + Timeout: 400 (4000 msec);

    l_app + remote          >> Interval: 40 (50 msec) + Latency: 0 + Timeout: 500 (5000 msec);

    l_app + l_helmet        >> 

    d_码表 +dRemote      >> 初始化时 Interval: 40 (50 msec) + Latency: 0 + Timeout: 400 (4000 msec);

                 >> sdp后更新 Interval: 40 (50 msec) + Latency: 33 + Timeout: 510 (5100 msec);

posted @ 2026-01-21 11:31  rls_v  阅读(1)  评论(0)    收藏  举报