1、提纲提纲提纲提纲原理及流程图原理及流程图原理及流程图原理及流程图开始开始初始化初始化发送广播发送广播发送广播发送广播建立连接并作为从机建立连接并作为从机开始开始初始化初始化按键搜索按键搜索发现设备发现设备建立连接并作为主机建立连接并作为主机SimpleBLEPeripheral工程(节点设备)SimpleBLECentral工程(集中器设备)搜索回应搜索请求发起连接请求响应连接请求提纲提纲从机连接过程从机连接过程从机连接过程从机连接过程从机连接过程从机连接过程提纲提纲主机连接过程主机连接过程主机连接过程主机连接过程主机连接过程主机连接过程主机连接过程主机连接过程主机连接过程主机连接过程按键按键
2、功能功能UP1.开始扫描或停止设备发现;2.连接后可读写特征值LEFT显示扫描到的节点设备,在LCD中滚动显示RIGHT连接更新CENTER建立或断开当前连接DOWN启动或关闭周期发送RSSI信号值提纲提纲任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施任务实施提纲提纲总结总结01蓝牙技术与BLE协议栈02任务及实验准备03关键知识点目录目录CONTENTS04任务实现05运行测试06特别关注一、蓝牙技术与一、蓝牙技术与BLEBLE协议栈协议栈 蓝牙无线技术是主要应用于短距离无线通信领域,牙无线技术是全球使用范围最广的短距
3、离无线标准之一。其最高数据传输速率1Mbps、最大传输距离为10厘米10米。BLE(Bluetooth Low Energy,低功耗蓝牙)是蓝牙 4.0 的核心规范,其凭借超低的运行功耗、待机功耗等技术,使得其在以手机为智能终端的物联网应用中具有强有力的发展前景。CC2541 是一款针对 低能耗及私有 2.4-GHz 应用的功率优化的片载系统(SoC)解决方案,是蓝牙通信模块使用的芯片,芯片内部集成增强型8051内核。BLE协议栈是在蓝牙 4.0 的基础上推出的低功耗蓝牙通信标准,其包括一个小型操作系统(抽象层OSAL),负责系统的调度,收发双方需要共同按照这一标准进行正常数据的收发,其大部分
4、代码被封装成库,用户通过API调用完成系统开发。一、蓝牙技术与一、蓝牙技术与BLEBLE协议栈协议栈 在NewLab实验平台上固定两块蓝牙通信模块、一块继电器模块,安放一个灯泡模块,按图示把模块连起来,在PC机上,通过BTool工具发送命令,使主、从机建立连接,控制灯泡亮和灭。二、任务及实验准备二、任务及实验准备 1.BLE协议栈的安装,双击工具包中的“BLE-CC254x-1.3.2.exe”。2.开发工具的安装,解压工具包中的“IAR Embedded Workbench.rar”,双击”autorun.exe”双击安装开发工具。3.烧写工具的安装,双击”Setup_SmartRFProg
5、r_1.12.7.exe”双击安装烧写工具。二、任务及实验准备二、任务及实验准备 1.profile规范是一种标准通信协议,定义了设备如何实现一种连接。2.GATT服务:用于应用程序在两个连接设备之间的数据通信,设备连接后,主机将作为GATT Client,是从GATT服务器读/写数据的设备,从机将作为GATT Server,是包含主机需要读/写的设备。3.特征值:主从机通信通过特征值来实现,通过特征值可以获取或写入先要的内容。4.统一识别码(UUID):GATT服务和特征值都有UUID。5.句柄(handle):GATT服务将整个服务加载到属性表中,并为每个属性分配唯一的句柄。三、关键知识点
6、三、关键知识点5.主从机建立连接流程:(1)从机启动发送广播。(2)主机启动搜索广播节点。(3)从机回应搜索请求。(4)主机发现设备,发起连接请求。(5)从机响应连接请求。(6)主从机连接完成。三、关键知识点三、关键知识点 7.数据传输流程:(1)主机发送主服务UUID,从机收到主服务UUID并回应服务信息。(2)主机发送主服务UUID,从机收到特征UUID并回应特征值句柄。(3)主机发送特征句柄,从机查找特征值并回应给主机。(4)主机通过句柄,对特征值进行读/写操作。三、关键知识点三、关键知识点 1.1.主机代码主机代码:(1)打开“HostTestRelease.eww”工程,worksp
7、ace选择“CC2541EM”。(2)在“_hal_uart_dma.c”文件中找到“HalUARTOpenDMA()”函数,新增“config-flowControl=0;”代码,关闭流控。(3)将主机拨码开关JP2拨到J9位置,编译下载程序到蓝牙模块中,按“复位”重新运行。四、任务实现四、任务实现 1.1.从机代码(以任务从机代码(以任务2 2为基础)为基础):(1)打开“SimpleBLEPeripheral.eww”工程,workspace选择“CC2541”。(2)在“hal_board_cfg.h”文件修改LED1的定义,通过从机模块P1.2端口控制继电器的动作。四、任务实现四、任
8、务实现(3)在“simpleBLEPeripheral.c”文件的“simpleProfileChangeCB()”函数中添加红框所示代码控制P1.2端口电平的高低,以此控制灯的亮灭四、任务实现四、任务实现(4)在“simpleBLEPeripheral.c”文件的“peripheralStateNotificationCB()”函数中添加红框所示代码,设置P1.2端口在从机处于广播和已连接状态时为低电平。四、任务实现四、任务实现(5)将从机拨码开关JP2拨到J9位置,编译下载程序到蓝牙模块中,下载完毕,将拨码开关JP2拨到J2位置,按“复位”重新运行。四、任务实现四、任务实现(1)NewLa
9、b平台通过USB转串口线连接PC机,运行“BTool”工具,设置串口参数,通过搜索找到从机,选中从机,建立与从机的连接。五、运行测试五、运行测试(1)利用“BTool”工具对CHAR1特征值写入“1”,点亮灯泡。五、运行测试五、运行测试(1)利用“BTool”工具对CHAR1特征值写入“0”,熄灭灯泡。五、运行测试五、运行测试(1)两根线的串口通信连接务必关闭流控,否则无法收发数据。(2)修改预编译选项,添加:HAL_UART=TRUE、LCD_TO_UART、HAL_LCD=TRUE预编译选项,删除或禁用POWER_SAVING预编译选项。(3)从机烧写完毕,拨码开关拨到J2位置,只有主机芯片与NewLab平台串口相连。(4)硬件连接,不能带电操作。六、特别关注六、特别关注