《本科毕业设计---基于cc2540的蓝牙40模块与pc机通信设计.doc》由会员分享,可在线阅读,更多相关《本科毕业设计---基于cc2540的蓝牙40模块与pc机通信设计.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘 要CC2540模块是TI(Texas Instruments)公司开发的一款用于蓝牙4.0开发的系统单晶片解决方案。利用它可以作为无线数据采集和收发的无线终端,蓝牙4.0技术构建的无线数据采集传输模块,具有功耗低,可靠性高和高安全性的优点,可以用作无线数据传输系统的数据采集端。因此,研究蓝牙4.0技术构建的与PC机进行无线数据传输通信的系统具有重大的现实意义和应用前景。设计的主要内容:设计并制作基于CC2540模块的数据采集终端。系统主要完成利用蓝牙4.0协议栈的编写,实现数据采集终端与PC之间的无线数据通信。数据采集端由TI官方的CC2040EM核心板和外围电路,如按键、LCD、DS18
2、B20组成,PC端由TI官方的CC25640 USBDongle和串口调试软件组成。本设计主要论述了蓝牙4.0协议栈的编写及应用,CC2540模块与PC的数据传输过程及原理。其中,对蓝牙4.0协议栈的编写及应用进行重点论述。从机端(数据采集模块)的工作主要是对硬件电路的设计和蓝牙4.0协议栈SimpleBLEPeriphral工程的编写;主机端(PC和USBDongle)的工作主要是对USBDongle中HostTestRelease工程的编写和BTool软件的调试。最终实现数据采集模块采集到的数据能通过蓝牙4.0协议无线传输到PC端,并且PC端能控制数据采集端或向其发送数据。Abstract
3、CC2540 module is a system used for the development of Bluetooth 4.0 single chip solutions provided by TI (Texas Instruments) company to develop. Because the Bluetooth 4.0 technology has the advantages of low power consumption, high reliability and long distance, it can be used as the wireless termin
4、als of wireless data acquisition.The main elements of design : Designing and fabricating the wireless data acquisition terminal based on CC2540 module, implementing the wireless communication between the wireless data acquisition terminal and PC. The data acquisition terminal is composed of the TI o
5、fficial CC2540EM and peripheral circuit, such as key, LCD, DS18B20. PC comprised TI official CC2540 USBDongle and the serial debugging software. This paper made a briefly introduction of the overview, prospects of application and the basic structure of the data acquisition and transmission of Blueto
6、oth technology. The main elements of the article discusses the compiling and application of the Bluetooth 4.0 protocol stack and the procedure and principle of data transmission between CC2540 module and PC.目 录摘 要IAbstractII目 录III引 言11绪论21.1蓝牙应用现状21.2研究目的和意义32开发环境42.1硬件环境42.1.1蓝牙芯片CC254042.1.2CC2540
7、EM核心板。52.1.3USBDongle62.1.4SmartRF04EB72.2软件环境82.2.1IAR82.2.2蓝牙4.0 BLE协议栈82.2.3BTool92.2.4Flash Programmer103系统硬件设计113.1设计方法和工具113.2系统框图113.3硬件电路图113.3.1CC2540核心板硬件资源113.3.2天线及巴伦匹配电路设计123.3.3晶振电路设计133.3.4电源电路设计133.3.5LED电路设计143.3.6五向按键电路设计143.3.7LCD12864电路设计153.3.8复位电路设计153.3.9下载调试电路设计154系统软件设计174.1
8、BLE蓝牙协议栈介绍174.2操作系统抽象层OSAL194.3硬件抽象层 HAL204.4配置文件层214.5BLE协议栈开发平台配置234.6SimpleBLEPeripheral 从机编程234.7HostTestRelease主机编程285系统安装与测试32结 论33致 谢34参考文献35引 言随着物联网技术的迅速发展,企业对于数据准确性和实时性的要求又有了进一步的提高,用户希望将数据的实时性扩展到更广阔的领域,由此,蓝牙4.0技术的出现显得尤为重要。在一些需要被实时监控的环境中,比如粮食仓库、图书仓库、医院病房中,目前数据的传输基本是基于有线的网络,但是,在生产现场环境比较恶劣或现场没
9、有条件进行人工测量统计数据,有线传输由于设备的驱动能力达不到或成本较高时,为了保证数据能够及时、准确地送回到控制中心,无线传输就成为首选的途径。由于现在大多数的PC机还没有内置蓝牙4.0功能,因此,研究蓝牙4.0技术实现PC机的无线数据处理设计问题对现实生产生活中的应用有很大的意义。蓝牙4.0作为2010年新推出的新一代蓝牙技术规范,目前各大公司和厂家都纷纷推出自己的硬件开发平台和软件支持,因此在硬件平台和软件支持的选择上不仅要满足系统的需求,还要符合蓝牙未来发展的潮流; 在保证系统可实现的基础上,做出常用的I/O口模块,拓展蓝牙应用的领域; 蓝牙4.0的软件编程是基于一定的协议栈的基础之上的
10、,类比于以前的编程来说难度不太好确定,但至少是要在熟悉协议栈的基础上进行开发,因此协议栈的学习成了一个重点;本次设计采用的是以TI公司的CC2540芯片为核心的EM开发板,并在外围拓展所需的按键、温度传感器和LCD等外设构成数据的采集端,PC端由TI公司提供的CC2540 USBDongle和上位机串口调试软件构成。需要通过对蓝牙4.0的协议栈进行编写和应用才能实现CC2540数据采集模块与PC机的有效通信。1 绪论 1.1 蓝牙应用现状本节对蓝牙4.0无线传输的国内外研究现状进行了总结并进行了对比分析。重点对未来的应用前景进行分析。蓝牙技术的研究与开发在国外起步早,经验和资源积累较为丰富,从
11、蓝牙的发展历史来看,蓝牙技术由爱立信公司于1994年创立,后来由Nokia、苹果公司和三星所创立的蓝牙兴趣小组旨在全世界范围内建立小范围的无线通信技术。伴随着后来的蓝牙特别兴趣小组的成立,使得蓝牙技术成为未来的一种全新的通信标准成为可能。后来,业内所共同发起的蓝牙技术推广组织,将蓝牙技术的发展推向了时代的浪潮。2010年4月20日,蓝牙4.0协议发布,这是目前最新的蓝牙版本,为第三代蓝牙的升级版。它包括三个子规范,为大家所熟知的是,就是传统意义上的蓝术、高速度蓝牙,还有蓝牙低功耗技术。在新一代的蓝牙中,蓝牙4.0 BLE在继承了以前的蓝牙技术的固有优点的基础上,同时它还使得传输速度得到大幅度的
12、增加。更为重要的是,它所固有的功耗很低,与第三代蓝牙版本版本相比,尤以低耗能技术为核心。这一次的技术改进中它主要体现在如下方面,包括电池续航时间的加长、功耗低等方面,拥有着成本低,可操作性强,延迟时间短、通信距离长,AES-128加密等诸多特色。此外,在新一代的蓝牙协议中,蓝牙BLE4.0的有效传输距离得到大幅的提升。相比于之前版本的10米的传输距离,而新一代蓝牙4.0 BLE的有效传输距离可达100米。目前,针对新一代蓝牙4.0的技术规范,各大厂家和公司纷纷推出自己的硬件平台和软件协议栈,在这一点上,德州仪器 (TI) 的蓝牙技术的发展站在世界的前列,其公司所开发的的CC2540系列产品为蓝
13、牙技术的实现和应用提供了一个真正意义上的解决方案,这将使得蓝牙4.0 BLE不再仅仅停留在规范文档之中,这将作为一项新的技术得到广泛的实践和发展。国内对蓝牙技术的研发起步较国外要晚,但正所谓东方蓝牙风光无限,这一项短距离无线通信技术,必将在世界的东方这一人口密集,商业繁荣的大陆得到前所未有的巨大发展。这项技术只有在人与人之间以及人与机器之间相互交往的时候才会更大程度的体现出它的价值。更值得一提的是,目前,蓝牙4.0 BLE 规范文档已经推出,但是各大国际公司和厂商所推出的硬件平台和软件开发系统不尽相同,这使得新一代蓝牙技术的开发与研究更加具有开放性,不会在短时间之内出现被少数大公司技术垄断的局
14、面,这也有利于我国在这一次的技术浪潮中占据主动的优势,特别是借助于蓝牙技术,使我国的信息产业能够更快更广泛地渗透到国民经济的其他领域中去,从而可以加快实现用信息化带动工业化,带动现代化的进程。1.2 研究目的和意义物联网是当今科技和技术发展的重要产物,物联网为我们的生活和工作带来了巨大的改变。蓝牙4.0技术就是物联网发展的重要产物之一,它作为一种低功耗、高可靠性和较远距离的数据传输标准,为各行各业提供了更多发展空间和工作效率。比如粮食仓库中,粮食的保存和温度有十分密切的关系,适宜的温度能使粮食保存的时间更长而且不会变质。但是传统的测温系统都是通过有线的方式连接传感器,而且传感器的位置一旦被固定
15、后,今后需要更换位置不是很方便。不仅如此,传统的测温系统的功耗都比较大,需要定期的人工维护,这样下来,传统的有线测温系统的成本和效果都不尽人意。而利用本设计提供的CC2540数据采集模块,可以实现在粮食仓库的任意需要测量温度的位置放置CC2540数据采集模块,实时地将采集的温度通过蓝牙4.0协议无线传输给PC端,以便PC端根据采集的温度对温控系统进行适当的操作或做出其他相应的操作,使需要改变温度的位置得到改善。而且由于蓝牙4.0技术的超低功耗的特点,非常适合粮食仓库这种需要长时间实时采集数据的环境。同样地,在图书仓库和中药仓库中,对温度也有类似的要求,所以本设计的应用对于这种需要十分有效的温度
16、调节的环境有广阔的市场前景。又如在医院的病房中,病人的心率、血压、输液剩余量等信息都是需要被医生或护士在第一时间得知的信息。而传统的传感器模块加有线传输的方式在医院病房这种人员较多,且人员流动频繁的场所来说,显得很不方便也很不实用,消耗也十分大。而本设计所提出的,基于CC2540的蓝牙4.0模块恰好能解决上面所述的问题。医生和护士只需在办公室,就能从PC上实时地看到各个病人的情况,并且能准确地去了解病人的情况,做出相应的医疗方案和应急措施,这对医生和病人来说都是极大的好处。综上所述,蓝牙4.0技术将把物联网又向前带了一大步,在未来的生产和生活当中,蓝牙4.0必将发挥其不可忽视的作用,为我们带来
17、极大的便利与快乐。2 开发环境2.1 硬件环境2.1.1 蓝牙芯片CC2540CC2540集成了2.4GHz射频收发器,是一款完全兼容8051内核的无线射频单片机,它完美的兼容了蓝牙低功耗协议栈,非常适合蓝牙低功耗的开发和应用,它有3个不同的存储器访问总线:特殊功能寄存器(SFR);数据(DATA);代码/外部数据(CODE/XDATA)。CC2540单片机使用单周期访问SFR、DATA和住SRAM。当CC2540处于空闲模式时,任何的中断可以把CC2540恢复到主动模式。某些中断还可以将CC2540从睡眠模式唤醒。位于系统核心存储器交叉开关使用SFR总线将CPU、DMA控制器与物理存储器和所
18、有的外接设备连接起来。CC2540的Flash容量可以选择,有128KB、256KB,这就是CC2540单片机的在线可编程非易失性存储器,并且映射到代码和外部数据存储器空间。除了保存程序代码和常亮之外,非易失性存储器允许应用程序保存必要的数据,以保证这些数据在设备重启后可用。图2-1是CC2540的内部结构图图2-1 CC2540内部结构图如图2-1所示,CC2540的这些模块大致可以分为三类:CPU和内存相关的模块;外设、时钟和电源管理相关的模块,以及无线电相关的模块。2.1.2 CC2540EM核心板。CC2540 EM是TI公司官方推出的,蓝牙4.0开发套件之一。CC2540EM核心板主
19、要包括CC2540单片机、全尺寸倒F天线,晶振以及扩展接口,CC2540EM核心板如图2-2所示:图2-2 CC2540EM开发板实物图2.1.3 USBDongle如图2-3所示,是CC2540 USBDongle的实物图。它是作用是可以配合TI PacketSniffer软件实现BLE的无线抓包,另外可以配合PC端的BTool软件实现PC端的BTool主机。USBDongle通过USB接口与PC连接,安装TI的驱动程序,将USBDongle模拟成串口,然后运行BTool。图2-3 USBDongle实物图2.1.4 SmartRF04EB如图2-4所示,是SmartRF04EB的实物图。它
20、是用来调试和下载软件到EM的仿真器。它是TI第一代的CC系列仿真器,性价比高,支持CC2540和CC2530,但不支持CC2541。图2-3 SmartRF04EB实物图2.2 软件环境2.2.1 IARIAR Embedded Wordbench(又称EM)的C交叉编译器是一款完整、稳定且容易使用的专业嵌入式应用开发工具,IAR对不同的微处理器提供统一的用户界面,目前可以支持至少35种的8位、16位、32位的MCU。其特点如下:l 完全兼容标准C语言。l 内建相应芯片的程序苏荷和内部优化器。l 高效浮点支持。l 内存模式选择。为了满足本设计的需求,使用的IAR版本是8.10.4。2.2.2
21、蓝牙4.0 BLE协议栈BLE协议栈需要先自己安装,里面存放的是协议栈源码,TI会陆续更新协议栈版本,但是本设计为了配合IAR的版本,所以选择使用1.3.2版本的BLE协议栈。协议栈文件夹下有以下几个目录:l AccessoriesAccessoriesDrivers 里面存放的是烧写了 HostTestRelease 程序的CC2540 USBDongle的USB转串口驱动程序,很多用户反应说USBDongle插到电脑上没有被识别成串口号,这里就要注意,USBDongle出厂时烧写的是PacketSniffer的固件,是协议分析仪,叧有当USBDdongle烧写了 HostTestRelea
22、se 程序时才会表现为一个串口,此时USBDongle的驱动程序即在 Drivers 目录下。AccessoriesHexFiles 里面存放的是 TI 开发板上的预先编译的hex文件。AccessoriesBTool 以前的协议栈版本没有这个目录,这里存放的是 BTOOL 的安装文件,不过不需要手动安装,因为刚才安装协议栈的时候已经安装BTOOL。l Components目录Components存放的是最终要的协议栈组件,包括底层的BLE,还有开发板硬件层 hal,还有类似操作系统的osal。l Documents目录Documents存放的是 TI 提供的关于协议栈和协议栈 demo 的相
23、关介绍和开发文档,因为该目录下的文件非常重要,虽然全部是英文,也需要查看: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函数还有调用时序,均在此文档中。l Projectsble目录Projectsble,最后一个,也是最重要的目录,基于协议栈的demo工程都在这里。所有的协议栈demo都要放到Pro
24、jects/ble这个目录下编译运行,因为IAR程配置中使用的是相对路径,一旦IAR工程位置和整个协议栈源码的相对位置发生变化,就无法找到ble的其他组件,编译时会产生大量的无法找到文件的错误,所有程序必须要放到这里来编译。2.2.3 BToolBTool是一款TI公司出品的,与CC2540开发配套的PC端应用程序,通过使用主机控制接口(HCI)命令的方式与蓝牙BLE外设通信。Btool允许用户使用基本的BLE集中器设备功能,例如发现蓝牙外设或广播设备、建立与外设的连接、进行GATT应用数据的读写操作、绑定服务等。因此,可以在PC端使用Btool工具来进行蓝牙外设应用程序的开发调试。2.2.4
25、 Flash ProgrammerFlash Programmer也是一款TI的官方软件,与SmartRF04EB配合使用,向EM开发板烧写HEX文件。3 系统硬件设计3.1 设计方法和工具硬件系统的设计采用模块化的方法,即首先设计出CC2540核心板,再设计出其外围电路,之后整体调试。系统设计工具软件采用Altium Designer 。这是一款功能强大的电路设计软件,其原型为大家所熟知的Protel,为广大的硬件设计者提供了完美的硬件开发系统,这套软件从原理图的绘制到电路的实际仿真,PCB版图的设计等方面极大地便利了用户的自主开发。3.2 系统框图系统硬件框图包括CC2540核心板和外围电
26、路,整个系统传输过程如图3-1所示:图3-1 系统硬件框图3.3 硬件电路图3.3.1 CC2540核心板硬件资源CC2540EM核心板主要包括CC2540单片机、全尺寸倒F天线,晶振以及扩展接口,CC2540EM核心板如图3-2所示:图3-2 CC2540核心板3.3.2 天线及巴伦匹配电路设计CC2540外部仅需几个简单的阻容网络即实现复杂的RF前端。这部分的电路也叫做巴伦匹配电路,这部分的结果好坏对通信距离,系统功耗都有较大的影响。TI已经提供了非常可靠的参考设计,所以本设计只需按照TI的参考设计来开发电路即可。天线设计可以根据不同的应用来选择,既可以使用PCB天线,也可以使用SMA天线
27、。本设计采用的是PCB天线,天线及巴伦匹配电路设计如图3-3所示。图3-3 天线及巴伦匹配3.3.3 晶振电路设计由于CC2540需要2个晶振,32MHz和32.768K,所以本设计安装要求设计了这2个晶振电路,晶振电路接口如图3-4所示。图3-4 晶振电路3.3.4 电源电路设计TI第一代CC2540DK开发套件中的EM开发板可以使用USB转DC电源从USB接口上取电,另外也可以使用锂电池等供电,直接插在BT1上,电压输入范围为3.4V到6V,电源管理电路如图3-5所示图3-5 电源管理电路3.3.5 LED电路设计本设计采用与TI完全兼容的四色LED,高电平驱动,另外D4和S1按键共用一个
28、端口。LED和按键S1电路如图3-6所示。图3-6 LED驱动和按键S1驱动电路3.3.6 五向按键电路设计协议栈另外一个非常重要的拓展电路就是五向按键,几乎每个协议栈demo都会用到五向按键来辅助操作。五向按键的电路比较复杂,但是原理非常简单,当按键按下时首先产生一个高电平,触发一个GPIO中断,然后通过放大器输出不同的电压值,当CC2540接收到中断后开始去读五向按键的电压,不同的方向按下产生的电压值不同,这样就实现了joystick。五向按键设计电路如图3-7所示。图3-7 五向按键电路图3.3.7 LCD12864电路设计本设计采用小型的12864作为系统的显示系统,该LCD采用SPI
29、接口。LCD电路设计如图3-8所示。图3-8 LCD电路3.3.8 复位电路设计CC2540内部集成了上电复位电路,为了方便程序调试,本设计在板子上加了一个按键用来在线复位,尤其当使用UART转串口时,直接断电会导致PC设备异常,这样复位按键就能够起到很好的系统复位功能。复位电路如图3-9所示。图3-9 复位电路3.3.9 下载调试电路设计CC2540EM开发板使用标准的CC-Debugger调试接口,为了方便调试,特意将debugger接口的9脚和2脚短接,这样可以使用CC-Debugger为板子供电。下载调试电路如图3-10所示。图3-10 下载调试电路4 系统软件设计 4.1 BLE蓝牙
30、协议栈介绍协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发;协议栈是协议的具体实现形式,通俗的理解为用代码实现的函数库,以便于开发人员调用。蓝牙4.0 BLE 协议栈就是将各个层定义的协议栈都集合在一起,以函数的形式实现,并提供一些应用层API,供用户调用。值得注意的是,虽然协议是统一的,但是协议的具体实现形式是变化的,即不同的厂商提供的协议栈是有区别的。蓝牙4.0 BLE协议栈具有很多版本,不同的厂商提供的蓝牙 4.0 BLE协议栈有一定的区别,本次的毕业设计选择的是TI公司推出的蓝牙4.0 BLE协议栈 BLECC254x1.3.2.TI公司推出的新一代蓝牙4.
31、0 BLE协议栈由两个部分组成:主机和控制器。主机和控制器的分离要追溯到蓝牙BR/EDR设备时期,控制器和主机通常会分开实现。协议栈的实现方式采用分层的思想,控制器部分包括:物理层、链路层、主机控制接口层;主机部分包括:逻辑链路控制及自适应协议层、安全管理层、属性协议层、通用访问配置文件层、通用属性配置文件层,如图4-1所示:图4-1 蓝牙4.0 BLE协议栈蓝牙4.0 BLE协议栈采用分层思想将服务、接口和协议这三个概念明确地区分开来。这样各层之间具有很强的独立性,当协议的一部分发生变化时,只需对与此相关的分层进行修改即可,其他各层不需要改变。物理层(Physical Layer)是1Mbp
32、s自适应跳频的GFSK射频,工作于免许可证的2.4Ghz ISM(工业、科学和医疗)频段。链路层(Link Layer)用于控制设备的射频状态,设备将会处于五种状态之一:等待、广告、扫描、初始化、连接。广告设备不需要建立连接就可以发送数据;而扫描设备收听广播设备发出的数据;发起连接的设备通过发送连接请求来回应广播设备,如果广播设备接受连接请求,那么广播设备与发起连接的设备将会进入连接状态。主机和控制器之间的标准的通信接口是在主机控制器接口层实现的。这一层可以是软件API或硬件接口,如UART、SPI、USB。逻辑链路控制及自适应协议层(Logical Link Control and Adap
33、tation Protocol)为上层提供数据封装服务,允许逻辑上的点对点数据通信。安全管理层(Security Manager)定义了配对和密钥方式,并为协议栈其它层与另一个设备之间的安全连接和数据交换提供服务。属性协议层(Atttibute protocol)允许设备向另一个设备展示一块特定的数据,称之为“属性”。在ATT环境中,展示“属性”的设备称为服务器,与之配对的设备称为客户端。链路层状态(主机和从机)与设备的ATT角色是相互独立的。通用属性配置文件层(Generic Attribute profile)是在ATT 上面的一层结极,定义了使用ATT 的服务框架,GATT 规定了配置文
34、件(鼎鼎有名的profile)的结极,在BLE 中,所有被profile 戒者服务用刡的数据块都称为“特性,characteristic”两个建立连接的设备之间的所有数据通信都是通过GATT 子程序处理,应用程序和profile 直接使用GATT 层。TI公司免费的蓝牙4.0 BLE软件开发套件是完整地支持单模蓝牙4.0 BLE应用开发的平台,它基于CC2540/CC2541射频单片机,蓝牙4.0 BLE软件平台支持两种不同的应用开发配置。4.2 操作系统抽象层OSALOSAL(操作系统抽象层)是类似于一个系统的抽象层,但它不是一个真正意义上的操作系统。OSAL常用术语:资源、共享资源、任务。
35、在任务设计时,需要将问题尽可能地分为多个任务,每个任务独立完成某种功能,同时被赋予一定的优先级,拥有自己的CPU寄存器和堆栈空间。内核:使用内核可以大大简化应用系统的程序设计方法,借助内核提供的任务切换功能,可以将应用程序分为不同的任务来实现。保护共享资源最常用的方法是:l 关中断;l 使用测试并置位指令;l 禁止任务切换;l 使用信号量。其中,在蓝牙4.0 BLE协议栈内嵌操作系统中,经常使用的方法是关中断。在蓝牙4.0 BLE协议栈中,OSAL主要提供如下功能:l 任务注册、初始化和启动;l 任务间的同步、互斥;l 中断处理;l 存储器分配和管理;l 提供定时器功能。在新推出的蓝牙4.0
36、BLE协议栈中,其中有三个变量值得一提:tasksCnt:该变量保存了任务的总个数。该变量的声明为:uint8 taskCnt。其中uint8的定义为:typedef unsigned char uint8。taskEvents:这是一个指针;该变量的声明为:uint16 *taskEvents。其中uint16的定义为:typedef unsigned short uint16。taskArr:这是一个数组;该数组的声明为:pTaskEventHandlerFn taskArr.这是一个函数指针,指向了对应的事件处理函数。4.3 硬件抽象层 HAL硬件抽象层(HAL)是提供硬件服务而又不涉及
37、太多硬件细节的层,为应用提供访问GPIO、UART、ADC等硬件的接口。硬件抽象层文件目录如图4-2所示:图4-2 HAL文件目录硬件抽象层文件目录包括HAL驱动和HAL相关文件的头文件,HAL文件存放在三个不同的目录之下,HAL Common文件夹包含协议栈、MAC和驱动中使用到相关配置文件。其中“hal_drivers.c”文件包含所有驱动初始化及相关事件处理机制。主要包括以下三个函数:HAL_Init()它是osaltaskadd调用,以便在OSAL中注册HAL的驱动;HALdriverInit()它是main()函数调用来初始化硬件驱动。HAL_processevent()这个函数用来
38、处理OSAL中HAL相关的驱动事件,例如按键、LED、LCD、蜂鸣器、休眠定时等。HAL Include文件夹包含HAL驱动及HAL相关文件的头文件,如图4-3所示:图4-3 Include文件下头文件HAL Target文件夹下的Drivers包含所有HAL驱动的“.c”文件。4.4 配置文件层蓝牙4.0 BLE协议栈的配置文件层包括GAP角色/安全配置文件、GATT配置文件两部分。(1)通用访问配置文件(GAP):BLE协议栈中的GAP层负责处理设备访问模式和程序,包括设备发现、建立连接、终止连接、初始化安全特色和设备配置。GAP层总是作为下面四种角色之一:广播者不可连接的广告设备;观测者
39、扫描广播,但不发起建立连接;外部设备可连接的广告设备,可以在单个链路层连接中作为从机;集中器扫描广告设备并发起连接,在单链路层或多链路层作为主机,目前,BLE协议栈支持一个集中器连接三个外设。在典型的蓝牙低功耗系统中,外部设备广告特定的数据,来使集中器知道它是一个可以连接的设备。广告内容包括设备地址以及一些额外的数据,如设备名等。集中器收到广告数据后,向外部设备发送扫描请求,然后外部设备将特定的数据回应给集中器,称为扫描回应。集中器收到扫描回应后,便知道这是一个可以建立连接的外部设备,这就是设备发现的全过程。此时,集中器可以向外部设备发起建立连接的请求。连接请求包括下面一些连接参数。连接间隔在
40、两个BLE设备的连接中使用跳频机制,两个设备使用特定的信道收发数据,然后过一段时间后再使用新的信道(链路层处理信道切换),两设备在信道切换后收发数据称之为连接事件。即使没有应用数据的收发,两设备仍然会通过交换链路层数据来维持连接。连接间隔就是两个连接事件之间的时间间隔,连接间隔以1.25为单位,连接间隔的值是6(7.5ms)3200(4s)。不同的应用可能要求不同的时间间隔。长的时间间隔的优势是显著地节省功耗,因为设备可以在连接事件之间有较长事件的休眠,坏处是当设备有应用数据需要发送时,必须要等到下一个连接事件;短的时间间隔优势是两设备连接频发,可以更快地收发数据,不利之处是设备因连接事件的到
41、来而被频繁地唤醒,会有较多功耗。从机延迟这个参数的设置可以使从机(外部设备)跳过若干连接事件,这给了外设更多的灵活度,如果它没有数据发送时,可以选择跳过连接事件继续休眠,以节省功耗。管理超时这是两个成功连接事件之间的最大允许间隔。如果超过了这个时间而没有成功的连接事件,设备被认为是丢失连接,返回到未连接状态。这个值的单位是10ms,管理超时的范围是10(100ms)3200(32ms)。另外,超时值必须大于有效的连接间隔有效的连接间隔=连接间隔*(1+从机延迟)。外设可以通过向集中器发送“连接参数更新请求”来改变连接设置,这个请求由协议栈的L2CAP层来处理。这个请求包含4个参数:最小连接间隔
42、、最大连接间隔、从机延迟、超时。这些值代表了外设所要求的连接参数。当集中器收到请求后,可以选择接受或拒绝这些新的参数。连接可以被主机或从机以任何原因自动终止。当一方发起终止连接时,另一方必须响应。然后两个设备才能退出连接设备。(2)通用属性配置文件(GATT)主机既可以是GATT客户端也可以是GATT服务器;从机既可以是GATT客户端也可以是GATT服务器。在蓝牙4.0 BLE协议栈中的SimpleBLEPeripheral应用中,有三个GATT服务。 GATT定义了在BLE连接中发现、读取和写入属性的子过程。属性表是一个数据库,包含了称为属性的小块数据,除了值本身,每个属性都包含下列属性:句
43、柄属性在表中的地址,每个属性有唯一的句柄;类型表示数据代表的事务,通常是蓝牙技术联盟规定或由用户自定义的UUID(Universally Unique Identifier);权限规定了GATT客户端设备对属性的访问权限,包括是否能访问和怎样访问。GATT定义了若干在GATT服务器和客户端之间的通信的子过程。下面是一些子过程:读特性值客户端设备请求读取句柄处的特性值,服务器将此值回应给客户端(假定属性有读权限)。使用特性的UUID读客户端请求读基于一个特定类型的所有的特性值,服务器将所有与指定类型匹配的特性的句柄和值回应给客户端设备(假设属性有读权限)。读多个特性值客户端一次请求中读取几个句柄
44、的特征值,服务器将这些特征值回应给客户端(假设属性有读权限)。客户端需要知道如何解析这些不同的特性值的数据。4.5 BLE协议栈开发平台配置TI公司免费的蓝牙4.0 BLE软件开发套件是完整地支持单模蓝牙4.0 BLE应用开发的平台,它基于CC2540/CC2541射频单片机,是一套完整的SoC解决方案。蓝牙4.0 BLE软件开发平台支持两种不同的应用开发配置:1. 单一设备:控制器、主机、配置文件、应用程序在一片CC2540上实现,这是最简单和最常见的配置。这种方式提供最低的成本和功耗,大部分实际应用都采用这种方式。SimpleBLEPeripheral和SimpleBLECentral示例
45、工程都是采用单一设备的配置方式。2. 网络处理器:控制器和主机部分在CC2540上执行,而应用程序和Profiles在另一个设备执行。应用程序和Profiles通过厂商特定的HCI命令与CC2540通信,这一过程需要使用硬件或UART接口,或者通过USB使用虚拟的UART接口。网络处理器配置适用于应用程序在另一个设备(外部微控制器或PC)上运行的情况。在这种情况下,应用程序可以在外部独立开发,而协议栈仍然在CC2540上运行。要使用网络处理器,HostTestRelease工程必须使用。如上所述,本设计是为了实现CC2540无线通信模块与PC机的通信,所以本设计所选择的BLE 协议栈开发平台配
46、置为网络处理器配置。4.6 SimpleBLEPeripheral 从机编程这里说到的从机,也就是本设计用到的CC2540EM开发板。在TI的BLE协议栈中,虽然主机和从机的主体结构类似(均基于osal),但是从机和主机有着很大的区别,从机里包含了一个叫做profile的相关代码,这个profile决定了从机的功能。例如防丢器、血压仪、心率计等均是蓝牙组织规定的profile。打开SimpleBLEPeripheral从机工程。ProjectsbleSimpleBLEPeripheralCC2540SimpleBLEPeripheral.eww进入SimpleBLEPeripheral.c主体
47、源文件。SimpleBLEPeripheral工程如图4-4所示:图4-4 SimpleBLEPeriphal工程文件文件列表分成如下几个文件夹:APP包含应用程序源代码和头文件;HAL包含硬件抽象层源代码和头文件;INCLUDE这个组包含所有的BLE协议栈API的头文件;LIB协议栈库文件;OSAL包含操作系统抽象层源代码和头文件;PROFILE包含GAP角色Profile、GAP安全Profile、GATT Profile的源代码和头文件;TOOLS包含buildConfig.cfg、buildComponents.cfg。也包含“OnBoard.c”和“OnBoard.h”,处理用户接口功能;OUTPUTIAR输出的内容。SimpleBLEPeripheral_Init 任务初始化函数,如图4-5所示。图4-5 SimpleBLEPeripheral_Init任务初始化函数314行:设置从机广播数据。313行:设置主机扫描回应数据。主