[本文属原创,转载请附上原文出处链接。]

一、需要的软件工具

1、BLE协议栈(BLE-CC254x-1.4.0)

2、IAR开发软件(IAR Embedded Workbench8.20.2)

注:1.4.0协议栈使用8.20.2的iar版本,1.3.2协议栈等使用的是8.10.4的iar版本。

二、BLE协议栈安装目录下文件夹说明

Accessories 一些工具和已经编译好的Hex文件此文件夹中有Btool的安装包、USB-CDC的驱动附件;

Components Hal驱动,OSAL源码、协议栈通用源码此文件夹是OSAL各层组件的实现;

Documents 帮助文档协议栈说明文档,包括协议栈和DEMO的相关介绍和开发文档,这是学习BLE最好的资料;

Projects 工程文件这里有一些TI的Demo,我们开发一般是在Demo的基础上进行修改。

三、BLE协议栈工作流程

关于BLE协议栈工作流程图大概就是下面这个样子:

BLE协议栈分为主机和控制器两部分。主机部分包括:逻辑链路控制及自适应协议层、安全管理层、属性协议层、通用访问配置文件层、通用属性配置文件层;控制器部分包括:物理层,链路层、主机控制接口层。BLE协议栈的配置文件层包括GAP角色/安全配置文件、GATT配置文件两部分,处于协议栈的顶层,配置文件层将协议栈和应用层联系在一起。GAP层负责处理设备访问模式和连接,如广播的使能/禁止、广播的间隔、配对绑定及连接的控制、初始化安全管理。在成功连接设备后,可以调用对应的函数来获得设备的service(服务),并对service中的characterister(标签)进行读写。GATT层主要是用来数据通信,即service跟characterister。可以在设备的BLE协议栈中添加一个或多个service,而service(服务)中包含一个或多个characterister(标签)。BLE协议栈四种设备类型:Central主机、Peripheral从机、Observer观察者、Broadcaster广播者。主机和从机的通信过程大概是:从机开启广播,主机开始扫描,当从机接收到主机的扫描消息后,会向主机发送扫描回应数据。然后主机发起连接,建立通信。

四、消息广播

在完成一个处理事件后,需要把这个消息广播出去,就把值填加到广播数组中advertData[],调用GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );函数广播出去,这样还不能广播成功。进入GAPRole_SetParameter里面发现缺少GAP_UpdateAdvertisingData函数,需要修改动态广播数据,加入以下代码:

case GAPROLE_ADVERT_DATA:

if ( len <= B_MAX_ADV_LEN )

{

VOID osal_memset( gapRole_AdvertData,0, B_MAX_ADV_LEN );

VOID osal_memcpy( gapRole_AdvertData,pValue, len );

gapRole_AdvertDataLen = len;

GAP_UpdateAdvertisingData(gapRole_TaskID,

TRUE,gapRole_AdvertDataLen, gapRole_AdvertData );

}

else

{

ret = bleInvalidRange;

}

break;

在调用完GAPRole_SetParameter函数后可以广播了,需要控制任务调用时间控制后面添加osal_start_timerEx函数,这个是定时循环向任务发送事件消息,具体实际时间可以自己定。

GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );

osal_start_timerEx(simpleBLEBroadcaster_TaskID,SBP_ADV_RGB_EVT,100);

return ( events ^SBP_ADV_RGB_EVT );

这样数据就可以广播了,采用PacketSniffer抓包就可以在AdvData看到广播数据了(十六进制数)。在使用某个功能时,必须在Option下配置C/Compiler Preprocessor添加宏定义来开启。比如使用串口时添加HAL_UART=TURE,注销POWER_SAVING。在使用ADC功能时,添加HAL_ADC=TRUE。

win7 蓝牙4.0 ble驱动_初识物联网无线通信技术之蓝牙4.0BLE协议栈相关推荐

  1. win7 蓝牙4.0 ble驱动_恩智浦发布行业领先的2x2 Wi-Fi 6 +蓝牙解决方案,彻底改变游戏、音频、工业和物联网市场...

    原标题:恩智浦发布行业领先的2x2 Wi-Fi 6 +蓝牙解决方案,彻底改变游戏.音频.工业和物联网市场 恩智浦半导体(NXP Semiconductors N.V.)近日宣布推出2x2 Wi-Fi ...

  2. java 蓝牙4.0_《蓝牙4.0 BLE开发完全手册---物联网开发技术实战

    图书目录: 第1章 蓝牙4.0 BLE简介 1.1 无线网络数据传输协议对比 1.2 短距离无线网络的分类 1.2.1 什么是蓝牙4.0 BLE 1.2.2 蓝牙4.0 BLE的特点 1.3 蓝牙4. ...

  3. 基于intel芯片的安卓蓝牙4.0 BLE通信总结

    基于intel芯片的安卓蓝牙4.0 BLE通信问题总结 使用设备: 台电 x98 air 3G 系统:安卓4.4.4 系统搭建: 1.安装ADT驱动,可以搜索intel_mobile_usb_driv ...

  4. 针对蓝牙4.0 BLE通讯过程的逆向和攻击

    本文讲的是针对蓝牙4.0 BLE通讯过程的逆向和攻击,从6个月前,我就开始针对BLE设备进行学习和研究,其中接触到了一些关于BLE逆向的博客和文章,但是相关内容都没有给出很好的方案.因此通过我的这篇文 ...

  5. iOS开发 之 可穿戴设备 蓝牙4.0 BLE 开发

    1 前言 当前有越来越多的可穿戴设备使用了蓝牙4.0 BLE(Bluetooth Low Energy).对于iOS开发而言,Apple之前专门推出CoreBluetooth的Framework来支持 ...

  6. android ble蓝牙接收不到数据_Android蓝牙4.0 Ble读写数据详解 -2

    Android蓝牙4.0 Ble读写数据详解 -2 上一篇说了如何扫描与链接蓝牙 这篇文章讲讲与蓝牙的数据传输,与一些踩到的坑. 先介绍一款调试工具,专门调试Ble蓝牙的app.名字叫:nRF-Con ...

  7. 蓝牙4.0 BLE协议结构图详解

    随着智能硬件的发展,嵌入式和物联网这类专业越发受到大家的追捧,而不管是学习嵌入式还是学习物联网,蓝牙4.0 BLE协议结构都是必须重点掌握的知识点,今天和大家分享的就只这部分内容,一起来看看吧. 第一 ...

  8. 博通二合一蓝牙android驱动,Broadcom 博通 蓝牙与无线网卡一体-蓝牙3.0版驱动 for xp...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ExcludeFromSelect=USB\VID_0A5C&PID_214C ExcludeFromSelect=USB\VID_0A5C&am ...

  9. 蓝牙4.0 BLE 防丢器

    ViewTool 蓝牙4.0 BLE 防丢器 转载于:https://www.cnblogs.com/LittleTiger/p/6110220.html

最新文章

  1. Python3 MySQL 数据库连接 - PyMySQL 驱动
  2. JXJJOI2018_T2_tank
  3. python中字符串有什么组成_python字符串操作
  4. 神策数据赋能物流服务行业数字化转型
  5. 算法导论之python实现插入排序
  6. ui和ux的区别_UI和UX之间的区别
  7. 结构数据类型的用法 值类型 c# 1231
  8. Delphi多线程详解CreateThread、TThread,以及线程间通过临界区(CriticalSection)实现同步
  9. 从零开始写项目第八篇【将未完成的项目发布在Tomcat上】
  10. oracle11g 官网下载链接
  11. CDA I级学习 - CDA I级报名
  12. GSOAP 在一个客户端内调用多个服务出现的问题解决
  13. 2018年视频云服务市场格局进入整合阶段,阿里云视频云位居市场竞争力领导者的位置... 2
  14. Android基础| 1G-4G的介绍
  15. 4K字记一次血淋淋的MySQL崩溃修复案例
  16. CS5218 DP转HDMI 4K30HZ转换方案|DP++to HDMI(4k30)
  17. unity入门2.0
  18. 数据分区与放置策略解析_数据策略好数据与坏数据
  19. 计算机专业英语电池,电池分为哪几种?英文缩写?
  20. 计算机电脑关机后可以充电吗,电脑关机了还能充电吗

热门文章

  1. java wcf_尝试将WCF映射到Java术语
  2. gradle构建_指定Gradle构建属性
  3. 混合云的承诺,收益和产品
  4. 消息队列概述[幻灯片]
  5. ant 构建_有用的Ant构建标签
  6. 调整HashMap的大小:未来的危险
  7. p1417 烹调方案_Java 8的烹调方式–拼图项目
  8. websphere内存设置_WebSphere Classloader内存泄漏预防
  9. 让我们回顾一下如何通过JDBC插入Clob或Blob
  10. 流式传输大数据:Storm,Spark和Samza