低功耗蓝牙4.0BLE编程-nrf51822开发(5)-链路层
链路层定义设备处于状态机中五种状态的一种:
(1)旁路状态;
处于此状态下的设备不发送或接收数据,处于其它状态下都可以转到此状态。
(2)广告状态;
处于此状态的设备发送广播包或者监听、响应广播包。可由旁路状态进入广告状态。
(3)扫描状态;
扫描状态监听广播信道上的处于广播状态发送的广播包。扫描状态也由旁路状态进入。
(4)发起状态;
处于此状态监听广播信道上的广播包并响应初始化一个连接。它也由旁路状态进入。
(5)连接状态。
由广播状态或发起状态进入。
任意时刻仅能处于五种状态中的一种,设备可能处于同时处于多种状态扮演不同的角色,但至少支持广告状态或扫描状态。
广播事件类型决定设备是否响应,下表每个广告事件允许响应的关系:
对于所有的非定向连接,两个广告事件之间的时间T_advEvent的计算公式如下:
T_advEvent = advInterval + advDelay
advInterval的值是0.625ms的倍数,介于20ms和10.24s之间的值。如果事件类型是一个可扫描的非连接事件,或者是一个非连接的非定向事件,它的值不能小于100ms;如果是可连接的非定向事件,它的值可以是20ms或更大。
advDelay的值是一个伪随机值,范围是0~10ms,它由广播事件产生。
advDelay的值的插入,使用两次广告事件之间的间隔是一个随机值,这样可以减小信道冲突的可能性。
可连接的非定向广播包使用ADV_IND PDU标志。可连接的非定向广播事件允许扫描者或发起响应。扫描者发送扫描请求(SCAN_REQ PDU)请求关于广告者的信息。发起者发送连接请求(CONNECT_REQ PDU)请求进入连接态。
如果广告者收到一个SCAN_REQ PDU(包含了扫描者的设备地址),它将在同一信道上回复一个SCAN_RSP PDU,当PDU发送完成后广告过滤器将禁止再处理SCAN_REQ PDU,它进入下一个信道发送ADV_IND PDU或停止广告事件。
如果广告者收到一个CONNECT_REQ PDU,如果广告发起者被广告过滤器允许,它将进入连接状态。如果不被允许,它将进入下一个信道发送ADV_IND PDU或停止广告事件。
两个连续ADV_IND PDUs之间的间隔必须小于或等于10ms:
设备地址
设备地址用于区分不同的设备,共48位,它是一个公共地址或是随机地址。设备至少包含一种地址或是两者都使用。
公共地址划分成两个部分:
随机地址划分成以下两个部分:
包格式
一个包由前导、访问地址、PDU和CRC组成:
前导是8位,访问地址32位、PDU2~39个字节、CRC是24位。
一个最短的包是80位,最长的包是376位。
PDU由头、净荷、MIC区域组成:
低功耗蓝牙4.0BLE编程-nrf51822开发(5)-链路层的更多相关文章
- 低功耗蓝牙4.0BLE编程-nrf51822开发(3)
蓝牙协议栈 nrf51822开发中,蓝牙协议栈和应用开发是分开的. (1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支 ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(9)
Android 4.3以后的系统自动支持蓝牙4.0规范的低功耗蓝牙(BLE).在android4.3之前,蓝牙4.0支持是由手机厂家加入支持的,接口各异,导致开发一个支持蓝牙4.0程序支持市面上的手机 ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(1)
为了省钱,也为了提高手动能力,只买了块核心板,仿真器用的是旧的jinkv7,自己搭扩展板,DIY就这样开始了. 买这块之前做了些调查,最终选定了nrf51822,功耗低,性能强,开发难度小,虽然比TI ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(4)
蓝牙是一种短距离的通讯方式,它设计的意图是取代电子便携设备之间的有线电缆连接.蓝牙的主要特性是健壮性.低功耗.成本低,它工作于免费的2.4无线传输频段. 蓝牙有两种技术系统:基本速率Basic Rat ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(2)
相关下载:http://download.csdn.net/detail/xgbing/9565708 首先看的示例是心率计一个示例程序:<KEIL path> \ARM\Device\N ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(11)-蓝牙串口代码分析
代码实例:点击打开链接 实现的功能是从uart口发送数据至另一个蓝牙串口,或是从蓝牙读取数据通过uart打印出数据. int main(void) { // Initialize leds_init( ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(7)-SDP服务发现协议
SDP的全称是Service Discovery Protocol,中文是服务发现协议.SDP(服务发现协议)是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础.在蓝牙系统中.客 ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(6)-Battery Service
Battery Service是有关电池特性方面的服务,如果需要它,在初始化时将它加入到蓝牙协议栈. 如果通过ble_bas_battery_level_update(),电池电量将会通知,Batte ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(10)-描述符
特性中的属性有两种:属性值或描述符. 支持通知或指示的特性中默认有一个描述符:客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCC ...
随机推荐
- 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...
- linux gdb 没有符号表被读取。请使用 "file" 命令。
使用gdb时遇到这个问题,刚开始接触linux下使用gdb调试程序,其原因是生成的二进制可执行文件没有使用-g选项. gcc中-g选项是为了获得有关调试信息,要用gdb进行调试,必须使用-g生成二进制 ...
- 常用移动web开发框架研究分析
纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile .Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族 ...
- Mysql_mysql force Index 强制索引
其他强制操作,优先操作如下: mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的h ...
- 连接sql server的语句
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- C# - JSON操作
Newtonsoft.dll插件 http://download.csdn.net/detail/xinping_168/4710720 洪大师二次封装: using System; using Sy ...
- CSS3系列:魔法系列
一.三角形 #wrap div{ margin: 0 auto; } .triangle_three { height:0px; width:0px; border-bottom:50px solid ...
- php数组操作,删除第一个和最后一个元素
对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. ( ...
- CodeForces 625A 思维
题意是说一个人喝酒 有两种办法 买塑料瓶的 a块钱 喝了就没了 或者是买玻璃瓶的b块钱 喝完还能卖了瓶子c块钱 求最多能喝多少瓶 在开始判断一次 a与b-c的关系 即两种方式喝酒的成本 如果a< ...
- Redis 笔记与总结8 PHP + Redis 信息管理系统(分页+好友关注)
分页 要对列表页进行分页,需要知道: ①用户总数 $count ② 页大小 $pageSize:用户自定义 ③ 当前页:$page:GET 方式获取 ④ 总页数:$pageCount = ceil($ ...