蓝牙低功耗的产品有蓝牙profile协议吗

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)1445人阅读
无线相关(64)
本文译至:
翻译说明:因为该连载主要是关于设备上应用开发的,这个不是很感兴趣,所以仅仅翻译了最开始的这部分。
您好,我是共同开发部的开发负责人伊藤。
我们公司的共同开发部门和其他许多公司一样,在iOS,安卓,Windows手机和Windows 8等多种平台上开发出各种各样的应用程序。
到目前为止,我们已经在开发人员的博客介绍相关的技术,这周开始我们想向大家集中介绍低功耗蓝牙技术。
最近支持低功耗蓝牙的设备越来越多,最早只有iOS可以使用,现在Android 4.3,甚至是Windows 8.1也逐渐可以使用,所以变得越来越热门。所以相关的介绍应该可以对大家有所帮助。
第1回 低功耗蓝牙基础
关于低功耗蓝牙
Bluetooth Low Energy (也被称为Bluetooth 4.0、BLE、BTLE),下面记作BLE,是使用2.4GHz的无线短距离无线通信标准。 迄今为止,虽然高速蓝牙已经实现,但BLE在通讯速度上比较普通,主要强调一个纽扣电池能够工作几年的这种省电性能。
设备端和主机端使用GATT(Generic ATTribute) profile进行通信。 如果你听到GATT这个名词,就可以将其想成使用BLE,这没什么问题。
由于与传统蓝牙不兼容,在主机端,和蓝牙3.0合并做为双模,实现成两者都可以使用的情况比较多。在PC机和智能手机上,使用双模的被称作「Bluetooth Smart Ready」,只支持低功耗蓝牙的被表示成「Bluetooth Smart」。
顺便说一句,最早诺基亚在2006年制定了名为Wibree的技术标准,但它已在2010年被标准化为蓝牙4.0。
GATT profile
GATT已经成为BLE的通信的通信规定,设备中存在多个“服务”,“服务”中还存在多个“characteristic”。
实际的数据交换,通过读取和写入“characteristic”进行。 对使用面向对象程序设计的人来说,这可以很容易理解成“服务”是类,“characteristic”视为属性。
每个characteristic的值可以在不加密的状态下读写,但配对的操作是加密的。
还有当characteristic的值已改变时,可接收通知(notify)。
除了那些蓝牙技术联盟定义为标准的服务和characteristic之外,设备的开发者也可以自己定义。
一些必要的服务组合成所谓的“profile”。(特别是在需要和传统蓝牙区别开的情况下的情况下,称为基于GATT的profile)蓝牙技术联盟也定义了标准的profile,例如,对应于鼠标键盘“HID over GATT“ profile,是定义成包括「Human Interface Device」「Device Information」「Battery Service」「Scan Parameters(可选)」这些服务的。
服务和characteristic是通过UUID来进行识别的。UUID是32位的,但那些被蓝牙技术联盟的标准中定义的UUID是以四个数字来表示的。实际上,四位数的UUID,是有附加 Bluetooth Base UUID,即变成0000●●●●-00-fb(4位UUID被输入在●的位置)。如果你想定义自己的非标准UUID,可以使用如Mac的uuidgen命令生成。& & & &DA14580是Dialog公司研制的蓝牙单芯片。号称全球功耗最低,是TI CC2541的四分之中的一个,是运动手环等穿戴类电子产品的经常使用芯片。可是DA14580的开发门槛不低。适合有蓝牙开发经验的团队来开发,不适合学习爱好者。在网络上搜索DA14580相关的开发文章。基本上都是对官方仅有的几篇文档进行简单翻译,还不如直接阅读英文原文。笔者将对DA14580的系统架构和应用开发框架进行分析,之后再解说怎样进行应用开发。&&&&&& 对于蓝牙单芯片应用开发来说。我们要关注的问题是:蓝牙协议栈方面怎样新增一个GATT profile(服务和特征值定义及操作)、SOC内核方面怎样驱动外围设备、系统应用框架上怎样使用定时器和任务间消息通信等等。DA14580单芯片公布时并非一颗裸片,而是带有开发平台和SDK包,还有经常使用的应用例程(如防丢proximity)。我们要做的就是通过SDK和相关的文档去理解它整个系统架构和应用框架,在这个基础上才干去完毕以上三个方面的开发。一、DA14580系统架构DA14580是基于Cortex M0架构,内置ROM、OTP和RAM。当中ROM固化了大部分协议栈和操作系统(单任务)的代码实现,而OTP一次性编程则是为了减少成本,实现用户的差异化应用需求。当用户通过SPI NORFLASH引导或者直接通过JLINK下载代码到RAM进行调试后,就能够通过SmartSnippets工具下载代码到OTP。量产产品即从OTP開始引导运行。DA14580集成的是第三方公司RW的蓝牙协议栈IP,范围包含GAT和GAP层及下面。因此我们能够在代码框架文件夹上看到RW开头命名的文件夹和头文件,官方文档涉及到蓝牙协议栈方面大部分都是RW公司出品。<img src="http://img.blog.csdn.net/44472?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />二、DA14580 开发例程文件夹和SDK文件夹结构DA14580的SDK开发平台使用keil,我们先来看看开发例程的文件夹结构,再来看SDK文件夹结构。前者简单一些。后者由于涉及到第三方IP、ROM等原因,文件夹实在是太多太细了。初接手真的会歇菜。防丢(proximity,英文是接近的意思)的开发文件夹结构例如以下:这里须要注意的是,ROM里面的固话代码。包含协议栈和单任务操作系统的相关管理代码也是整个project应用的一部分,仅仅只是没有列到开发文件夹里面。SDK文件夹架构例如以下:三、蓝牙profile和应用的角色和分工从project的代码文件夹结构来看,每一个profile都有一个以profile(如proxr)命名的.c文件,也有一个以profile_task(如proxr_task)命名的.c文件;对应地。每一个应用子任务也有一个app_profile(如app_proxr)的.C文件,和app_profile_task(如app_proxr_task)的.c文件。一般地:在操作系统ke内核看来。Profile和profile_task共同完毕一个task任务,当中app_proxr_task的task ID标识是TASK_PROXR。但app_profile和app_profile_task并非一个详细的task任务,在代码文件夹的app文件夹。全部的task。包含app_proxr_task和app_batt_task(电池)、app_sec_task(安全)共同组成一个task。在app.c中完毕任务创建。task的ID标识是TASK_APP。各个app_profile_task仅仅只是完毕应用的一个子场景功能,如防丢、电池告警等。app是主动发送消息给profile,以运行对应的蓝牙GATT服务和操作,并接受回调。即app是profile的上层。Profile任务运行GATT服务/属性的详细创建create、开启服务enable和属性特征的读写等操作,其调用ATT和GAP等底层接口来实现详细功能。Profile作为接口供给app层调用。app是通过消息通信来完毕接口调用的。app_profile的代码一般包含主动调用的接口实现。而app_profile_task则是接受消息回调的接口实现。两者的分工是很清晰的。四、应用开发框架DA14580的应用开发框架的核心是基于状态机和消息回调。下面分析以防丢proxr为例。1.&&&&状态机每一个任务都必须明白自己的状态表。比如proxr的状态表是:状态的初始化和转换是由用户主动切换的。在某个确定的状态时。内核会在对应的状态响应接口集中遍历全部发给该任务的消息。每一个任务都会在初始化时被创建。比如proxr任务的创建是:这时,如果有个其它的任务发一个消息给TASK_PROXR。则会在proxr_disabled中查找对应的消息回调接口,并运行回调。2.&&&&消息回调接下来看看各个状态的响应接口集,比如PROXR_CONNECTED连接状态时的状态响应接口集例如以下。可见,其会对两个消息进行回调,一个是底层ATT收到对特征值的写操作时运行回调,还有一个应用层主动改写还有一个特征值。在笔者的防丢和计步应用中,前者是实现防丢告警功能。后者是上报计步数据。<img src="http://img.blog.csdn.net/43059?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />3.&&&&任务间通信消息发出之后,系统即会运行proxr_jibu_update_req_handler回调。&<img src="http://img.blog.csdn.net/10688?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />另外。笔者会依据文章的阅读量考虑进一步对DA14580的SDK进行分析。如系统启动过程、服务建立过程以及上面说的。怎样进行应用开发,即蓝牙协议栈方面怎样新增一个GATT profile(服务和特征值定义及操作)、SOC内核方面怎样驱动外围设备、系统应用框架上怎样使用定时器和任务间消息通信等等。很多其它原创请关注微信公众号:嵌入式企鹅圈& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
阅读(...) 评论()}

我要回帖

更多关于 蓝牙profile是指什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信