【安信可PB-01/02模组专题③】PB-01/02模组开发板应用-快速入门SDK二次开发

1 SDK目录结构

在这里插入图片描述

2 BLE基础知识

2.1 GAP通用访问配置文件

Ble 协议栈中的 GAP 层负责处理设备访问模式,包括设备发现、建立连接、终止连接、初始化安全管理和设备配置,所以在 ble 协议栈中有不少函数均是以 GAP 为前缀,这些函数会负责以上的内容。
GAP 层总是作为下面四个钟角色之一:

  • Broadcaster 广播者——不可以连接的一直在广播的设备;
  • Observer 观测者——可扫描广播设备,但不能发起建立连接的设备;
  • Peripheral 从机 ——可被连接的广播设备,可以在单个链路层连接中作从机。
  • Central 主机 ——可以扫描广播设备并发起连接,在单个链路层或多链路层中
    作为主机。
    在典型的蓝牙低功耗系统中,从机设备广播特定的数据,以便让主机知道他是一个可以连接的设备,广播内容包括设备地址以及一些额外的数据,如设备名、服务等。主机收到广播数据后,会向从机发送扫描请求 ScanRequest,然后从机将特定的数据回应给主机,称为扫描回应 ScanResponse。主机收到扫描回应后,便知道这是一个可以建立连接的外部设备,这就是设备发现的全过程。此时,主机可以向从机发起建立连接的请求,连接请求包括下面一些参数。
  • 连接间隔——在两个 BLE 设备的连接中使用调频机制,两个设备使用特定的信道收发数据,然后过一段时间后再使用新的信道。(链路层处理信道切换),两设备在信道切换后收发数据称之为连接事件,即使没有应用数据的收发,两个设备任然会通过交换链路层数据来维持连接,连接间隔就是两个连接事件之间的时间间隔,连接间隔以1.25ms 为单位,连接间隔的值为 6(7.5ms)~3200(4s)。
  • 从机延时——这个参数的设置可以使从机跳过若干连接事件,这给了从机更多的灵活度,如果它没有数据发送时,可以选择跳过连接时间继续休眠,以节省功耗。
  • 管理超时——这是两个成功连接事件之间的最大允许的间隔,如果超过了这个时间
    (这个值的单位是 10ms)而没有成功的连接事件,设备被认为丢失连接,返回到未
    连接状态,管理超时的范围是 100(100ms)~3200(32s)另外,超时值必须大于有效的连接间隔[有效的连接间隔=连接间隔*(1+从机延时)]。
  • 安全管理——只有已认证的连接中,特定的数据数据才能被读写,一旦连接建立,两个设备进行配对,当配对完成后,形成加密连接的密钥,在典型的应用中,外设请求集中器提供密钥来完成配对工作。密钥是一个固定的值,如 000000,也可以随机生成一个数据提供给使用者,当主机设备发送正确的密钥后,两设备交换安全密钥并加密认证链接。在许多情况下,同一对外设和主机会不时的连接和断开,ble 的安全机制中有一项特性,允许两个设备之间建立长久的安全密钥信息,这种特性称为绑定,他允许两设备连接时快速的完成加密认证,而不需要每次连接时执行配对的完整过程。

2.2 GATT(Generic Attribute Profile):通用属性配置文件

通用属性配置文件是在属性协议(ATT)基础上构建,为属性协议传输和存储数据简历了一些通用的操作和框架。

3 开发板和预编译样例

硬件可以使用以下两种开发板,即PB-01-KIT和PB-02-KIT开发板。在这里插入图片描述在这里插入图片描述
在SDK所在的目录中,example目录包含了示例项目,其中每个示例有一个 bin 目录,其中的hex文件为可执行的程序固件,初次使用本SDK的用户可以直接烧录该文件进行实验。

4 安装开发环境

拷贝 SDK 至工作目录。 
安装 MDK Keil5 for ARM 开发环境。 
通过 MDK 打开 SDK 目录中的样例的项目文件即可对项目进行编译调试等操作。

5 编译和运行demo

使用PlyPlusKit 工具擦除开发板已经烧录的固件,RST和PROG按键同时按下:
在这里插入图片描述
出现UART RX : cmd>>:信息,则表示进入了烧录模式,点击Erase,擦除成功如图:
在这里插入图片描述
从浏览器的 SDK 安装目录下的example\ble_peripheral选择一个样例,比如 bleUart-RawPass,打开MDK 项目文件。
在这里插入图片描述
使用KEIL软件编译,生成HEX文件。
在这里插入图片描述

6 调试和烧写

在MDK工具栏按钮,点击 Option for target 按钮 ,打开项目的 option 对话框。
在这里插入图片描述
在 C/C++标签页的 Preprocessor SymbolsDefine 里面,开发者可以改变对应的预编译宏:

  • CFG_SLEEP_MODE=PWR_MODE_SLEEP :使能低功耗模式,固件程序执行过程中, 会在空闲过程进入睡眠,睡眠之后调试器无法进行调试跟踪,断点也失效。
  • CFG_SLEEP_MODE=PWR_MOD_ENO_SLEEP :关闭低功耗模式,固件程序执行过 程中,处理器一直处于唤醒状态。
  • DEBUG_INFO=1:使能调试信息,默认通过串口输出:P9(Tx),P10(Rx)
  • DEBUG_INFO=0:关闭调试信息
    在这里插入图片描述
    如下图所示,烧录程序成功!
    在这里插入图片描述