BLE入门|BLE入门 16
蓝牙设备工作状态:
- 从机设备广播状态:
Connectable LE Coded -> LE Coded
Connectable LE Coded -> 2M on aux - 主机连接从机过程:
主机在2M PHY 下建立连接
2M PHY切换到1M PHY - 蓝牙MAC地址:
Slave: 0xF0F8F2D2BB7F
Master: F0:F8:F2:1F:57:1B
文章图片
蓝牙连接
下图是一个请求连接全过程,总共分为6个阶段,1-4阶段为广播,5为请求连接,6为回应连接。
1-4阶段分析请参考上一篇文章:
5,6阶段发生在数据信道上,5为连接请求,因为是专属蓝牙5连接,可以看到其指令为AUX_CONNECT_REQ(主请求),AUX_CONNECT_REQ携带的参数和BT4.2并无太大差异,hopping channel,interval,latency等等。
在接收到信号之后从机会回应一帧AUX_CONNECT_REP。
文章图片
文章图片
文章图片
PHY层更新
【BLE入门|BLE入门 16】如上面所示,Sniffer是在2M PHY下建立的连接,整个抓包实验,我把蓝牙的PHY 从2M PHY更新到1M PHY,最后更新到Coded PHY,三个阶段,如下图所示。
文章图片
2M -> 1M PHY更新和Coded PHY更新
从下图可以看到,更新PHY阶段有三个阶段,主机发送更新请求:LLCP_PHY_REQUEST,在下图右下可以看到,主机请求更新PHY 层到1M PHY, 从机接收到请求,并回复LLCP_PHY_RESPONSE,RSPONSE中回复主机可以用1M PHY,最后主机发送LLCP_PHY_UPDATE,进过几个数据包的调整之后方能更新到1M PHY上。
文章图片
文章图片
文章图片
文章图片
1M PHY -> Coded PHY更新
文章图片
文章图片
文章图片
文章图片
总结
文章图片
文章图片
参考
https://mp.weixin.qq.com/s/c0eZi1J4B9CrbXsEuCz0CA
推荐阅读
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 杭电oj——2030汉字统计
- tableView|tableView 头视图下拉放大 重写
- Android|Android BLE蓝牙连接异常处理
- typeScript入门基础介绍
- 前端代码|前端代码 返回顶部 backToTop
- 【译】Rails|【译】Rails 5.0正式发布(Action Cable,API模式等)
- Android|Android sqlite3数据库入门系列
- #12-UITableView|#12-UITableView 优化方案
- Android下的IO库-Okio源码解析(一)|Android下的IO库-Okio源码解析(一) 入门