由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx

上传人:b****1 文档编号:13343935 上传时间:2022-10-09 格式:DOCX 页数:22 大小:27.98KB
下载 相关 举报
由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx_第1页
第1页 / 共22页
由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx_第2页
第2页 / 共22页
由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx_第3页
第3页 / 共22页
由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx_第4页
第4页 / 共22页
由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx

《由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx》由会员分享,可在线阅读,更多相关《由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

由浅入深蓝牙40BLE协议栈开发攻略大全1Word文件下载.docx

第四节控制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&

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1