EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。蓝牙低能耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。另外,因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路。$ g% ?% {3 k" \- }% J
& n# T/ Y# {! F% D9 i. tBLE技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)。5 Q7 T( o- l P4 ~1 U1 F/ E Z* l
' R+ L3 H I! B8 J% U2 Z$ a+ D" N- }% ?' C! O( g2 g
0 {# v. Q- \& F$ x: h下面就用趣说的方式,介绍一些BLE协议栈,帮助大家理解。$ A( K- B: Y# D9 J4 l, u- q, S
( T- ~5 [% b- l6 R* b% A9 s& L, B9 S5 o6 F
5 w. c5 G Y6 k& s0 a" e5 x- v7 Z$ `( A- D2 H0 r
附图 BLE蓝牙协议栈结构图 5 h, z2 h5 E4 e
9 n% }: x a1 i2 \5 `5 N分为两部分:控制器和主机。对于4.0以前的蓝牙,这两部分是分开的。所有profile(姑且称为剧本吧,用来定义设备或组件的角色)和应用都建构在GAP或GATT之上。下面由结构图的底层组件开始介绍。: \) U" y4 |: c: M9 n# P, ]
1 {# @8 {- b4 i/ o0 i- u$ i· PHY层,工作车间,1Mbps自适应跳频GFSK(高斯频移键控),运行在2.4GHz; Y; t1 }9 Y8 P, R! B- l
· LL层为RF控制器,控制室,控制设备处于准备(standby)、广播、监听/扫描(scan)、初始化、连接,这五种状态中一种。五种状态切换描述为:未连接时,设备广播信息(向周围邻居讲“我来了”),另外一个设备一直监听或按需扫描(看看有没有街坊邻居家常里短可聊,打招呼“哈,你来啦”),两个设备连接初始化(搬几把椅子到院子),设备连接上了(开聊)。发起聊天的设备为主设备,接受聊天的设备为从设备,同一次聊天只能有一个意见领袖,即主设备和从设备不能切换。" I* [2 O+ l8 r
· HCI层,为接口层,通信部,向上为主机提供软件应用程序接口(API),对外为外部硬件控制接口,可以通过串口、SPI、USB来实现设备控制。
4 x/ Y" D5 t4 \( Y* d9 P· L2CAP层,物流部,行李打包盒拆封处,提供数据封装服务9 t9 a; r. M5 x+ Q8 l; G
· SM层,保卫处,提供配对和密匙分发,实现安全连接和数据交换
: K1 j7 C! {8 T+ V, G) p· ATT层,库房,负责数据检索) m9 \7 i" ~7 R" ?7 m
- l" q) Z' n! V, V0 E7 P· GATT层,出纳/库房前台,出纳负责处理向上与应用打交道,而库房前台负责向下把检索任务子进程交给ATT库房去做,其关键工作是把为检索工作提供合适的profile结构,而profile由检索关键词(characteristics)组成。# ? _$ ~, B; @: W' N# \4 g( @$ g! Y2 ~, P3 b1 |8 V Y
· GAP层,秘书处,对上级,提供应用程序接口,对下级,管理各级职能部门,尤其是指示LL层控制室五种状态切换,指导保卫处做好机要工作。! F1 R( S. A: d3 r0 n6 l4 ~8 s9 ]1 d6 k/ J' g. I" ^" H
TI的这款CC2540器件可以单芯片实现BLE蓝牙协议栈结构图的所有组件,包括应用程序。
m o# V; b" z+ D/ H9 [' A( V0 B6 Z# P0 h
9 m: S1 b1 z6 `( C% S" b3 F; E8 \3 n0 D- F# T
2、任务调度---OSAL操作系统抽象层5 L. ~1 U; ]0 h }+ K0 |8 J
! x3 Z9 @* x/ C4 q( ~; j0 L- H正如一个公司为了实现扩大产能和产品多样化,建立了多个办公室和工厂一样,蓝牙为了实现同多个设备相连,或实现多功能,也实现了功能扩充,这就产生了调度问题。因为,虽然软件和协议栈可扩充,但终究最底层的执行部门只有一个。! {7 y. Q) k Z4 x0 B" f! M! [% _8 n: W' M0 ^
为了实现多事件和多任务切换,需要把事件和任务对应的应用,以及其相关的提供支撑“办公室”和“工厂”打包起来,并起一个名字OSAL操作系统抽象层,类似于集团公司以下的子公司。 ?& Y9 n( z% ]* l2 {
/ m; Y* P; ?) w: x1 S1 }) k0 x# K {& Q8 @4 ] d
5 Q- i/ C+ ~2 }5 q( w. A, W( P8 z# q/ s7 d" u
3、设备改造---HAL硬件抽象层! C& x' z; Z4 B% V
如果实现软件和硬件的低耦合,使软件不经改动或很少改动即可应用在另外的硬件上,这样就方便硬件改造、升级、迁移后,软件的移植。HAL硬件抽象层正是用来抽象各种硬件的资源,告知给软件。其作用类似于嵌入式系统设备驱动的定义硬件资源的h头文件。其角色类似于现代工厂的设备管理部。$ z/ V5 M) f6 {' y7 ]8 s
0 J& N5 N. O. U! u. X2 O
* I& P+ R5 a* d! S [( b. `: b/ q( e* `' P4 E- \5 a; i" ~
4、BLE低功耗蓝牙系统架构, x; `" H$ B/ B7 G/ I8 a& Z$ a
! d2 K5 N! A- D0 g0 M* @+ _; j& Q. W( A/ ~ Z# m
附图 BLE低功耗蓝牙系统架构图 M# G: g9 l! w3 u8 f: I
# t0 }6 z. E2 W" H$ M1 F: X图中的Task用BLE蓝牙协议栈结构图来描述7 {4 f" q7 w9 d0 E% E
, ^3 E& l, I: O% B2 `- P0 j* `0 p+ ?% z, j& I. E. b& A7 A
* @: c4 r6 {. d9 H( f& g) Y2 nBLE低功耗蓝牙软件有2个主要组成: OSAL操作系统抽象层和 HAL硬件抽象层,多个Task任务和事件在OSAL管理下工作,而每个任务和事件又包括3个组成:BLE 协议栈,profiles和应用程序。6 J# E& u8 ?9 V; ^. y4 f- v" W8 m6 A* Z4 ~6 [
附图7同样可以用现代工厂模式来类比,如附图8。
8 U' H& \3 \& \$ y; I6 v
1 H2 p$ i2 k6 }% i$ y% Y' D附图 BLE低功耗蓝牙软件5个主要组成用现代工厂架构来类比。
. g v, j" A; h3 h+ x% P8 X' e: r+ N; M4 D* [" ?8 t
% p3 d/ W2 E8 G0 q |