4515|4

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

BLE_CC2540_初学者入门指导_01 [复制链接]

一、初识BLE
通过这两天对《CC2540 BLE Software Developer Guider V1.2.pdf 》的学习对CC2540以及蓝牙4.0有了一个整体上的认识:

1、蓝牙4.0协议:BR/EDR(标准蓝牙)+ BLE     目前CC2540硬件只支持BLE这种单模无线标准,不能够与4.0以前的版本通信。

2、针对CC2540 BLE-Stack 重点学习了该协议栈的结构,TI的蓝牙平台支持两种协议栈/应用配置:单一设备配置、网络处理器配置(application/profile在另外的处理器或者PC上的应用)。

3、重点学习了协议栈最顶层的两个通用profile:GAP(通用接入规范)、GATT(通用属性规范)。

4、GAP主要负责处理设备的接入方式以及接入的过程:设备发现、链路建立、链路终止、启动安全功能、设备配置(主要是连接参数的配置)。

5、GATT主要完成服务器和客户端之间通信的相关子过程。

6、BLE支持40个通道的跳频机制,其中3个通道用于advertise,剩下的用于数据通信;而BR的通道数在80,相比而言BLE的机制更加节电。两者的跳频偏移分别为2MHz、1MHz。

7、OS抽象层相关过程学习,如何配置一个新的任务、任务优先级、事件触发、消息传递等。

8、存在的问题:搞不清楚BLE协议内部的GAP、GATT profile与application profile的联系与区别,是否BLE能够在app上添加:A2DP(蓝牙立体声音讯传输协议)、HID(人机界面规范)等这些规范。

二、开始了解stack

进一步学习GAP,主要扮演四种角色:broadcaster(广播者)、obseerver(观察者)、peripheral(外围)、central(中央)。


1、BLE-Stack中有每一种角色的Sample程序,且正对不同的示例程序对应的lib也不相同,eg:CC2540_ble_single_chip_peri.lib 、CC2540_ble_network_processor_all.lib 等。

2、对于应用程序的profile需要按照规范自己编写,目前ti提供几个医疗上使用的profile,对于文件传输、音频传输等profile,我的理解是BLE不适用于这些场合(参考wiki网上一些话题讨论、BLE_TechDay_2011.pdf、 BLE_CC2540_DeepDive_Training_2011.pdf 来源于wiki网)。



我理解的classic就是传统的那种蓝牙应用,BLE的应用主要是用于第一幅图。BLE目前一个数据包支持的最大字节数为20Byte,基本上都是几个字节的应用,ti例程。

3、在wiki网上找到一个相关的例子:Serial App 通过串口实现两台PC之间的数据传输,打算从这个例子入手,在转向USB的,初步看了一下这个Serial App,在该页上能够下载一个HCI Tester的脚本测试工具,并不是直接通过两个串口实现数据传输,需要上层的profile和HCI Command。

附上地址:http://processors.wiki.ti.com/index.php/LPRF_BLE_SerialApp

4、Btool工具通过连接usb dongle看了一下软件的选项,尝试连接两个usb dongle,在wiki上看到有人说能够建立连接,实测无法搜索到设备。

5、初步计划先移植keyfob的程序到dongle上,实现两个设备之间建立连接,keyfob通过一个按钮触发30s的dicoverable状态,这时候启动dongle进行scan等一系列操作。

三、摸着石头过河

1、移植KeyFob例程到USB dongle上面,修改按键等宏,删除了加速度、蜂鸣器程序,该Sample与HostTestApp之间可以建立链接并通信,参考wiki地址如下:

http://processors.wiki.ti.com/index.php/Category:KeyFobDemo

存在的问题:
     1)KeyFob例程使用按键启动30秒的advertising,此后由Btool通过USB dongle向KeyFob(另外一个dongle模拟的)发送请求链接的命令。按键使用轮询的方式能够正常进入相应事件,使用IO中断的方式无法进入,检查了很多遍未找到原因所在。

     2)建立链接之前USB dongle需要Scan设备,这是在KeyFob发送advertising之后,会存在无法查找到设备,猜测是由于使用了轮询按键的方式导致的。

2、CC2540的接收发送缓存都为128Byte:



再去看了下之前wiki上看到的关于发送字节不超过20Byte的说法,是限制在10ms以内的。

3、Btool建立连接的状态:

[25]中表明GAP_EstablishLink Success,在Read/Write选项中通过操作关键字、描述符来实现通信中数据的交互,参考1中网址。

eg:通过USB dongle读取KeyFob电池的电量等,实际读取错误,无效的数据(我想是否需要购买一个keyFob加快开发)



4、想要实现两台PC之间的通信:

1)如果采用HostTestApp的方式,上位机需要与Btool类似,产生HCI Command读写数据也需要相关命令和操作序列。

2)采用单芯片方式(区别于网络处理器模式,HostTestApp模式),不直接和外界PC或者MCU交互。

最终如何选择,还需要花时间进一步学习BLE-stack




此帖出自RF/无线论坛

最新回复

profile为什么不翻译一下,要我说这些东东,就外国人能懂,到中国都不好翻译。  详情 回复 发表于 2014-9-25 19:03
点赞 关注(1)
个人签名电工
 

回复
举报

3238

帖子

5

TA的资源

五彩晶圆(中级)

沙发
 
不错,期望楼主更多的文章
此帖出自RF/无线论坛

点评

支持你的蓝牙套件活动 很不错啊  详情 回复 发表于 2014-9-26 08:38
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

1万

帖子

16

TA的资源

版主

板凳
 
profile为什么不翻译一下,要我说这些东东,就外国人能懂,到中国都不好翻译。
此帖出自RF/无线论坛

点评

很多spec中都用这个词感觉亲切一些,翻译不准确啊。。 profile 字面意思角色、剧本 好比各种不同的应用按照这个剧本来演出就是一个大家约定的东西算是应用层profile,zigbee/bt中都有这个词,还有很多通讯总线中  详情 回复 发表于 2014-9-26 08:34
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

4
 
ddllxxrr 发表于 2014-9-25 19:03
profile为什么不翻译一下,要我说这些东东,就外国人能懂,到中国都不好翻译。

很多spec中都用这个词感觉亲切一些,翻译不准确啊。。

profile 字面意思角色、剧本
好比各种不同的应用按照这个剧本来演出就是一个大家约定的东西算是应用层profile,zigbee/bt中都有这个词,还有很多通讯总线中也有
此帖出自RF/无线论坛
个人签名电工
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
wateras1 发表于 2014-9-25 11:27
不错,期望楼主更多的文章

支持你的蓝牙套件活动 很不错啊
此帖出自RF/无线论坛
个人签名电工
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表