[BT & BLE] Piconet时钟调整

1. 范围: BT

2. 协议 :

关于Piconet时钟调整,有两套机制:Coarse CLK Adjustment和CLK Dragging

Coarse CLK Adjustment

首先Master通过LMP_CLK_ADJ包广播给所有的Slave设备,这个LMP包中包含两个参数:CLK_adj_slots和clk_adj_us;clk_adj_slots就是什么修改CLK的Instant点,clk_adj_us就是新CLK与旧CLK之间的间隙,有增负之分。
然后Slave需要LMP_CLK_ADJ_ACK对Master的LMP包进行确认。如果master没有接收到ACK包,需要一直poll包给Slave设备,知道获取ACK信息。如果Slave没有Ack,master至启动Coarse clk adjustment的恢复模式。
Master和slave都会在自己时钟基准偏移加上(clk_adj_slots * 625 + clk_adj_us),如果发生在多包发送slot时,会延续到下一个mast_2_slave的时隙上进行调整。如果role_switch影响了时钟调整,那么时钟调整就会丢弃。时钟调整效果就是所有设备都使用新的时钟域。
举例说明:
1:当clk_adj_instant=12,clk_adj_slot=6, clk_adj_us=400us。那么时间需要往前移动。6625+400=4150us。详见下图:
[BT & BLE] Piconet时钟调整_第1张图片
2:如果把clk_adj_slots=0,clk_adj_us=-400us。那么时间往后移动:0
625+(-400)=-400us,详见下图:
[BT & BLE] Piconet时钟调整_第2张图片

CLK Dragging

Master周期性调整时钟基准直到完成目标时间调整,每次调整时间应该小于3us,在任何125ms的周期内,总的调整应该小于等于5us.

LMP空口交互协议

LMP PDU格式介绍
[BT & BLE] Piconet时钟调整_第3张图片
与其他协议类型。时钟调整可以由master发起,同样也可以由slave发起。
Master发起调整时钟,当然所连接slave都要支持该特性。空口交互如下图:
[BT & BLE] Piconet时钟调整_第4张图片
Slave发起调整时钟,空口交互如下图:
[BT & BLE] Piconet时钟调整_第5张图片
如果Master拒绝Slave请求,需回复LMP_NOT_ACCEPTED_EXT,如下图:
[BT & BLE] Piconet时钟调整_第6张图片

总结

该特性是Core4.1增加的新特性,用于提高共存时,蓝牙和其他无线传输的吞吐。

你可能感兴趣的:(#,BR/EDR)