TI CC254x BLE教程 1
约定, 第一次翻译这种东西, 专有名词的翻译原则还是不太清楚, 总之涉及有可能误解的词, 都用双语, 如果是简单的, 直接英文或者中文, 取决于我是否能找到中文合适的词来翻译.
何为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)的高功耗跟从外设到中心设备的高速数据传输(相对的).
高从机延迟能实现外设的低功耗.
TI CC254x BLE教程 1的更多相关文章
- TI CC254x BLE教程 4
TI的CC254x芯片 1. SoC 2. RF收发器+8051MCU 128/256KB Code空间. 3. Master或者Slave 4. 可编程flash 5. 8KB SRAM 6. 全软 ...
- TI CC254x BLE教程 2
连接更新请求(connection update request) 如果slave不满意现有的连接参数, 比如间隔, 延迟等等, 可以向master提出自己希望的参数范围 连接终止(connectio ...
- TI CC254x BLE教程 3
通用属性配置(Generic Attribute Profiles) 1. 数据在services里面以特征字(characteristics)的形式展示出来 如你所见, 特征字包含属性(Proper ...
- 【转】TI蓝牙BLE 协议栈代码学习
BLE就是低功率蓝牙.要着重了解两种设备: dual-mode双模设备:简单说就是向下兼容. single-mode单模设备:仅仅支持BLE. 关于开发主要讲的是单模设备,它可以只靠纽扣电池即可持 ...
- BLE教程 - 官方tutorial翻译
关键术语和概念 1. Generic Attribute Profile(GATT)GATT配置文件是一个通用规范,用于在BLE链路上发送和接收被称为"属性"的数据块.目前所有的B ...
- TI CC2541 BLE协议栈蓝牙MAC 地址
在Flash中有一块只读区域,从地址0x780E开始,蓝牙的MAC以小端方式存放在里面. 在TI的Peripheral例程里面,添加一个特征值,只读属性,6字节长度(蓝牙MAC长度为48-bit,6字 ...
- BLE资料应用笔记 -- 持续更新
BLE资料应用笔记 -- 持续更新 BLE 应用笔记 小书匠 简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.'让我们'更深入地探索这些方面吧. 蓝牙无处不在-,您可以在几乎每一台电话.笔记本电 ...
- BLE资料应用笔记 -- 持续更新(转载)
简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.’让我们’更深入地探索这些方面吧. 蓝牙无处不在—,您可以在几乎每一台电话.笔记本电脑 .台式电脑和平板电脑中找到蓝牙.因此,您可以便利地连接键盘 ...
- TI低功耗蓝牙(BLE)介绍
TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer’s Guide (Rev. B),部分图片直接引用 ...
随机推荐
- 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的. 2.考虑可扩展性,猫的叫声可能引起其他联动效应. 我么能事件来一步一步来实现: 将要执行的老鼠逃跑,和主人惊醒的行为注册到事件中,猫叫之后引发事 ...
- Linux命令行–初识Linux shell
shell及脚本简介 GNU/Linux shell 是个交互工具,它为用户提供了启动程序.管理文件系统上的文件以及管理运行在Linux系统上的进程的途径 . shell的核心是命令行提示符 它是s ...
- Sublime插件库新成员基于APICloud快速开发跨平台App
互联网时代强调用户体验,那什么是HTML5跨平台App开发者的编程体验?“不剥夺.不替换开发者喜欢的开发工具,就是人性化的用户体验”,APICloud给出了这样的答案! 重磅发布“多开发工具支持策略” ...
- Map小记
Corelocation地理定位Map Kit地图展示 在移动互联网的时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边找餐馆找酒店,找银行,找电影院在上述应用中都用到了地图 ...
- 线性四叉树十进制Morton码计算示例
线性四叉树十进制Morton码计算,具体算法描述龚健雅<地理信息系统基础>P108
- nginx + keepalived 双机热备
序 双机热备是指两台机器都在运行,但并非两台机器同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短. keepalived的工作原理是VRRP—— ...
- SQL Update实现使用一个表的数据更新另一张表
表结构 功能 SQL Serevr Access 表结构
- iOS 瀑布流的Demo
/** * 瀑布流Demo的主要代码,若想看完整的代码请到下面链接去下载 * * 链接: https://pan.baidu.com/s/1slByAHB 密码: r3q6 */ #import &l ...
- Xcode 6.x 添加Empty Application模板
Xcode 6.x 添加Empty Application模板 在Apple最新的XCode6.x中没有了Empty Application模板,这对一个老人来说是不能别接受的,同时也可以看出Appl ...
- org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map
mybatis 出现这个错误是 参数类型写错了.parameterType 写成了parameterMap