simple_peripheral 应用框架

本章节将详细讲解 CC2640R2F BLE5.0 的应用程序框架,我们希望您已经按照学习线路图储备了 CC2640R2F平台的软硬件架构知识 ,明白应用工程区分 App 和 Stack 工程管理。本章主要内容是围绕基于 TI-RTOS 的 App 应用程序框架。

图1. 应用程序框架图

以 simple_peripheral Demo 应用程序部分为例,包括以下内容:

  • Pre-main initialization
  • ICall
  • Simple Peripheral Task
  • Intertask Messages

main 函数包含在 IDE Startup 文件夹的资源文件 main.c 中。作为程序的入口,主要完成全局中断禁止、外设驱动初始化、电源管理、TI-RTOS 任务创建或构造、在启用 SYS / BIOS 内核调度时完成全局中断使能。main 函数不返回,将在整个项目生命周期内保留其资源。

基本 main.c 功能。

软件架构章节阐述了由于历史兼容原因会把整个应用工程区分 App 和 Stack 两个工程管理。因此,无法采用常规 API 调用和全局变量方式完成消息传递,App 和 Stack 之间的通信就需要重新考虑了。TI 引入了 ICALL 消息机制完成 App 和 Stack 独立工程管理的相互通信,接下来就着重理解原理和代码实现。

Indirect Call Framework (

ble5.0 蓝牙协议概述

从这部分开始详细介绍蓝牙协议栈功能、接口、协议栈工程关联、实现协议栈的文件和任务,该任务也作为协议栈应用的最高优先级任务。TI 采用库文件的方式作为协议栈的一个主策略,尽管如此,还是需要开发者了解协议栈各个抽象的功能和相互作用。

蓝牙 5.0 核心规范包含 LE 和 BR/EDR 两种设备类型,其中 LE 主要是设计为低功耗、小数据终端产品。BLE5.0 核心主要包含以下功能:

  • 2M Sym/s PLY 层设计(2M Symbol Rate 物理层)。
  • LE 信道选择算法 #2
  • LE 安全连接
  • LE 数据长度扩展
  • LE 隐私
  • LE LCAP 面向连接的信道支持
  • LE 链路层拓扑结构
  • LE Ping
  • 从机功能扩展
  • 连接参数请求

以上功能均在蓝牙 5.0 协议栈实现,并且可以选择编译。

如图 1 ,蓝牙协议栈包含一个 Host 和 Controller 两个逻辑实体。这种区分从经典蓝牙的 BR/EDR 就存在了,各种功能独立实现,任务配置文件和应用相关都在 Host 的 GAP、GATT 抽象层。

图1. 协议栈基础

BLE 工作在无需认证的 2.4G 免费频段,该频段广泛应用于 ISM(工业、科学、医疗)领域。BLE 通过跳频通信实现抗干扰特性,是 GFSK 调制信号,它采用 1Mbps 码元率 PHY 层设计,可以实现 1Mbps 波特率通信。BLE5.0 优化的物理层设计可以实现 2Mbps 的 PHY 层。

stm32cube programmer

官方产品介绍页面

初次使用ST-Link需要安装驱动, 如果已经安装过Keil或者STM32CubeProgrammer 会自动安装驱动。打开设备设备管理器(Win+R 键入devmgmt.msc)确定。

如果显示未知设备,需要手动安装驱动。驱动路径在C:\Keil_v5\ARM\STLink\USBDriver C:\Program Files (x86)\STMicroelectronics\STM32Cube\STM32CubeProgrammer\Drivers\stsw-link009_v3。

按照以下接口依次一一对应仿真器连接。

直接在ST 官网下载 Flash 烧写工具 STM32CubeProgrammer 安装,需要Java 环境,如果未安装,会自动跳转到下载页面提示安装。

  • 双击打开软件,提示Not connected 点击 Connect(确认已经正常连接仿真器和IC)

    成功连接设备后提示Conneceted.

  • 按照以下步骤依次点击,勾选。

    1、选择 Erasing &programming 按钮;

    2、点击Browse 找到我们需要烧写的固件(通常为* .bin、*.hex、*.axf);

    3、勾选Verify progrmming(可选);

    4、Full chip erase(全部擦出一次,可选);

    5、Start Programming (开始编程);

    6、弹出和LO...

STM32CubeMx

STM32CubeMx 是一个STM32的图形化配置工具,可以作为STMCube 工具独立使用,也可以作为Eclipse的插件。主要包含以下主要工功能:

  • 覆盖所有STM32的选型;
  • 所有ST官方开发板选择;
  • 快速配置(引脚、时钟、外设、和中间件软件)以及产生相应的C代码;
  • 通过先前的配置快速切换选型;
  • 轻松导出到兼容的配置到兼容MCU;
  • 产生配置报告;
  • 通过选择IDE生产对应工程代码;
  • 功耗计算;
  • File->New Project我们需要知道指定芯片具体型号和封装,例如我们这里的STM32F103RDT6 LQFP64。
  • Pinout
  • Clock Configuration设置时钟源
  • 设置低速时钟源(LSE LSI)LSE:The low speed external clock signal LSI:The low speed internal clock signal 从图我们可以看出,低速时钟源主要为RTC和独立看门狗提供时钟系统。其中RTC时钟源可以选择HSE_RTC 也就是HSE高速外部时钟128分频和来自外部低速时钟LSE和内部RC振荡器LSI RC。
  1. 设置高速时钟源(HSE、HSI)HSE:The high speed external clock signal HSI:The high speed internal clock signal 其中HSE可以选择外部高速晶振和外部高速时...

关于ble 5.0的几个常见问答

本文汇集了关于蓝牙 5.0 几个常见问题的答案,以帮助开发人员更好地了解蓝牙 5.0 的一些新特性。

  1. 蓝牙 5.0 向后兼容现有的蓝牙 4.x 设备吗?

对于蓝牙 4.1 、4.2 和 5.0 中添加的所有功能,它们在 BLE 连接期间都是可以协商选择的。这一点确保了蓝牙 5.0 设备能够可靠地连接到旧版蓝牙 4.x 设备,并与其进行交互。除了向后兼容性之外,蓝牙 4.1 和 4.2 中的可选功能适用于蓝牙 5.0 .因此,除了 2 Mbps 功能之外,蓝牙 5.0 设备还可支持蓝牙 4.2 的数据长度扩展功能。TI BLE5-Stack 结合了蓝牙 4.1 和 4.2 协议栈现有的所有功能,包括增强的隐私性和安全连接配对。

  1. 如何在应用程序中启用蓝牙 5.0 高速模式?

您只需在应用程序中调用一个新的 API 来请求 BLE 连接使用 2 Mbps PHY 就可以了,这个 API 是:HCI_LE_SetDefaultPhyCmd()。调用该 API 会操作控制器(链路层)启动所谓的PHY更新过程。

如下图所示,该图显示了对等设备进行协商然后变更链路速度的步骤。如果连接中的两个设备都支持并且都想在 2 Mbps PHY 下传输数据,那么它们之间的连接会切换到 2Mbps 的链路速度,与默认的 1 Mbps 链路速度相比,速度会快一倍。如果对等设备不支持 2 Mbps 功能或者不希望启用,则...