由浅入深蓝牙40BLE协议栈开发攻略大全1.docx
- 文档编号:415700
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:22
- 大小:27.98KB
由浅入深蓝牙40BLE协议栈开发攻略大全1.docx
《由浅入深蓝牙40BLE协议栈开发攻略大全1.docx》由会员分享,可在线阅读,更多相关《由浅入深蓝牙40BLE协议栈开发攻略大全1.docx(22页珍藏版)》请在冰豆网上搜索。
由浅入深蓝牙40BLE协议栈开发攻略大全1
低功耗蓝牙(BluetoothLowEnergy),简称BLE。
蓝牙低能耗无线技术利用许多智能手段最大限度地降低功耗。
蓝牙低能耗架构共有两种芯片构成:
单模芯片和双模芯片。
蓝牙单模器件是蓝牙规范中新出现的一种只支持蓝牙低能耗技术的芯片——是专门针对ULP操作优化的技术的一部分。
蓝牙单模芯片可以和其它单模芯片及双模芯片通信,此时后者需要使用自身架构中的蓝牙低能耗技术部分进行收发数据。
双模芯片也能与标准蓝牙技术及使用传统蓝牙架构的其它双模芯片通信。
TI用于感测应用的蓝牙低功耗装置是真正的SoC解决方案。
CC254xSoC系列完美结合TI协议堆栈、基本软件(profilesoftware)以及样品应用(sampleapplication),是高弹性、低成本单模蓝牙低功耗解决方案。
接下来我们将结合CC254x,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。
本教程共分为六部分,主要知识点如下所示:
第一部分知识点:
第一节BLE开发环境的搭建
第二节BLE快速体验
第三节创建IAR工程-点亮LED
第四节控制LED
第五节LCD12864显示
第二部分知识点:
第六节独立按键之查询方式
第七节独立按键之中断方式
第八节CC254x内部温度传感器温度采集
第九节五向按键
第十节蜂鸣器
第三部分知识点:
第十一节串口通信
第十二节Flash的读写
第十三节BLE协议栈简介
第十四节OSAL工作原理
第十五节BLE蓝牙4.0协议栈启动分析
第四部分知识点:
第十六节协议栈LED实验
第十七节协议栈LCD显示
第十八节协议栈UART实验
第十九节协议栈五向按键
第二十节协议栈Flash数据存储
第五部分知识点:
第二十一节DHT11温湿度传感器
第二十二节蓝牙协议栈之从机通讯
第二十三节蓝牙协议栈主从一体之主机通讯
第二十四节OAD空中升级
第二十五节SBL串口升级
第六部分知识点:
第二十六节UBL-USB升级
第二十七节MT-iBeacon基站使用iPhone空中升级
第二十八节MT-iBeacon基站在PC端实现OAD空中升级
第二十九节MT-iBeacon基站关于LightBlue软件的使用
第三十节如何使用MT-USBDongle的透传功能
有关TI的CC254x芯片介绍,可点击下面链接查看:
主流蓝牙BLE控制芯片详解
(1):
TICC2540
BLE是蓝牙4.0规范中的一种,其中master最多有7个外设,低功耗,低延迟,低吞吐量。
六种设备状态
待机状态(standby):
设备没有传输和发送数据,并且没有连接到任何设备
广播状态(Advertiser):
周期性广播状态
扫描状态(Scanner):
主动寻找正在广播的设备
发起链接状态(Initiator):
主动向扫描设备发起连接。
主设备(Master):
作为主设备连接到其他设备。
从设备(Slave):
作为从设备连接到其他设备。
五种工作状态
准备(standby),广播(advertising),监听扫描(Scanning),发起连接(Initiating),已连接(Connected)
四种设备类型
Cnetral主机(常作为client端):
如手机,PC
Peripheral从机(常作为Service端):
如心率计,血糖计
Observer观察者:
Broadcast广播者:
连接过程:
Peripheral开启广播-->Central扫描从机广播-->Peripheral接收到Central的扫描请求,Peripheral向Central发送扫描回应数据-->Central向Peripheral发起连接-->开始通信。
兼容性
第一节BLE开发环境的搭建
1.1硬件准备
要进行BLE的开发,首先我们需要一个硬件环境。
(1)MT254xBoard开发板(最好有两块,方便进行数据收发实验);
(2)USBDongle-BLE抓包工具(多个固件,一个硬件多种用途),协议开发时辅助我们分析数据包;
(3)开发必备CC-Debug,用于下载和调试程序;
有关本文的工具下载,大家可以到以下这个地址:
朱兆祺ForARM
1.2BLE协议栈的安装
我们使用的是最新版本的协议栈BLE-CC254x-1.4.0,首先在配套的资料文件夹中的tools文件夹下找到BLE-CC254x-
我们提供了一个安装包和一个免安装的源码,根据我的开发经验,建议使用安装包安装到C盘,直接使用免安装源码在后期的开发中会遇到一些莫名其妙的问题。
下面开始安装协议栈,安装方式很简单,记得选择C盘安装。
在安装的最后阶段,默认的会安装Btool。
成功安装了协议栈后,将会出现说明文件。
在说明文件中我们可以看到,这个版本的协议栈需要使用IARfor8051
注:
如果使用的是Win8以上的系统建议使用IARfor8051,安装方式和
下面我们就开始安装这个版本的软件。
1.3IAR安装
在配套的文件目录下找到如下文件。
安装IAR,然后安装Dongle驱动。
到这步,说明IAR已经安装完成,下面开始进行和谐,你懂得!
解压此文件夹,得到如下文件:
将解压得到的文件全部复制到IAR安装目录(如下图),直接覆盖原始文件。
这样IAR的安装就完成了。
先开启软件来体验一下安装成果吧!
1.4安装烧写软件
至此,我们目前需要用到的开发软件就安装完成了。
第二节BLE快速体验
经过前面的安装,我们的开发环境已经搭建好了,现在我们先来体验一下BLE,给自己点动力,comeon!
使用SmartRFFlashProgrammer烧写从机固件:
CC2540_SmartRF_SimpleBLEPeripheral.hex,烧写方法见SmartRFFlashProgrammer的使用章节。
协议栈默认自带了一些已经编译好的文件,可以直接烧写,具体路径如下图:
从机固件路径:
读取设备的IEEE地址:
烧写完成后,如果你有支持Ble的手机或平板就可以搜索到设备了,或者使用本公司开发的USBDongle(抓包固件或HostTestRelease固件)也可以搜索到设备,具体的使用可以阅读相应的产品使用手册,我这里用andriod平板搜索:
通过MAC地址可以知道我们的设备已经在正常的广播了,我这里使用本公司开发的andriod端软件TruthBlue可以正常搜索到我们的设备。
如果用户手上有支持BLE的设备并且系统在andriod4.3以上也可以安装我们的这个软件。
连接上设备后如图,这里我们不要求大家能够看懂这些,这里仅仅是为了体验,后面的章节中我们会详细的讲述这些知识。
第三节创建IAR工程-点亮LED
经过前面的准备工作,这章开始我们开始正式的开发过程。
这个教程是为有一定51基础和C基础的人准备的,如果读者这方面还欠缺,请找相关方面的书籍恶补一下。
CC2540的本质就是一个8051的单片机,所以我们裸机开发就可以作为一个51单片机来开发,裸机开发的目的是为了让大家熟悉整个硬件以及开发环境,这并不是我们的最终目的,但这是一个必须的过程,为后面开发协议栈奠定基础。
打开我们前面安装的IAR软件,创建一个新的工程。
因为我们使用的CC2540是增强型51单片机,这里我们创建一个空的8051工程,具体配置选项如图:
选择目录保存工程;
我们这里创建一个最简单的例程,点亮一个LED,这个例程就像我们学习每种编程语言是都是先来个HelloWorld!
。
虽然简单,但是能够让我们最快的掌握一个开发环境的使用。
新的工程为空工程,没有任何文件,我们这里新建一个文件并且保存为C文件。
添加文件到工程:
保存WorkSpace,在IAR中每个工程都必须要有一个Workspace,而且一个Workspace中可以有多个工程,所以这里我也必须要保存一个Workspace,点击file->saveWorkspaceAs就会弹出如下对话框,这里和保存文件一样需要对这个WorkSpace命名,我们这里一样取名LED。
接下来我们需要对工程进行一些配置,使它适应我们的CPU。
在工程处右击,进入配置界面。
CPU配置:
这里我们第一个要做的就是选择我们的CPU,我们使用的是TI公司生产的CC2540F256,所以这里选择CC2540F256。
配置好CPU后,我们还需要配置编译输出的文件格式,选择到Linker选项,配置如下图:
debug选项:
选项配置:
经过这些配置后,我们可以开始编码了,下面开始编写我们的第一个代码,功能是点亮2个LED,开发板上有两个LED灯,分别对应P1.0和P1.1。
代码如下,可能觉得都是注释,这里我还是建议大家有一个好的编码风格,在开发大项目时就能够看到它的优势。
intmain(void)
{
P1SEL&=~0X03;//将P1.1、0设置为IO功能
P1DIR|=0X03;//设置P1.1、0为输出功能
while
(1)
{
P1=(P1&0XFC)|0X01;//设置P1.0输出高电平
}
return0;
}
编写好代码后,就可以编译下载到开发板上了。
点击图中所示图标全速运行。
根据原理图,P1.0对应的是LED2,这里我们能够看到LED2处于点亮的状态。
根据CC254X的数据手册,我们可以很快知道P1SEL是设置IO功能,P1DIR是设置输入输出。
至于为什么程序是这么写,我们来看下,CC254X芯片的P1口一共有8个IO口,那就是说刚刚好由两位十六进制进行控制:
11111111(FF),这里仅仅是LED1和LED2,也就是P1.1和P1.0两个IO口,为了不影响其他引脚的使用,我们这里巧妙使用与或控制其功能。
比如:
P1=(P1&0XFC)|0X01;P1与上11111100,这样不影响其他引脚的基础上,清除了P1.0和P1.1的输出,再或上0X01,这样将P1.0设置为高电平,根据原理图,高电平是点亮LED2.
第四节控制LED
上一节点亮了单个LED灯,我们这堂课接着控制LED灯。
这堂课我们要完成的是LED闪烁10次,蜂鸣器响1s钟。
这里我们先使用延时函数进行。
我们的程序一定要做到结构清晰,可移植性强,阅读性高。
程序设计不仅仅是实现了功能,如果那样的代码,那只有你自己可以看懂,是一手垃圾。
真正的漂亮代码具有阅读性高、可移植性强、代码规范性好。
delay.h:
#ifndef__DELAY_H__
#define__DELAY_H__
externvoidDelay1ms(unsignedintuiDelay);
#endif
/*endfile*/
延时函数的执行程序delay.c:
#include“delay.h”
voidDela
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 由浅入深 蓝牙 40 BLE 协议 开发 攻略 大全