【BLE】TI CC2640R2F SDK结构以及一些概念解析
一、概述
CC2640R2F作为BLE单SOC解决方案, TI的SDK将工程分为应用程序(APP)和协议栈(Stack)两部分
二、协议栈
协议栈包括:主机(Host)和控制器(Controller),如下图所示
主机通常是一个软件栈,管理两台或多台设备间如何通信以及如何利用无线电同时提供几种不同的服务。
控制器通常是一个物理设备,它能够发送和接收无线电信号,并将这些信号翻译成携带信息的数据包。
Controller(控制器)
1、PHY(物理层Physical Layer)
采用2.4GHz无线电,完成电磁的传输和接收工作,无线电波通常可以在给定的某个频段内通过改变幅度、频率或相位携带信息,在低功耗蓝牙中,采用一种称为高斯频移键控(GFSK)的调制方式改变无线电波的频率,传输0或1的信息。
2、LL(链路层Link Layer)
负责发广播、扫描、建立连接以及确保数据包按照正确的方式组织、正确地计算检验值和加密序列等,简单来说就是负责两个BLE设备之间的发现、连接以及数据交互,并将数据按照一定的格式打包成报文再通过物理层进行操作。为实现广播、连接以及数据的传输,LL信道(简单理解为通信频道)分为广播信道(3个)和数据信道(37个)总计40个信道。其中广播信道固定为37、38、39,其余的均为数据信道。
3、HCI(主机-控制器接口Host-Controller Interface)
顾名思义,HCI提供主机和控制器的通信接口,它允许主机将命令和数据发送到控制器,并且允许控制器将事件和数据发送到主机。
蓝牙规范定义了4种物理接口:UART、3线UART、USB、SDIO,应用于系统中主机和控制器分别位于2个芯片上的情况。对于CC2640R2F这种单芯片设备,HCI体现为逻辑接口。
Host(主机)
1、L2CAP(逻辑链路控制和适配协议)
低功耗蓝牙的复用层,具有协议复用、分段重组、服务质量quality of service信息的交换、组抽象的功能。例如连接参数更新请求和响应就在这里实现。其定义了2个基本概念:L2CAP信道和L2CAP信令。对于BLE,有3条固定的信道
2、SM(安全管理器 Security Manager)
安全管理器定义了一个简单的配对和密钥分发协议,配对是一个获取对方设备信任的过程,通常采取认证的方式实现。
3、ATT(属性协议Attribute Protocol)
它由6种基本操作构成:请求、响应、命令、指示、确认、通知。定义了客户端与服务端如何相互发送符合标准的消息。
4、GATT(通用属性规范Generic Attribute Profile)
定义了客户端与服务端如何发现与使用服务、特性与描述符的标准方法。分为3种基本类型:发现规程、客户端发起规程、服务端发起规程。另外的交换MTU规程属于属性协议中的MTU交换请求。
发现规程:
4种需要发现的基本对象:首要服务、次要服务以及该服务实例所公开的特性和描述符。
发现服务:
有3种发现服务的途径:发现所有首要服务、按服务UUID发现首要服务、查找包含服务。
特性发现:
在服务被发现后,便可以发现每一个服务的特性,要获取完整的特性,需要发现特性和特性描述符。
客户端发起规程:
对于特性,客户端可执行:读取特性值、写入特性值、读取特性描述符、写入特性描述符。
服务端发起规程:
有2种GATT规程是由服务端发起的:通知(Notify)、指示(Indicate),其中
通知是服务端任何时刻都可以发送给客户端,而不需要客户端的确认便可以发送下一条消息。
指示是服务端任何时刻都可以发送给客户端,在进行下一次发送前服务端必须已经确认上一条消息被客户端接收到了。
5、GAP(通用访问规范Generic Access Profile)
定义了设备如何彼此发现、建立连接以及如何实现绑定,同时描述了设备如何成为广播者和观察者,并且实现无需连接的数据传输。
BLE定义了4类GAP角色:广播者、观察者、外围设备、中央设备。
三、应用程序
应用程序包括:用户的application、GAP角色设定、profile规范配置文件。
在这一层,我们根据实际需求将芯片设置为对应的角色(外围设备、中央设备),这一过程在GAP实现。
Profile包含了service(服务) 、characteristic(特性)
1、profile
profile可以理解为一种规范,一个标准的通信协议,它通常存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT ,防丢器 ,心率计等。每个profile中会包含多个service,每个service代表从机的一种能力。
2、service
service可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据
3、characteristic
characteristic特征值,ble主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。
4、UUID
UUID,统一识别码,我们刚才提到的service和characteristic,都需要一个唯一的uuid来标识。蓝牙联盟已经定义了许多标准的UUID,见博客,用户也可以自行定义的UUID格式,那么便只能被自己所理解而无法被采用UUID标准的设备所理解(会显示Unknow)
每个从机应用中都会有一个Profile的存在,Profile包含service, 用户可自行添加service,每个service又包含了多个characteristic,主机和从机之间的通信,均是通过characteristic来实现,即通信数据都存放于characteristic中。
四 、ICall
SDK将工程划分为2个工程(APP和Stack)进行管理,那么APP和Stack之间的通信便无法像常规API调用和全局变量方式进行消息传递,这时候便引入ICall(消息框架) 基于TI-RTOS提供服务(例如,同步线程、消息、事件)完成BLE协议栈和应用程序在两个工程的消息交互,保证了应用程序和协议栈在统一的TI-RTOS环境中完成高效运行、相互通信和资源共享。
【BLE】TI CC2640R2F SDK结构以及一些概念解析相关推荐
- 蓝牙相关学习:4.1.BLE空口包结构
BLE空口包结构 4.0 - 5.1 Uncoded PHY 空口包格式 Preamble (前导) Access Address (AA) 广播包 数据包 PDU CRC 5.1 Coded PHY ...
- TI AM5728 SDK升级之 linux设备树解析,以网口cpsw为例
如果一个结点描述的设备有地址,则应该给出@unit-address.多个相同类型设备结点的name可以一样,只要unit-address不同即可,如本例中含有cpu@0.cpu@1以及serial@1 ...
- ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking
#!/bin/sh# # ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking # 说明: # 本文主要对TI的sdk中的se ...
- ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking
#!/bin/sh# # ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking # 说明: # 本文主要对TI的sdk中的 ...
- ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking
#!/bin/bash# # ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking # 说明: # 本文主要对TI的sdk中的 ...
- 智能温湿度计原型设计-BLE 模组 SDK 开发
智能温湿度计原型设计-BLE 模组 SDK 开发 概况 温湿度传感器是一款常见的智能家居设备,通过温湿度传感器采集温度和湿度,用户可以通过 App 以温湿度为触发条件设置智能场景控制家电. 设想一下, ...
- CVPR2021 | 视觉推理解释框架VRX:用结构化视觉概念作为解释网络推理逻辑的「语言」
本文提出了一个视觉推理解释框架 (VRX: Visual Reasoning eXplanation),将人们容易理解的.high-level 的结构化的视觉概念作为「语言」,通过回答为什么是 A,为 ...
- CVPR 2021 | 视觉推理解释框架VRX:用结构化视觉概念作为解释网络推理逻辑的「语言」...
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者:葛云皓 | 编辑:Amusi 本文提出了一个视觉推理解释框架 (VRX: Visual Reaso ...
- 四.MongoDB 概念解析
1.MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们依次介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQ ...
最新文章
- 移动端打开html控制台,移动端中使用调试控制台 eruda
- 基于python的分类预测_机器学习算法(五): 基于支持向量机的分类预测
- [C# 开发技巧系列]如何动态设置屏幕分辨率
- 解决php获取不到Authorization问题
- vue 可视化布局工具_GitDataV一款Github的'大数据可视化平台'
- 605. 种花问题 golang 切片越界问题和逻辑操作符的思考
- c语言 swap交换函数_重审C中老生常谈的swap函数交换数值
- wepy公共样式_wepy组件化开发之html转换组件
- ArcEngine二次开发API之Bug集(一 )
- 最新最全论文合集——CCS 历年最佳论文汇总
- linux下编译ts工程,linux下搭建生成HLS所需的.ts和.m3u8文件
- android 头像球_【Android 界面效果44】Android之圆头像实例
- jquery,ajax动态从数据库加载数据并自动选中复选框
- Unity 性能优化:资源篇
- BEA提出SOA四大策略
- 计算机应用技术视频剪辑,windows10视频编辑器怎么用
- CydiaSubstrate框架
- effective C++ 第三版
- 【内网安全】——windows信息收集
- mysql添加用户操作方法