基于cc2540的照明控制系统设计毕业设计(编辑修改稿)内容摘要:
第 13 页 属性协议层简称为“属性”,能够通过它向其他设备展示自己特定的属性数据,在一些环境中,我们也把展示设备属性的设备称作为服 务器,如在 ATT 环境中,当然有服务器就会有相应的客户端,它是与属性设备配对的设备,并且主机和从机的链路层状态是与相应设备的 ATT 角色是相互独立各不相关。 通用属性配置文件层是一种定义使用 ATT 相关服务的框架,并且在 ATT 服务上面属于的一层结极,这当中的 GATT 规定相关配置文件的结极,这一服务模块被相应的机构称之为“特性”,这种特性是建立在两个设备连接之间的所有数据之间进行的相关通信,并且它们是 GATT 的子程序处理过,再在应用程序中在 GATT 层直接简单的进行使用。 TI公司免费的蓝牙 BLE软件 开发套件是完整地支持单模蓝牙 BLE应用开发的平台,它基于 CC2540/CC2541 射频单片机,蓝牙 BLE 软件平台支持两种不同的应用开发配置。 协议栈工作流程如图 所示: 图 协议栈工作流程 第 14 页 操作系统抽象层 OSAL OSAL(操作系统抽象层)是类似于一个系统的抽象层,但它不是一个真正意义上的操作系统。 OSAL 常用术语: 在本次设计任务中,为了方便我本次设计,需要了解到一些关于 OSAL 的常用术语,如资源、共享资源和任务等。 任务 是 OSAL 的一个重要术语,在设计任务时,我们需要将一个大的任务分成许多个小的任务,再把这些小任务通过相关的技术要求组织起来,这些独立小任务的完成,也有一定的优先级,同时它们一般都拥有自己的寄存器和堆栈空间。 在设计时,我们常常使用到内核,借助内核可以使得程序的设计方法大大简化,并且能够使得一个任务通过不同的小任务表现出来且得到我们的要求实现。 保护共享资源最常用的方法是: ; ; ;。 其中,在蓝牙 BLE 协议栈内嵌操作系统中,关中断是 我们经常采用的方法。 在蓝牙 BLE 协议栈中, OSAL 主要提供以下功能: 、初始化和启动; 、互斥; ; ;。 在新推出的蓝牙 BLE 协议栈中,其中有三个变量值得一提: tasksCnt:该变量保存了任务的总个数。 该变量的声明为: uint8 taskCnt。 其中 uint8 的定义为: typedef unsigned char uint8。 taskEvents:这是一个指针; 该变量的声明为: uint16 *taskEvents。 其中 uint16 的定义为: typedef unsigned short uint16。 taskArr:这是一个数组; 该数组的声明为: pTaskEventHandlerFn taskArr[].这是一个函数指针,指向了对应的事件处理函数。 第 15 页 硬件抽象层 HAL 硬件抽象层( HAL)是一层提供硬件服务而又不涉及太多硬件细节的,是为应用程序提供访问 GPIO、 UART、 ADC 等硬件的接口。 硬件抽象层文件目录如图 所示: 图 HAL 文件目录 HAL Include 文件夹包含 HAL 驱动及 HAL 相关文件的头文件,如图 所示: 图 Include 文件下头文件 HAL Target 文件夹下的 Drivers 包含所有 HAL 驱动的“ .c”文件。 配置文件层介绍 蓝牙 BLE 协议栈的配置文件层包括 GAP 角色 /安全配置文件、 GATT 配置文件两部分。 第 16 页 ( 1)通用访问配置文件( GAP): BLE 协议栈中的 GAP 层负责处理设备访问模式和程序,包括设备发现、建立连接、终止连接、初始化安全特色和设备配置。 GAP 层总是作为下面四种角色之一: 广播者 — 不可连接的广播设备; 观测者 — 扫描广播,但不发起建立连接; 外部设备 — 可连接的广告设备,可以在单个链路层连接中作为从机; 集中器 — 扫描广告设备并发起连接,在单链路层或多链路层作为主机,目前,BLE 协议栈支持一个集中器连接三个外设。 在蓝牙系统典型的低功耗设计系统中,通过外部设备的广告特定数据使得集中器来辨别它是否是一个可以通过相关连接的设备。 这些广告设备的内容有很多种,比如说设备的地址以及一些相关的额外数据和一些设备名称。 当这些设备使得集中器收到数据广告后,然后在通过相应的外部设备发送用户指定的扫描 请求,经过一些简单的处理,通过外部的一些设备将一些系统特定的数据反馈回给集中器,这一阶段我们称之为扫描回应。 当它收到这一阶段的扫描回应后,通过系统判断便知道它是一个可以连接的外部设备,这一过程我们称之为设备的发现过程。 再之后,系统就向外发送建立连接设备的请求。 从机延迟 — 这个参数的设置可以使从机(外部设备)跳过若干连接事件,这给了外设更多的灵活度,如果它没有数据发送时,可以选择跳过连接事件继续休眠,以节省功耗。 管理超时 — 这是两个连接成功的事件之间允许的最大间隔。 如果两个设备之间的链接超过了这个时间但是却没 有链接成功,则设备被认为是丢失连接,返回到未被连接的状态。 这个值的单位是 10ms,管理超时的范围是 10( 100ms) ~3200( 32ms)。 另外,超时值必须大于有效的连接间隔 [有效的连接间隔 =连接间隔 *( 1+从机延迟) ]。 外设可以通过向集中器发送“连接参数更新请求”来改变连接设置,这个请求由协议栈的 L2CAP 层来处理。 这个请求包含 4 个参数:最小连接间隔、最大连接间隔、从机延迟、超时。 这些值代表了外设所要求的连接参数。 当集中器收到请求后,可以选择接受或拒绝这些新的参数。 连接可以被主机或从机以任何原因自动终 止。 当一方发起终止连接时,另一方必须响应。 然后两个设备才能退出连接设备。 ( 2)通用属性配置文件( GATT) 主机既可以是 GATT 客户端也可以是 GATT 服务器;从机既可以是 GATT 客户端也可以是 GATT服务器。 在蓝牙 BLE协议栈中的 SimpleBLEPeripheral应用中, 第 17 页 有三个 GATT 服务。 GATT 定义了在 BLE 连接中发现、读取和写入属性的子过程。 属性表是一个数据库,包含了称为属性的小块数据,除了值本身,每个属性都包含下列属性: 句柄 — 属性在表中的地址,每个属性有唯一的句柄; 类型 — 表示数 据代表的事务,通常是蓝牙技术联盟规定或由用户自定义的UUID( Universally Unique Identifier); 权限 — 规定了 GATT 客户端设备对属性的访问权限,包括是否能访问和怎样访问。 GATT 定义了若干在 GATT 服务器和客户端之间的通信的子过程。 下面是一些子过程: 读特性值 — 客户端设备请求读取句柄处的特性值,服务器将此值回应给客户端(假定属性有读权限)。 使用特性的 UUID 读 — 客户端请求读基于一个特定类型的所有的特性值,服务器将所有与指定类型匹配的特性的句柄和值回应给客户端设备(假设属性 有读权限)。 读多个特性值 — 客户端一次请求中读取几个句柄的特征值,服务器将这些特征值回应给客户端(假设属性有读权限)。 客户端需要知道如何解析这些不同的特性值的数据。 设计所用工具 IAR IAR Embedded Wordbench(又称 EM)的 C 交叉编译器是一款完整、稳定且容易使用的专业嵌入式应用开发工具, IAR 对不同的微处理器提供统一的用户界面,目前可以支持至少 35 种的 8 位、 16 位、 32 位的 MCU。 其特点如下: C 语言。 ,使用的 IAR 版本是。 蓝牙 协议栈 BLE 协议栈需要自己先在电脑上安装, BLE 协议栈里面存放的是 BLE 协议栈的源代码, TI 公司将会陆续退出协议栈新版本,但是为了配合 IAR 的版本,所以这次的设计采用的是 版本的 BLE 协议栈。 协议栈文件夹下有以下几个目录: 第 18 页 Accessories—— \Accessories\Drivers 里面存放的是烧写了 HostTestRelease 程序的 CC2540 USBDongle 的 USB 转串口驱动的程序,有的时候 USBDongle 插到电脑上没有被识别成串口号,这里就要注意 USBDongle 出厂时烧写的是 PacketSniffer的固件,是协议分析仪,叧外当 USBDdongle 烧写了 HostTestRelease 程序时才会表现为一个串口,此时 USBDongle 的驱动程序就在 Drivers 目录下。 目录 \Accessories\HexFiles 里面存放的是 TI 开发板上预先编译好的 hex 文件。 目录 \Accessories\BTool 里存放的是 BTOOL 的 安装文件,不过不需要手动安装,因为刚才安装协议栈的时候已经安装 BTOOL。 Components—— 目录 Components 存放的协议栈组件是最终需要的,包括底层的 BLE 和开发板硬件层 HAL,还有类似操作系统的 OSAL。 Documents—— 目录 Document 下存放的是 TI公司提供的有关于协议栈和协议栈 demo 的相关介绍和开发文档,因为该目录下的文件非常重要,虽然全部是英文,也是需要查看的: 《 》协议栈 demo 操作指南,协议栈 里所有 demo 的说明都在这里。 《 TI_BLE_Software_Developer39。 》 BLE 协议栈指南,介绍 BLE 和 TI的 BLE 协议栈。 《 》 BLE API 文档,协议栈里调用的 API 函数还有调用时序,都是在这个文档当中的。 Projects\ble—— 目录 Projects\ble,是最后一个也是最重要的一个目录,基于协议栈的所有 demo 工程都在这里。 所有的协议栈 demo 都要放到 Projects/ble 这个目录下编译并且运行,因为 IAR程配置中使用的是相对路径,一旦 IAR 工程位置和整个协议栈源码的相对位置发生变化,就无法找到 ble 的其他组件,编译时会产生大量的无法找到文件的错误,所有程序必须要放到这里来编译。 BTool BTool 是一款 TI 公司出品的,与 CC2540 开发配套的 PC 端应用程序,通过使用主机控制接口( HCI)命令的方式与蓝牙 BLE 外设通信。 Btool 允许用户使用基本的 BLE 集中器设备功能,例如发现蓝牙外设或广播设备、建立与外设的连接、进行 GATT 应用数据的读写操作、绑定服务等。 因此,可以在 PC 端使用 Btool工具来进行蓝牙外设应用程序的开发调试。 Flash Programmer 第 19 页 Flash Programmer 也是一款 TI 的官方软件,与 SmartRF04EB 配合使用,向 EM开发板烧写 HEX 文件。 HostTestRelease 主机编程 主机端由 CC2540 USBDongle、 PC 和 TI 官方的上位机软件 BTool 共同构成,也可以使用串口助手等串口调试软件代替 BTool。 要向 CC2540 USBDongle 中烧写 HostTestRelease 程序才能实现其作为主机的功能。 USBDongle 是 USB 口的,通过内部软件模拟成串口,实现串口通信。 打开 SimpleBLEPeripheral 从机工程。 Projects\ble\HostTestApp\CC2540\ 进入 主体源文件。 HostTestRelease 网络处理器工程结构和一般的协议栈 demo。基于cc2540的照明控制系统设计毕业设计(编辑修改稿)
相关推荐
[5]。 图像分割的目的是把图像的这些有意义的区域提取出来。 这些 “ 有意义的 ” 内涵随着解决问题的不同而不同,比如在 本课题 中 即是焊道的边缘。 现有的图像分割方法主要分以下几类 [6 ]: ( 1)基于阈值的分割方法 灰度阈值分割法 [7]是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。 阈值分割方法实际上是输入图像 f到输出图像 g 的 变换 如式 : g(i,j) =
在图书仓库和中药仓库中,对温度也有类似的要求, 所以本设计的应用对 于这种 需要 十分有效的温度调节的环境有 广阔的市场前景。 又 如在医院的病房中, 病人的心率、血压、输液剩余量 等信息都是需要被医生或护士在第一时间 得知的信息。 而传统的 传感器模块加有线传输的方式在医院病房这种人员较多,且人员流动频繁的场所来说 ,显得很不方便也很不实用,消耗也十分大。 而本设计 所提出的 ,基于
应答式定位方法在水声定位系统中广泛采用,例如:如海洋油气开发、深海矿藏资源调查、海底光缆管线调查与维护等,需要声学定位系统 (Acoustic Positioning system)对水下拖体进行导航定位,如水下遥控机器人 ROV (Remotely Operated vehicle)、水下无人机器人UUV(Unmanned Underwater Vehicles)等。 类 GPS
14DVDD40DVDD43DVDD50DGND23DGND24DGND32DGND41DGND49DVDD60R E S E T59P R O _ E25P R O G _ N58P 0 .0 / S C K33P 0 .1 / M O S I34P 0 .2 / M I S O51P 0 .352P 1 .026P 1 .135P 1 .236P 1 .337P 1 .438P 1
,当 PDIUSBD12 从 USB 收到一个数据包那么就对 MCU 产生一个中断请求 ,MCU 立即响应中断 ,在 ISR 中固件将数据包从PDIUSBD12 内部缓冲区移到数据缓冲区 ,并在随后清零 PDIUSBD12 的内部缓冲区 ,以使能接收新的数据包。 MCU 可以继续它当前的前台任务 ,返回到主循环检查循环缓冲区内是否有新 的数据。 图 为 PDIUSBD13 固件编程结构图。 图
DP 压力传感器把压力转换成对应的毫伏电压信号,再经放大电路放大后,经 TLC0832 分时采集送单片机 89C52,单片机处理后送显示,通过 定时 中断把采样的压力数字信号经 CAN 总线 送 到上位机上 实时 显示。 在 2 个 下位机传感器 节点上,单片机 89C52都接看门狗 复位电路 、 键盘和数码管等附属 电路。 看门狗 X5045 监视单片机的正常运行, 数码管用于显示相应的值