约定, 第一次翻译这种东西, 专有名词的翻译原则还是不太清楚, 总之涉及有可能误解的词, 都用双语, 如果是简单的, 直接英文或者中文, 取决于我是否能找到中文合适的词来翻译.
何为BLE:
1. 是一种蓝牙联盟Bluetooth Special Interest Group(BT-SIG)制定的无线传输协议, TI是联盟成员
2. 基于蓝牙4.0加入了一些新特性, 蓝牙4.0早于2010年6月就公布了.
3. BLE主要目标是低功耗, 低延时与低数据量的需求
4. 主要围绕智能手机与PC生态, 当然也能用在其他应用场景.
5. 在未来5年预计会有billions级别的设备被激活.
6. 并不向下兼容传统蓝牙设备.
架构/配置
1. 协议站包括两个区域:
Controller/Host 控制器与主机
Profiles跟Application在Host的GAP跟GATT层的顶端.
2. 在单一设备的解决方案中(或者说单一芯片解决方案), host, controller, profiles, 跟application都是在一个芯片上共同实现的.
3. 在双设备解决方案中, BLE控制器使用单独设备实现, 而host, application跟profiles是另一个设备.
4. 在网络处理(network processor)中, host跟controller在一起实现, 但是applicatoin跟profiles在另一个设备上, 比如PC上面, 你的应用程序在OS上面跑, 而蓝牙硬件在主板上跑.
5. CC2540可以支持上面所有的配置.
回头补充图片, Mac上面不知道怎么截图.
物理层(Physicial Layer)
RF
1. 使用2.4GHz ISM频段(band), ISM即工业, 科研, 医疗频段
2. 40个频道(channel), 每个2MHz间隔, 其中包括3个广告channel用来广播(broadcasting), 用来避免802.11即Wi-Fi的冲突. 37个动态频率
3. 物理层可以跟传统蓝牙在双模式(dual-mode)设备下一起工作.
这里也有张channel的图, 回头补上
链接层(Link Layer)
状态跟拓扑
1. 链接层有6种可能的状态:
a. 等待(Standby)
b. 广告(Advertiser)
c. 扫描中(Scanner)
d. 初始化(Initiator)
e. 主机(Master)
f. 丛机(Slave)
2. BLE是一个星形拓扑, Master可以管理连接(connection), 也可以连接多个slave, slave只能连接一个master(要不怎么叫slave呢).
广告事件(Advertisement Events)
1. 一个设备在广告状态将传输广告包
a. 广告包会包含一些数据
b. 广告包能发送给指定的扫描设备, 或者不指定
c. 广告设备能被连接, 或者不能被连接, 不能被连接的就是一个纯广播设备.
2. 在一个广告事件(advertising event)中, 一个广告包会在三个广告频道中依次传输(37, 38, 39)
广告间隔
1. 广告设备有一个广告间隔(你不能一直广告, 不然累死), 指定了两个广告事件中的最短时间.
2. 这个间隔可以是20ms跟10.24s之间.
3. 链接层会生成一个在广告事件中穿插的假随机时间, 在0-10ms之间, 用来避免广播设备之间产生同步.
广告类型
1. 广告包可以包含一些数据, 而单纯广播包是不需要连接的.
2. 下面是4种广告:
a. 可连接, 无指定设备(Connectable undirected): 即谁都可以连接.
b. 可由指定设备连接: 即只能由指定设备发起连接
c. 不能连接, 但是不指定设备: 通常用来当广播设备用
d. 可发现, 无指定设备: 所有人都可以扫描到设备, 但是没法连接.
扫描(Scanning)
被动扫描
1. 扫描者会监听广告频道
2. 当收到广告包的时候, 将它交给host处理
主动扫描
区别是收到广告包之后, 会主动发起连接请求
连接初始化(Connection Initiation)
1. 当一个扫描设备连接到一个可连接的广告消息时, 它可以由发送连接请求包给广告设备变成初始化状态
2. 连接请求中包含一套链接层参数, 包括后面会说到的有关时序的东西.
3. 一旦广告设备接受连接, 两个设备会进入连接状态, 负责初始化的设备会成为master, 广告设备会成为slave
连接参数
频道映射(channel map): 指定哪些频道可用
调频系数(hop increment): 从5到16的随机值, 用来作为频道的选择值, 后面会说到怎么选
连接间隔(connection interval): 1.25ms的倍数, 范围是7.5ms到4.0s
超时时长(supervision timeout): 10ms的倍数, 在100ms到32s之间, 比如大于(1+slave lantency)*(connection interval)
从机延迟(slave latency): 一个从0-499的系数, 不能大于(supervision timeout/conInterval)-1
连接事件(connection events)
类似可以理解成一次回话
1. 所有已连接设备的通讯都发生在连接事件中
2. 连接事件是周期性发生的, 间隔是由connection interval这个参数指定的, 比如指定15ms, 那么就会每15ms发生一次连接事件.
3. 每个事件都会占用一个频道(0-36), 而调频系数会决定下一次选择哪个频道.
4. 每个连接事件中, master会先传输 然后slave会在150us后回应.
5. 在一个连接事件中, master跟slave可以来回传输多次数据.
从机延迟(slave latency)
1. SI允许从机在没有数据要发送的情况下跳过若干个连接事件
2. 从机延迟参数指定了能跳过的最大的连接事件数量, 比如设定成499, 就可以跳过499次连接间隔时间, 500次连接事件中, 相应一次即可
3. 如果slave不相应本次连接事件, master会在下次slave回应的时候再传输数据.
4. "有效的连接间隔"就是当slave跳过了最大的从机延迟之后两个连接事件的时间长度. 比如, 如果连接间隔是100ms, SI是4, 那么有效的连接间隔就是(1+4)*100ms=500ms.
5. 无论跳过多少次, 最大时间不能超过32s.
总结一下:
短时间间隔带来两侧高功耗, 高传输效率, 低等候时间, 反之你懂的.
低/无从机延迟带来外设(Peripheral)的高功耗跟从外设到中心设备的高速数据传输(相对的).
高从机延迟能实现外设的低功耗.