上传-基于CC的照明控制系统设计 .pdf

上传人:C****o 文档编号:39716932 上传时间:2022-09-07 格式:PDF 页数:43 大小:4.17MB
返回 下载 相关 举报
上传-基于CC的照明控制系统设计 .pdf_第1页
第1页 / 共43页
上传-基于CC的照明控制系统设计 .pdf_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《上传-基于CC的照明控制系统设计 .pdf》由会员分享,可在线阅读,更多相关《上传-基于CC的照明控制系统设计 .pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、大学毕业设计说明书目录1 前言.12 总体方案设计 .22.1 方案比较 .22.1.1 方案一 传统蓝牙 3.0+普通灯泡 .22.1.2 方案二 低功耗蓝牙(BLE)+LED灯.22.2 方案论证 .22.3 方案选择 .33 硬件设计 .43.1 各单元模块功能介绍及电路设计.43.1.1 CC2540 核心电路 .43.1.2 晶振电路 .43.1.3 天线电路 .53.1.4 电源电路 .53.1.5 外围 LED电路.63.1.6 复位电路 .63.1.7 下载调试电路 .73.2 特殊器件的介绍 .73.2.1 蓝牙 CC2540芯片.73.2.2 USBDongle .83.2

2、.3.SmartRF04EB.94 软件设计 .104.1 系统设计框图 .104.2 软件设计原理及设计所用工具.104.2.1 软件设计原理 .114.2.2 设计所用工具 .174.3 HostTestRelease主机编程 .194.4 SimpleBLEPeripheral从机编程 .225 系统调试 .275.1 调试平台介绍 .275.2 调试步骤 .276 总结与体会 .307 谢辞.318 参考文献 .329 附录.33附录一 电路原理图 .33附件二 相关设计设计软件.34附件三 外文翻译资料.35名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 43 页 -大

3、学毕业设计说明书第 1 页1 前言伴随着科技的发展,电子技术的不断地革新,生活水平的大大提高,人们对家庭生活也提出了更高的要求,而照明作为家庭生活的一个重要组成部分,向智能化的发展似乎也迫在眉睫了。同时,随着经济的增长人们的生活水平也不断提高,人们对房间的灯光效果要求也越来越高。希望在房间中进行不同的活动能够获得不同的照明体验。而采用智能照明系统恰好能满足人们对丰富多彩生活的需求,所以无论从节能角度还是从构造一个舒适的生活环境角度来讲,开展智能照明的研究都是必要的。LED作为一种新型的绿色光源,更是得到了人们的青睐,它不仅环保,功耗低,更具有体积小,安全耐用等优点。本次设计的目的主要是为了解决

4、家庭照明能有更好体验,该系统是通过手机端APP的控制,来控制灯的亮灭甚至是灯的亮度或者颜色变换。本次设计以CC2540蓝牙模块作为无线数据采集和收发的无线终端。蓝牙4.0 是 2010 年最新推出的一代蓝牙技术规范,具有高可靠性,低成本,低功耗,快速启动、瞬间连接,传输距离极大提高,高安全性等优点。BLE网络可以实现多个BLE从机与一个 BLE主机连接,也可以由单个的BLE从机与 BLE主机相连接,不同的网络拓扑对应不同的应用领域,而本次设计实现的是单个BLE主、从机之间的连接。蓝牙无线传输能保证数据能够及时、准确地送回到控制中心,而且现在手机的应用已经非常广泛,实现 BEL与安卓的结合将促进

5、“物联网”的发展,在这一过程中BLE起到的作用是非常关键的,这将从根本上推动物联网的快速发展。在此我们首先要了解协议栈,因为蓝牙 4.0 的软件编程建立在一定的协议栈的基础上,虽然其难易程度不定,但为了实现最终的开发目的,了解协议栈将是一个重。本次设计将以 TI 公司的 CC2540芯片作为核心开发板,然后根据 LED照明电路的需要在外围拓展数据采集端,再由 CC2540USBDongle 和上位机串口调试软件来构成 PC端。最后通过对蓝牙4.0 的协议栈进行编写和应用来实现数据采集模块与PC机的有效通信。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 43 页 -大学毕业设计说

6、明书第 2 页2总体方案设计2.1 方案比较2.1.1 方案一 传统蓝牙 3.0+普通灯泡采用普通的蓝牙和普通灯泡的方式,流程图如图2.1 所示:图 2.1 普通蓝牙传输流程图2.1.2 方案二 低功耗蓝牙(BLE)+LED灯采用低功耗蓝牙BLE和 LED灯的方式,流程图如图2.2 所示:图 2.2 低功耗蓝牙传输流程图2.2 方案论证方案一采用的是蓝牙3.0+普通灯泡的方式,蓝牙 3.0:BT 3.0+HS,高速的传输速率,并且速率将提高到约24Mbps。2009 年 4 月 21 日,Bluetooth SIG 正式颁布了Bluetooth Core Specification Versi

7、on 3.0 High Speed(蓝牙核心规范 3.0 版高速),蓝牙 3.0 是以一种新型射频技术Generic Alternate MAC/PHY(AMP)作为核心的,其允许蓝牙协议栈针对任何一个任务动态选择正确地射频。蓝牙 3.0 最初的规范技术是包括802.11以及 UMB 的,但在新规范中UMB 的应用被取消了。在新版规范里,因为802.11无线协议从而使蓝牙3.0 的传输速度大照明电路MCU控制模块普通蓝牙传输模块电源模块LED 电路MCU 控制模块低功耗蓝牙传输模块电源模块名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 43 页 -大学毕业设计说明书第 3 页大提

8、高了。目前而言其可实现的传输速率大概是24-25Mbps。这相当于蓝牙 2.0 的八倍,可以轻松实现各种大数据的传输,使之应用范围更加宽泛。虽然蓝牙 3.0 高速传送大量数据会消耗更多能量,但我们引入了增强电源控制机制,再辅以 802.11,将明显降低其空闲功耗。方案二采用的是低功耗蓝牙(BLE)+LED 灯的方式。蓝牙 4.0 是 2012 年最新蓝牙版本,是 3.0 的升级版本;4.0 版本强化了 3.0 版本在数据传输上的低功耗性能,和3.0 版本比较有更省电、成本低、低延迟、超长有效连接距离、AES-128 加密等优点;经常用于智能家居,可穿戴设备,医疗保健类智能仪器上。低功耗蓝牙有以

9、下特点和优点:1.该技术的运行和待机功耗极低,一块小小的电池都能够使其正常的工作数年。2.支持 1Mbps 数据传输率下的超短数据包。具有超低工作循环设计。3.采用自适应跳频,能有效的减少与其他无线技术之间的大干扰。4.能够在极短的时间内完成连接并开始传输数据。5.调制指数范围大。6.使用 AES-128 CCM 加密算法进行数据包加密和认证。7.拓展能力十分强大。8.无需复杂的网络就可以实现数据在网状拓扑内的转移。2.3 方案选择蓝牙 3.0 使用的是 Wi-Fi 技术,这种技术极大提高了传输速度。可以实现蓝牙3.0 设备通过 Wi-Fi 与其它设备进行数据传输;蓝牙4.0 中则在 3.0

10、版本的基础上拓展出新的功能结构,同时设计了低功耗工作模式,这使其性能更加的完善。另外,蓝牙 4.0 还有低成本和跨厂商互操作性,以及反应灵敏、传输速度快等优点,使其可应用领域非常的广泛,让蓝牙技术得到了充分的应用。通过蓝牙3.0 和 4.0 之间的比较,我们发现4.0 较 3.0 有传输速率高,传输距离长,耗电量低等优点,并且LED 灯和普通灯泡比较,发现LED 有节能,使用寿命长,光源多种多样等优点。基于综上所述,本次系统采用的是方案二:低功耗蓝牙+LED 灯的方式。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 43 页 -大学毕业设计说明书第 4 页3 硬件设计3.1 各单

11、元模块功能介绍及电路设计3.1.1 CC2540 核心电路CC2540 核心板电路主要包括CC2540 单片机、全尺寸倒F 天线,晶振以及扩展接口,CC2540 核心板如图 3.1 所示:图 3.1 CC2540核心电路3.1.2 晶振电路CC2540 需要 2 个晶振,32MHz 和 32.768K,所以本设计安装要求设计了这2个晶振电路,晶振电路接口如图3.2 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 43 页 -大学毕业设计说明书第 5 页图 3.2 晶振电路3.1.3 天线电路CC2540 外部由几个简单的阻容网络来构成复杂的RF 前端。这部分电路也叫巴伦匹配

12、电路,这部分的电路设计的成功与否直接影响通信距离以及系统功耗。本次的设计是按照 TI 公司提供的参考来完成电路的二次开发。天线的设计根据使用位置不同而有所不同,一般有 PCB 天线和 SMA 天线两种设计形式。而本设计采用的是PCB 天线,其天线电路图如图3.3 所示。图 3.3 天线电路3.1.4 电源电路CC2540 核心板的供电可由SUB 转换,也可以由锂电池等供电,电压输入范围在 3.46V,电源电路如图 3.4 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 43 页 -大学毕业设计说明书第 6 页图 3.4 电源电路3.1.5 外围 LED电路本设计采用与 TI

13、 完全兼容的四色LED,高电平驱动。LED 电路如图 3.5 所示。图 3.5 LED 电路3.1.6 复位电路CC2540 本身内部集成有电复位电路,但本设计中为了方便程序调试,在其外部添加了一个按键复位电路,这样可以很好的预防在使用UART 转串口的时候因直接断电而导致 PC机出现异常。复位电路如图3.6 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 43 页 -大学毕业设计说明书第 7 页图 3.6 复位电路3.1.7 下载调试电路CC2540 开发板使用的是标准的CC-Debugger调试接口,为了调试的方便,故特意将 debugger 接口的 9 号引脚和 2

14、号引脚短接,这样就可以使用CC-Debugger为开发板提供电源。下载调试电路如图3.7 所示。图 3.7 下载调试电路3.2 特殊器件的介绍3.2.1 蓝牙 CC2540芯片CC2540 集成了 2.4GHz 射频收发器,是一款完全兼容8051内核的无线射频单片机,它完美的兼容了蓝牙低功耗协议栈,非常适合蓝牙低功耗的开发和应用,它有 3 个不同的存储器访问总线:特殊功能寄存器(SFR);数据(DATA);代码/外部数据(CODE/XDATA)。CC2540 单片机使用单周期访问SFR、DATA 和 SRAM。当 CC2540 处于控线模式时,任何的终端可以把CC2540 恢复到主动模式。某些

15、终端还可以将CC2540从睡眠模式唤醒。位于系统核心存储器交叉开关使用SFR 总线将 CPU、DMA 控制器与物理存储器和所有的外接设备连接起来。CC2540 的 Flash容量可以选择,有 128KB、256KB,这就是 CC2540单片机的在线可编程非易失性存储器,并且映射到代码和外部数据存储器空间。除了保存程序代码和常亮之外,非易失性存储器允许应用程序保存必要的数据,以保证这些数名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 43 页 -大学毕业设计说明书第 8 页据在设备重启后可用。图3.8是 CC2540 的内部结构图:图 3.8 CC2540内部结构图3.2.2 US

16、BDongle 如图3.9 所示,CC2540 USBDongle 的实物图。它是作用是可以配合TI PacketSniffer软件实现 BLE 的无线抓包,另外可以配合 PC 端的 BTool 软件实现 PC端的 BTool 主机。USBDongle 通过 USB 接口与 PC 连接,安装 TI 的驱动程序,将USBDongle 模拟成串口,然后运行BTool。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 43 页 -大学毕业设计说明书第 9 页图 3.9 USBDongle 实物图3.2.3.SmartRF04EB 如图 3.9 所示,是 SmartRF04EB的实物图。它

17、是用来调试和下载软件到EM 的仿真器。它是 TI 第一代的 CC 系列仿真器,性价比高,支持CC2540和 CC2530,但不支持 CC2541。图 3.9 SmartRF04EB 实物图名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 43 页 -大学毕业设计说明书第 10 页4 软件设计4.1 系统设计框图图 4.1 系统流程框图4.2 软件设计原理及设计所用工具程序开始程序初始化监听连接请求有无连接请求CC2540 蓝牙模块,建立连接连接是否成功否无接收数据,并处理程序结束名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 43 页 -大学毕业设计说明书第 11

18、 页4.2.1 软件设计原理4.2.1.1 BLE蓝牙协议栈介绍协议是一种通信的标准,互相通信的双方必须根据这一协议进行发送和接收数据,如果没有这种协议双方就不能正常的进行通信。协议的具体表现形式主要是通过协议栈实现的,什么是协议栈呢?一般我们可以这样理解,协议栈相当于一个协议与用户之间的接口,该接口能够更好的方便开发人员利用它来进行相应的协议处理,当然必须遵守通信协议标准,以此来实现数据的传送和接收;也可以这样理解,它就相当于一个数据库,当我们需要用到它的时候,就可以从中调用出来供开发人员使用。本次设计的基于蓝牙4.0BLE 协议栈就是在此基础上实现的,通过该数据库的调用,并且以函数的形式表

19、达出来,以提供给一些应用层API,供开发者进行合理合法的调用。当然我们也需要注意到一些注意事项,该协议虽然是统一的,但是它的表现形式却是不断变换的的,即不同的厂家提供的协议栈是不同的,有时候这种差距还是很大,因此我们在选择与调用的时候需要特别注意的。蓝牙 4.0 BLE 协议栈具有很多版本,不同的厂商提供的蓝牙4.0 BLE 协议栈有一定的区别,本次的毕业设计选择的是TI 公司推出的蓝牙 4.0 BLE 协议栈 BLECC254x1.3.2.协议栈主要由两个部分组成,主机和控制器,如TI 公司研究开发的新型一代的蓝牙 4.0BLE 协议栈。协议栈主要是通过实行分层模块的思想的方式来实现,如控制

20、器的物理层、链路层、主机控制接口层等;其中主机部分又分为很多的管理层,比如通用访问配置文件层及属性配置文件层、安全管理层及属性协议层等。这些不同的层都具有各自不同的功能,它们共同组成了一个蓝牙协议栈,如图4.2 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 43 页 -大学毕业设计说明书第 12 页图 4.2 蓝牙 4.0 BLE 协议栈蓝牙 4.0BLE 协议栈利用这种分层模块的思想将服务、接口、协议这三个概念就很好很明确的区分开来了,这样不仅使得各个模块分层之间具有很强的独立性,也使得我们在修改内容方面起到了很大很方便的作用,因为它们的独立性,当一部分发生变换需要我

21、们修改时,我们就能够通过相应的模块分层进行修改,简化了我们的工作任务。物理层 Physical Layer 它是一种 1Mbps的自适应跳频的 GFSK 射频,并且当工作于工业、科学、医疗领域时免许可证的2.4Ghz ISM 频段。链路层 Link Layer是用来控制设备的射频状态,等待、广告、扫描、初始化和连接是设备常常处于的五种状态,其中,广告设备是不需要建立设备之间的连接就可以进行数据的发送,扫描设备能够进行收听广播设备等发出对设备有关的数据;连接设备的发起是通过连接的发送请求对广播设备进行相应的回应,这时当连接请求发送在广播设备上时,该广播设备和发起连接的设备就会进行进入到连接的状态

22、,使得广播设备和连接设备正常的进入到工作状态。接口层是连接主机和控制器之间的标准通信接口层,它可以是软件的 API 或者硬件电路,如生活中我们常常用到的UART、SPI、USB 等。逻辑链路控制及自适应协议层是能够为上层提供封装数据的任务,并且它能够实现在逻辑上数据通信进行点对点的服务。名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 43 页 -大学毕业设计说明书第 13 页属性协议层简称为“属性”,能够通过它向其他设备展示自己特定的属性数据,在一些环境中,我们也把展示设备属性的设备称作为服务器,如在ATT环境中,当然有服务器就会有相应的客户端,它是与属性设备配对的设备,并且主

23、机和从机的链路层状态是与相应设备的 ATT角色是相互独立各不相关。通用属性配置文件层是一种定义使用ATT相关服务的框架,并且在 ATT服务上面属于的一层结极,这当中的GATT规定相关配置文件的结极,这一服务模块被相应的机构称之为“特性”,这种特性是建立在两个设备连接之间的所有数据之间进行的相关通信,并且它们是 GATT 的子程序处理过,再在应用程序中在GATT 层直接简单的进行使用。TI 公司免费的蓝牙 4.0 BLE 软件开发套件是完整地支持单模蓝牙4.0 BLE 应用开发的平台,它基于CC2540/CC2541射频单片机,蓝牙4.0 BLE 软件平台支持两种不同的应用开发配置。协议栈工作流

24、程如图4.3所示:图 4.3 协议栈工作流程名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 43 页 -大学毕业设计说明书第 14 页4.2.1.2 操作系统抽象层OSAL OSAL(操作系统抽象层)是类似于一个系统的抽象层,但它不是一个真正意义上的操作系统。OSAL 常用术语:在本次设计任务中,为了方便我本次设计,需要了解到一些关于OSAL的常用术语,如资源、共享资源和任务等。任务是OSAL 的一个重要术语,在设计任务时,我们需要将一个大的任务分成许多个小的任务,再把这些小任务通过相关的技术要求组织起来,这些独立小任务的完成,也有一定的优先级,同时它们一般都拥有自己的寄存器和

25、堆栈空间。在设计时,我们常常使用到内核,借助内核可以使得程序的设计方法大大简化,并且能够使得一个任务通过不同的小任务表现出来且得到我们的要求实现。保护共享资源最常用的方法是:1.关中断;2.使用测试并置位指令;3.禁止任务切换;4.使用信号量。其中,在蓝牙 4.0 BLE 协议栈内嵌操作系统中,关中断是我们经常采用的方法。在蓝牙 4.0 BLE 协议栈中,OSAL 主要提供以下功能:1.任务注册、初始化和启动;2.任务间的同步、互斥;3.中断处理;4.存储器分配和管理;5.提供定时器功能。在新推出的蓝牙4.0 BLE 协议栈中,其中有三个变量值得一提:tasksCnt:该变量保存了任务的总个数

26、。该变量的声明为:uint8 taskCnt。其中 uint8 的定义为:typedef unsigned char uint8。taskEvents:这是一个指针;该变量的声明为:uint16*taskEvents。其中 uint16 的定义为:typedef unsigned short uint16。taskArr:这是一个数组;该数组的声明为:pTaskEventHandlerFn taskArr.这是一个函数指针,指向了对应的事件处理函数。名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 43 页 -大学毕业设计说明书第 15 页4.2.1.2 硬件抽象层 HAL 硬件

27、抽象层(HAL)是一层提供硬件服务而又不涉及太多硬件细节的,是为应用程序提供访问 GPIO、UART、ADC 等硬件的接口。硬件抽象层文件目录如图4.4 所示:图 4.4 HAL 文件目录HAL Include 文件夹包含 HAL 驱动及 HAL 相关文件的头文件,如图4.5所示:图 4.5 Include文件下头文件HAL Target 文件夹下的 Drivers 包含所有 HAL 驱动的“.c”文件。4.2.1.4 配置文件层介绍蓝牙 4.0 BLE 协议栈的配置文件层包括GAP 角色/安全配置文件、GATT 配置文件两部分。名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共

28、43 页 -大学毕业设计说明书第 16 页(1)通用访问配置文件(GAP):BLE 协议栈中的 GAP 层负责处理设备访问模式和程序,包括设备发现、建立连接、终止连接、初始化安全特色和设备配置。GAP 层总是作为下面四种角色之一:广播者不可连接的广播设备;观测者扫描广播,但不发起建立连接;外部设备可连接的广告设备,可以在单个链路层连接中作为从机;集中器扫描广告设备并发起连接,在单链路层或多链路层作为主机,目前,BLE 协议栈支持一个集中器连接三个外设。在蓝牙系统典型的低功耗设计系统中,通过外部设备的广告特定数据使得集中器来辨别它是否是一个可以通过相关连接的设备。这些广告设备的内容有很多种,比如

29、说设备的地址以及一些相关的额外数据和一些设备名称。当这些设备使得集中器收到数据广告后,然后在通过相应的外部设备发送用户指定的扫描请求,经过一些简单的处理,通过外部的一些设备将一些系统特定的数据反馈回给集中器,这一阶段我们称之为扫描回应。当它收到这一阶段的扫描回应后,通过系统判断便知道它是一个可以连接的外部设备,这一过程我们称之为设备的发现过程。再之后,系统就向外发送建立连接设备的请求。从机延迟这个参数的设置可以使从机(外部设备)跳过若干连接事件,这给了外设更多的灵活度,如果它没有数据发送时,可以选择跳过连接事件继续休眠,以节省功耗。管理超时这是两个连接成功的事件之间允许的最大间隔。如果两个设备

30、之间的链接超过了这个时间但是却没有链接成功,则设备被认为是丢失连接,返回到未被连接的状态。这个值的单位是10ms,管理超时的范围是10(100ms)3200(32ms)。另外,超时值必须大于有效的连接间隔有效的连接间隔=连接间隔*(1+从机延迟)。外设可以通过向集中器发送“连接参数更新请求”来改变连接设置,这个请求由协议栈的 L2CAP 层来处理。这个请求包含4 个参数:最小连接间隔、最大连接间隔、从机延迟、超时。这些值代表了外设所要求的连接参数。当集中器收到请求后,可以选择接受或拒绝这些新的参数。连接可以被主机或从机以任何原因自动终止。当一方发起终止连接时,另一方必须响应。然后两个设备才能退

31、出连接设备。(2)通用属性配置文件(GATT)主机既可以是 GATT 客户端也可以是GATT 服务器;从机既可以是 GATT 客户端也可以是 GATT 服务器。在蓝牙 4.0 BLE 协议栈中的 SimpleBLEPeripheral应用中,名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 43 页 -大学毕业设计说明书第 17 页有三个 GATT 服务。GATT 定义了在 BLE 连接中发现、读取和写入属性的子过程。属性表是一个数据库,包含了称为属性的小块数据,除了值本身,每个属性都包含下列属性:句柄属性在表中的地址,每个属性有唯一的句柄;类型表示数据代表的事务,通常是蓝牙技术

32、联盟规定或由用户自定义的UUID(Universally Unique Identifier);权限规定了 GATT 客户端设备对属性的访问权限,包括是否能访问和怎样访问。GATT 定义了若干在 GATT 服务器和客户端之间的通信的子过程。下面是一些子过程:读特性值客户端设备请求读取句柄处的特性值,服务器将此值回应给客户端(假定属性有读权限)。使用特性的 UUID 读客户端请求读基于一个特定类型的所有的特性值,服务器将所有与指定类型匹配的特性的句柄和值回应给客户端设备(假设属性有读权限)。读多个特性值客户端一次请求中读取几个句柄的特征值,服务器将这些特征值回应给客户端(假设属性有读权限)。客户

33、端需要知道如何解析这些不同的特性值的数据。4.2.2 设计所用工具4.2.2.1 IAR IAR Embedded Wordbench(又称 EM)的 C 交叉编译器是一款完整、稳定且容易使用的专业嵌入式应用开发工具,IAR 对不同的微处理器提供统一的用户界面,目前可以支持至少 35 种的 8 位、16 位、32位的 MCU。其特点如下:1.完全兼容标准 C 语言。2.内建相应芯片的程序苏荷和内部优化器。3.高效浮点支持。4.内存模式选择。5.为了满足本设计的需求,使用的IAR 版本是 8.10.4。4.2.2.2 蓝牙 4.0 协议栈BLE 协议栈需要自己先在电脑上安装,BLE 协议栈里面存

34、放的是BLE 协议栈的源代码,TI 公司将会陆续退出协议栈新版本,但是为了配合IAR 的版本,所以这次的设计采用的是1.3.2版本的 BLE 协议栈。协议栈文件夹下有以下几个目录:名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 43 页 -大学毕业设计说明书第 18 页AccessoriesAccessoriesDrivers 里面存放的是烧写了HostTestRelease 程序的 CC2540 USBDongle的 USB 转串口驱动的程序,有的时候USBDongle 插到电脑上没有被识别成串口号,这里就要注意 USBDongle 出厂时烧写的是PacketSniffer的

35、固件,是协议分析仪,叧外当USBDdongle 烧写了 HostTestRelease 程序时才会表现为一个串口,此时USBDongle 的驱动程序就在Drivers 目录下。目录 AccessoriesHexFiles 里面存放的是TI 开发板上预先编译好的hex 文件。目录 AccessoriesBTool 里存放的是BTOOL 的安装文件,不过不需要手动安装,因为刚才安装协议栈的时候已经安装BTOOL。Components 目录 Components存放的协议栈组件是最终需要的,包括底层的 BLE 和开发板硬件层HAL,还有类似操作系统的OSAL。Documents目录 Document

36、下存放的是TI 公司提供的有关于协议栈和协议栈 demo 的相关介绍和开发文档,因为该目录下的文件非常重要,虽然全部是英文,也是需要查看的:TI_BLE_Sample_Applications_Guide.pdf协议栈 demo操作指南,协议栈里所有 demo的说明都在这里。TI_BLE_Software_Developers_Guide.pdfBLE 协议栈指南,介绍 BLE 和 TI的 BLE 协议栈。BLE_API_Guide_main.htm BLE API 文档,协议栈里调用的API 函数还有调用时序,都是在这个文档当中的。Projectsble目录 Projectsble,是最后一

37、个也是最重要的一个目录,基于协议栈的所有 demo工程都在这里。所有的协议栈 demo都要放到 Projects/ble这个目录下编译并且运行,因为 IAR程配置中使用的是相对路径,一旦 IAR 工程位置和整个协议栈源码的相对位置发生变化,就无法找到ble 的其他组件,编译时会产生大量的无法找到文件的错误,所有程序必须要放到这里来编译。4.2.2.3 BTool BTool 是一款 TI 公司出品的,与 CC2540开发配套的 PC 端应用程序,通过使用主机控制接口(HCI)命令的方式与蓝牙BLE 外设通信。Btool 允许用户使用基本的 BLE 集中器设备功能,例如发现蓝牙外设或广播设备、建

38、立与外设的连接、进行 GATT 应用数据的读写操作、绑定服务等。因此,可以在PC 端使用 Btool 工具来进行蓝牙外设应用程序的开发调试。4.2.2.4 Flash Programmer 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 43 页 -大学毕业设计说明书第 19 页Flash Programmer也是一款 TI 的官方软件,与 SmartRF04EB配合使用,向 EM开发板烧写 HEX 文件。4.3 HostTestRelease主机编程主机端由 CC2540 USBDongle、PC 和 TI 官方的上位机软件BTool 共同构成,也可以使用串口助手等串口调试软

39、件代替BTool。要向 CC2540 USBDongle中烧写 HostTestRelease 程序才能实现其作为主机的功能。USBDongle 是 USB 口的,通过内部软件模拟成串口,实现串口通信。打开 SimpleBLEPeripheral 从机工程。ProjectsbleHostTestAppCC2540HostTestRelease.eww 进入 HostTestRelease.c 主体源文件。HostTestRelease 网络处理器工程结构和一般的协议栈demo 一样,同样适用硬件抽象层,操作系统虚拟层。虽然它也包含了一个称为APP 的工程文件夹,但这些文件并不是真正的应用程序,

40、只是简化的代码层,用来将外部PC 发来的信息转化为调用协议栈的API 功能,任何从协议栈收到的消息都会发送给外部PC,这些转换的所有源码都包含在hci_ext_app.c文件中,HostTestRelease 工程如图 4.4 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 43 页 -大学毕业设计说明书第 20 页图 4.4 SimpleBLEPeripheral 工程文件TI BLE 协议栈中已经做了UART 底层驱动,因此并不需要重头编写UART 的驱动代码,而是直接调用hal_uar.c中的 api函数。该驱动源文件在如下目录:BLE-CC2540 x-1.3Co

41、mponentshaltargetCC2540EBCC2540EBhal_uart.c 调用 hal_uart.c提供的 api 方法一下:编写串口初始化函数,配置UART 波特率、流控制、缓冲区大小,数据接收回调函数等参数后,打开串口。编写数据接收回调函数。封装串口打印函数。在 hal_uart.c 中有一个串口初始化函数:HalUARTInit(),但编程不是针对它,HalUARTInit()在芯片上电阶段就会调用。而本设计中的串口初始化函数,是我们需要在任务函数中调用的初始化串口配置用。其函数如图4.5 所示名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 43 页 -大学

42、毕业设计说明书第 21 页图 4.5 串口应用初始化函数第 33 行:设置波特率,本设计使用的是57600。第 34 行:设置流控制,值为TRUE 或者 FALSE,当为 TRUE 时,除了 TX、RX 外,还要连接 CTS 和 RTS。如果设置成 FALSE,只需要 TX 和 RX 就可以外接通信。第 40 行:设置回调函数。当程序接收到硬件发来的串口数据时,会调用该函数,通知用户做好接收工作。第 44 行:以上的配置,打开需要的串口。当程序接收到硬件发来的串口数据时,会调用刚才配置的回调函数,通知我们做好接收工作,回调函数编写图4.6 所示:图 4.6 串口应用回调函数第 55 行:开辟临

43、时数据缓冲区,用来接收数据。第 64 行:调用 Hal_UART_RxBufLen 函数,返回当前可读的数据长度。第 66 行:调用 HalUARTRead 读取 uart缓存里的数据到 pktBuffer 中。SerialPrintString()封装了端口号和数据长度两个参数,SerialPrintValue函数向用名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 43 页 -大学毕业设计说明书第 22 页户提供了打印数值功能,并且可以控制打印的数值显示格式,如10 进制或者 16 进制。函数如图 4.7 所示。图 4.7 串口值打印函数4.4 SimpleBLEPeriph

44、eral从机编程这次设计用到的CC2540 开发板就是从机,在TI 公司的 BLE 协议栈中,虽然从机的主体结构和主机类似(都是基于 osal的),然而从机和主机有着很大的区别,在从机里包含了一个叫做profile 的相关代码,这个profile 决定了从机的功能。打开 SimpleBLEPeripheral 从机工程:ProjectsbleSimpleBLEPeripheralCC2540SimpleBLEPeripheral.eww 进入 SimpleBLEPeripheral.c 主体源文件。SimpleBLEPeripheral 工程如图 4.8 所示:图 4.8 SimpleBLEP

45、eripheral 工程目录文件列表分成如下几个文件夹:APP包含所有的应用程序源代码和头文件;HAL 包含硬件抽象层源代码和头文件;名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 43 页 -大学毕业设计说明书第 23 页INCLUDE 这个组包含所有的BLE 协议栈 API 的头文件;LIB 协议栈库文件;OSAL包含操作系统抽象层源代码和头文件;PROFILE包含 GAP 角色 Profile、GAP 安全 Profile、GATT Profile 的源代码和头文件;TOOLS包含 buildConfig.cfg、buildComponents.cfg。也包含“OnBoa

46、rd.c”和“OnBoard.h”,处理用户接口功能;OUTPUTIAR 输出的内容。SimpleBLEPeripheral_Init 任务初始化函数,如图4.9 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 43 页 -大学毕业设计说明书第 24 页图 4.9 SimpleBLEPeripheral_Init 任务初始化函数314 行:设置从机广播数据。313 行:设置主机扫描回应数据。主机和从机的开机流程如下:首先从机开启广播,然后主机扫描广播的从机,当主机扫描到从机后,会发出连接请求,当从机接收到主机的扫描请求后,会主动发送扫描回应数据。然后主机发起连接,开始通信

47、。这里涉及的广播内容和扫描回名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 43 页 -大学毕业设计说明书第 25 页应内容就是在这里设置的。310320行:设置 BLE 低功耗蓝牙系统里几个非常重要的时间参数。354 行:添加 SimpleProfile。366370行:设置 SimpleProfile 初始数据。最后 433 行:启动 BLE 从机。开始进入任务函数循环。可以看出,所有的任务函数的结构几乎都是一致的,有一个任务入口点,还有系统消息事件处理,以及其他的任务事件处理。455 行:系统消息事件,同样包括按键消息事件,以及从机的当前请求状态回复。471 行:有 in

48、t 函数启动的任务函数入口点,启动从机程序,并且开启周期性的任务处理,这个周期性的任务并不是必须的。系统消息处理函数如图4.10所示:图 4.10 系统消息处理函数从这个函数内容可以看到,在按键的处理前有一个宏定义,CC2540_MINIDK,当使用 Keyfob 开发板运行该从机程序时,会有按键处理。当使用CC2540EM 核心板时,不做任何处理。当 主 机 调 用GATT_ReadCharValue 后,读 取 到 的value,会 在GATT_MSG_EVENT 中通知我们,如图4.11所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 43 页 -大学毕业设计说明书第

49、 26 页图 4.11 GATT处理函数如上文所述,这里的 Peripheral是作为 GATT 的 service端,而主机是作为 GATT的 client 端,两者在数据的通信接口上有很大的区别。在从机里,接收数据是通过一个GATT Callback 回调函数。系统在接收到数据时会调用这个 callback 向我们发出通知。在SimpleBLEPeripheral.c的开头有这个回调函数的定义,如图4.12 所示:图 4.12 Callback 回调函数每当 profile 中的 characteristic value 有变化,都会产生一次回调。在回调函数中,我们判断是哪个charact

50、eristic,然后准备数据接收,这样就实现了主机到从机的数据接收工作。名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 43 页 -大学毕业设计说明书第 27 页5 系统调试5.1 调试平台介绍IAR 集成环境,是软件程序编译和运行的环境,在调试过程中,通过 IAR 编译、连接、运行,下载程序到CC2540开发板。它是作用是可以配合TI PacketSniffer软件实现 BLE 的无线抓包,另外可以配合 PC端的 BTool 软件实现 PC 端的 BTool 主机。5.2 调试步骤第一步:将 USBDongle 插入 PC端的 USB 口,打开 BTool 软件,打开 IAR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁