深入NXP低功耗蓝牙SDK开发系列-广播,扫描与连接.pdfVIP

深入NXP低功耗蓝牙SDK开发系列-广播,扫描与连接.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

深深⼊⼊NNXXPP低低功功耗耗蓝蓝⽛⽛SSDDKK开开发发系系列列--⼴⼴播播,,扫扫描描与与连连接接

接上⼀篇整体构介绍后,相信⼤家对NXP低功耗协议的使⽤还是没有什么概念(我没写错你也没看错)。由于第⼀篇博⽂信息量过⼤,没有在

NXPBLESDK上做过⼀定开发的的同学看起来肯定是云⾥雾⾥。从本篇开始将BLESDK中逐个功能进⾏剖析,并且尽可能按照由浅⼊深的顺序

发布。

前前置置条条件件

由于⽹上有⼤量的⽂章介绍BLE技术,这⼉就不从零讲起基本概念了,假定各位同学对BLE⼴播与扫描功能有基本的了解,⾄少知道得以下⼏个⽅

⾯:

1.⼴播和扫描的意义(为什么双⽅要做这件事)

2.双⽅的⾓⾊扮演(简单说主机扫描,从机⼴播)

3.基本的⼴播参数:时间间隔,⼴播通道,扫描占空⽐等

4.⼴播中带有⼀些数据,如果知道他们的格式就更好了

虽然⽂章主要⽬的是要在介绍如何在NXP低功耗蓝⽛SDK中进⾏⼴播和扫描,但如果⼀上来就讲API⼜过于⼲涩。在涉及到笔者认为有必要展开的

协议内容的时候我还是会将⼀下原理的。

BLE5对⼴播和扫描这部分有⼀些⽐较⼤的变化,⽬前市⾯上相关的应⽤还⽐较少,因此本篇仍以BLE4.2规范中定义的

功能作为出发点,后续如有必要再单独介绍BLE5带来的⼴播扩展功能。

什什么么时时候候可可以以开开始始⼴⼴播播扫扫描描??

在BLE协议规范中,对主机(Host)和控制器(Controller)初始化的流程有⼀个清晰定义,⽤户要⾛完这个流程才能向协议栈提交请求,同时BLE芯

⽚也需要对射频部分寄存器进⾏初始化来保证RF电路的正常⼯作。NXPBLESDK中的系统⼊⼝main_task()任务体实现⾥,在正式进⼊事件loop

之前将会调⽤Ble_Initialize()来准备以上两项⼯作。注意!是准备,⽽⾮完成。也就是说该函数返回后,协议栈可能仍然没有准备好。记得千万不

要直接在这个函数后⾯开启⼴播和扫描!

那何时才可以呢?初始化过程在调⽤Ble_Initialize()时SDK会让安装⼀个默认的回调函数App_GenericCallback(),回调触发后再由她转⽽触发⽤户层

的BleApp_GenericCallback()。当协议栈完成所有初始化⼯作后,⽤户将在这个回调函数⾥收到gInitializationComplete_c事件,这才标志着⽤户可以

正常使⽤BLE协议栈提供的服务了。

⼴⼴播播((aaddvveerrttiissiinngg))

在NXPBLESDK中涉及到⼴播主要是4个API:

//设置⼴播数据(和扫描回复数据)

bleResult_tGap_SetAdvertisingata(gapAdvertisingata_t*pAdvertisingata,

gapScanResponseata_t*pScanResponseata);

//设置⼴播参数

bleResult_tGap_SetAdvertisingParameters(gapAdvertisingParameters_t*

pAdvertisingParameters);

//开启⼴播

bleResult_tGap_StartAdvertising(gapAdvertisingCallback_tadvertisingCallback,

gapConnectionCallback_tconnectionCallback);

//停⽌⼴播

bleResult_tGap_StopAdvertising(void);

以上的4个API都是异步的,就意味着调⽤后会⽴刻得到返回值,该返回值仅表⽰函数调⽤(如参数传递是否正确,内存是否充⾜)的结果,实际

功能的执⾏完成,⽤户应等到各个的回调事件到来作为判断。

下表列出了相关的事件:

事事件件TTaagg触触发发函函数数事事件件⽤⽤户

文档评论(0)

138****1610 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档