博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝牙 (七) 蓝牙数据
阅读量:4285 次
发布时间:2019-05-27

本文共 1798 字,大约阅读时间需要 5 分钟。

  • 物理层
1/ BLE 使用 2.4Ghz工业 科学 及 医疗 频段 (ISM).(2402Hz - 2480Hz )2/ GFSK 调制 , 物理层比特率 1Mbit/s 1Mbps3/ 40个通道, 37个自适应自动调频数据通道 用于两个连接设备的通讯, 3个固定广播通道 37(中心频率,2402Hz) 38(2426) 39(2480)4/ 发射功率 (0.01mW(-20dBm) - 10mW(10dBm)) // 弱到强. 一般 接收到的频率为 -35dBm
  • 链路层
链路层有 报文结构	前导码(1字节) + 接入地址(4) + PDU() + CRC(3,对PDU的计算) 	硬件实现 		硬件实现  	 软件实现 		  硬件实现						分两种							广播接入地址是固定的 0x8e89bed6							数据接入地址由 主机在发起态通过连接请求发送给从机.PDU // 分为 广播通道和 数据通道	报文(1字节) + 长度(1) + 数据净荷(0-296bit,0-37byte)数据流是小端的,低字节先传送.状态有 5 个状态			扫描态			  ︿			  ﹀广播态	‹›	就绪态	‹›	发起态	  ↘	  ︿      ↙			连接态数据在空中传播前最后一步是经过白化(FSK接收机接收连续相同bit能力差,白化,使数据随机化)处理的.在接收的第一步经过硬件去白化,然后再进行 CRC校验.
  • radio
上面说的是 链路层的软件部分并没有涉及到具体怎么驱动硬件,而是说的是怎么调用驱动发送 PDU.那么 这一部分 就是 radio 的驱动.radio 也包括一个状态机 , 和  链路层的状态机不同.在链路层的 连接态 之内, radio 也 涉及到 状态切换. 所以看来 这两个状态机没有特别具体的联系关系.1. 发送 easy DMA	将 PDU包的地址 赋给 寄存器,  然后 DMA 就 主动开始发送数据.2. 包结构3. 设备地址-白名单4. radio 的状态机和时间参数5. radio 的 基本配置

  • 最底层的包
链路层有 报文结构	前导码(1字节) + 接入地址(4) + PDU() + CRC(3,对PDU的计算) 	硬件实现 		硬件实现  	 软件实现 		  硬件实现						分两种							广播接入地址是固定的 0x8e89bed6							数据接入地址由 主机在发起态通过连接请求发送给从机.
  • 广播通道包 及数据通道包
PDU // 分为 广播通道和 数据通道	报文(1字节) + 长度(1) + 数据净荷(0-296bit,0-37byte)广播通道的 PDU	报文类型数据通道的 PDU	LLID
  • 数据净荷
广播信道的数据净荷	由多个 AD(advertising and scan response data) 组成	AD 格式		长度 (1字节,数据的长度) +  数据(类型(1个字节)+类型数据)						数据信道的数据净荷	L2CAP包
  • L2CAP包
length (2字节) + channel ID (2) + information payloadchannel ID	0x0004 属性协议 ,在 att 组包, gatt 使用 	0x0005 低功耗信令通道  , 在 l2cap 组包 , gap 使用	0x0006  安全管理协议 , 在smp 组包.
  • 0x0005
information payload	code(1字节)  + identifier(1) +  length(2,data的字节数) + datacode :	0x00 : 保留,没有用到	0x01 : 命令拒绝	0x12 : 连接参数更新 请求 // 连接参数的第一次确定是在 发起态的 CONNECT_REQ 中 , 设定了 连接间隔时间,和从机潜伏次数 .							//	而这里是建立连接之后的 连接态中(且是从机发给主机)的 一个命令,可以 提出 更改(连接间隔时间和从机潜伏次数)的建议 							//  在 建立连接之后的 连接态中(且是主机发给从机) (数据信道的数据净荷中, LL_CONNECTION_UPDATE_REQ), 也可以改变 连接参数. 	0x13 : 连接参数更新 应答

转载地址:http://tligi.baihongyu.com/

你可能感兴趣的文章
探究 Android MVC、MVP、MVVM 的区别以及优缺点
查看>>
深入分析 Handler 内存泄露
查看>>
解决 windows 文件被占用的问题 -- The action can‘t be completed because the folder is open in another program
查看>>
Tencent/matrix错误:Cause: need sign apk but apksigner *\Sdk/build-tools/*/apksigner was not exist
查看>>
Android6.0运行时权限详解
查看>>
Android 开机启动过程
查看>>
View 的事件分发机制(一)
查看>>
Android 面试题整理(一)
查看>>
Android 项目中打印Log的优化
查看>>
Github 客户端安装失败解决办法
查看>>
android studio:###Error:Dependency :common:unspecified on project resource resolves to an APK
查看>>
异常统一处理的一些思路
查看>>
Android studio中快速try catch的快捷键
查看>>
Dialog 和 Toast
查看>>
队列在Http请求中的一点理解
查看>>
好想在你身边
查看>>
写给还在迷茫中挣扎的你
查看>>
在迷茫中执着前行
查看>>
笔记本连接无线但不能上网,网速极慢
查看>>
小蜗牛,慢慢爬
查看>>