链路层定义设备处于状态机中五种状态的一种:

(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)-链路层的更多相关文章

  1. 低功耗蓝牙4.0BLE编程-nrf51822开发(3)

    蓝牙协议栈 nrf51822开发中,蓝牙协议栈和应用开发是分开的. (1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支 ...

  2. 低功耗蓝牙4.0BLE编程-nrf51822开发(9)

    Android 4.3以后的系统自动支持蓝牙4.0规范的低功耗蓝牙(BLE).在android4.3之前,蓝牙4.0支持是由手机厂家加入支持的,接口各异,导致开发一个支持蓝牙4.0程序支持市面上的手机 ...

  3. 低功耗蓝牙4.0BLE编程-nrf51822开发(1)

    为了省钱,也为了提高手动能力,只买了块核心板,仿真器用的是旧的jinkv7,自己搭扩展板,DIY就这样开始了. 买这块之前做了些调查,最终选定了nrf51822,功耗低,性能强,开发难度小,虽然比TI ...

  4. 低功耗蓝牙4.0BLE编程-nrf51822开发(4)

    蓝牙是一种短距离的通讯方式,它设计的意图是取代电子便携设备之间的有线电缆连接.蓝牙的主要特性是健壮性.低功耗.成本低,它工作于免费的2.4无线传输频段. 蓝牙有两种技术系统:基本速率Basic Rat ...

  5. 低功耗蓝牙4.0BLE编程-nrf51822开发(2)

    相关下载:http://download.csdn.net/detail/xgbing/9565708 首先看的示例是心率计一个示例程序:<KEIL path> \ARM\Device\N ...

  6. 低功耗蓝牙4.0BLE编程-nrf51822开发(11)-蓝牙串口代码分析

    代码实例:点击打开链接 实现的功能是从uart口发送数据至另一个蓝牙串口,或是从蓝牙读取数据通过uart打印出数据. int main(void) { // Initialize leds_init( ...

  7. 低功耗蓝牙4.0BLE编程-nrf51822开发(7)-SDP服务发现协议

    SDP的全称是Service Discovery Protocol,中文是服务发现协议.SDP(服务发现协议)是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础.在蓝牙系统中.客 ...

  8. 低功耗蓝牙4.0BLE编程-nrf51822开发(6)-Battery Service

    Battery Service是有关电池特性方面的服务,如果需要它,在初始化时将它加入到蓝牙协议栈. 如果通过ble_bas_battery_level_update(),电池电量将会通知,Batte ...

  9. 低功耗蓝牙4.0BLE编程-nrf51822开发(10)-描述符

    特性中的属性有两种:属性值或描述符. 支持通知或指示的特性中默认有一个描述符:客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCC ...

随机推荐

  1. jsp错误解决办法

    jsp页面出现"<%@"的错误提示的解决办法 原因是缺少jar包,在tomcat下的lib中找到servlet-api.jar复制到工程的webcontent->lib ...

  2. LightOJ1257 Farthest Nodes in a Tree (II)(树的点分治)

    题目给一棵树,边带有权值,求每一点到其他点路径上的最大权和. 树上任意两点的路径都可以看成是经过某棵子树根的路径,即路径权=两个点到根路径权的和,于是果断树分治. 对于每次分治的子树,计算其所有结点到 ...

  3. 新旧各版本的MySQL可以从这里下载

    http://downloads.mysql.com/archives/

  4. TYVJ P1037 阶乘统计2 Label:坑

    描述 n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少  输入格式  第一行包括两个数n,k  输 ...

  5. 【BZOJ】1082: [SCOI2005]栅栏(二分+dfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1082 题意:n个给出木板,m个给出木板.可以将那m个木板锯成泥想要的长度.问最大能锯成多少个给出的n ...

  6. 低调的华丽,Windows Server 2003 ... 写给厌倦了XP,但又纠结于vista/win7花哨的童鞋(转)

    发布于2001年10月25日的windows XP 距今已近8年 时间, 微软从没有一个操作系统能像XP那样  坚挺这么久,婚姻既有7年之痒,何况用了8年XP的广大 同学,但07年发布的vista似乎 ...

  7. QInputDialog 使用方法

    在Qt中,如果想快速生成一个对话框,可以和用户进行简单的交互,而不需要写一个新的类的时候,就要用到QInputDialog类,这个类就是专门用来建立简单对话框的,其主要能建下列几种对话框:

  8. SVN版本管理系统的安装 CentOS + Subversion + Apache + Jsvnadmin

    CI服务器:192.168.4.221 root用户操作                            建议安装前更新操作系统 # yum update 更新完成后重启 # reboot 安装 ...

  9. PAT (Top Level) Practise 1008 Airline Routes(Tarjan模版题)

    1008. Airline Routes (35) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Given a ...

  10. NBUT 1525 Cow Xor(01字典树+前缀思想)

    [1525] Cow Xor 时间限制: 2000 ms 内存限制: 65535 K 问题描述 农民约翰在喂奶牛的时候被另一个问题卡住了.他的所有N(1 <= N <= 100,000)个 ...