【雅特力AT32WB415评测】5. 蓝牙低功耗版本(BLE)官方Demo测评
[复制链接]
接着上4篇评测报告:
(1)https://bbs.eeworld.com.cn/thread-1214040-1-1.html
(2)https://bbs.eeworld.com.cn/thread-1214570-1-1.html
(3)https://bbs.eeworld.com.cn/thread-1215784-1-1.html
(4)https://bbs.eeworld.com.cn/thread-1216799-1-1.html
在测评前先熟悉了蓝牙的一些专业术语,如:GAP、GATT等。
2022-9-8 11:02 上传
图42 广播与响应
图43 广播网络拓扑
2 GATT(Generic Attribute Profile)
GATT是一个在蓝牙连接上收发很短数据段的通用协议。目前,低功耗蓝牙连接都是建立在GATT协议之上,它定义了两个低功耗蓝牙设备使用服务(Service)和特征(Characteristic)来进行数据通信。GATT使用ATT协议(Attribute Protocol),ATT协议把Service、Characteristic,以及对应的数据保存在一个查找表中,表中每一条数据采用16 bit ID作为索引。
一旦两个设备之间建立专用连接,GATT即可发挥作用,这意味着已经完成了由GAP管理的广播流程(说明:GATT连接,必须先经过GAP)。
GATT连接需要特别注意:GATT连接是独占(exclusive)的,这就是说一个BLE外围设备一次只能连接到一个中心设备,一旦外围设备被连接,它就会马上停止广播,这样它就对其他设备不可见了。当外围设备断开连接时,它又开始广播。
中心设备和外围设备需要进行双向通信,唯一的方式就是建立GATT连接,GATT连接的网络拓扑如图44所示。
图44 GATT网络拓扑
从上图可以看出,一个外设只能连接一个中心设备,而一个中心设备可以连接多个外设,一旦建立连接,通信就是双向的。GAP通信是单向的,如果要实现两个外围设备的通信,则只能通过中心设备中转。
3 GATT Transactions(GATT通信事务)
GATT通信双方是C/S关系,外围设备作为 GATT 服务端(Server),它维持了 ATT 的查找表以及 service 和 characteristic 的定义。中心设备是 GATT 客户端(Client),它向 Server 发起请求。需要注意的是,所有的通信事件,都是由客户端(也叫主设备,Master)发起,并且接收服务端(也叫从设备,Slave)的响应。GATT通信事务如图45所示。
图45 GATT通信事务
一旦连接建立,外围设备将会给中心设备建议一个连接间隔(Connection Interval),这样,中心设备就会在每个连接间隔尝试去重新连接,检查是否有新的数据。但是,这个连接间隔只是一个建议,中心设备可能并不会严格按照这个间隔来执行,例如中心设备正在忙于连接其他的外围设备,或者中心设备资源不可用。
4 GATT结构
GATT事务是建立在嵌套的Profiles、Services和Characteristics之上的,如图46所示。
图46 GATT结构
(1)profile
profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT,防丢器,心率计等。每个profile包含多个service,每个service代表从机的一种能力。
(2)service
service可以理解为一个服务,在BLE从机中,通常有多个服务,如:电量信息服务、系统信息服务等,每个service包含一个或多个characteristic特征值。characteristic特征值才是BLE通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据。
(3)characteristic
BLE主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。
下载附件
保存到相册
2022-9-8 11:05 上传
图47 AT32WB415评估板蓝牙通信过程
6.3 AT32WB415评估板官方蓝牙代码评测
官方源码和入门指南:https://www.arterytek.com/cn/product/AT32WB415.jsp#Resource
根据官方应用笔记(BLE Application Note:AN0077),例程中已有GATT相关服务,如果要新增其他服务(自定义服务),需要6个文件。
(1)custom.c、custom_task.c放置…\sdk\ble_stack\com\profiles\custom\src文件夹下;
(2)custom.h、custom_task.h放置…\sdk\ble_stack\com\profiles\custom\api文件夹下;
(3)app_custom.c、app_custom.h放置…projects\ble_app_gatt\app文件夹下。
目前,还没有弄清为什么要放置在这些文件夹下面,先按照入门指南评测一下蓝牙,然后再深入研究,并移植到AT32 IDE下面。
用MDK打开官方提供的蓝牙Demo工程:
…\AN0077_AT32_BLE_Application_Note_V2.0.4\SourceCode\wb415_ble_demo_2.0.3\projects\ble_app_gatt下的MDK工程文件
,custom.c、custom_task.c位于工程
目录下,app_custom.c位于工程
目录下
。
编译后,在:
…\AN0077_AT32_BLE_Application_Note_V2.0.4\SourceCode\wb415_ble_demo_2.0.3\projects\ble_app_gatt\output\app目录下,可以看到编译后生成的*.bin文件。
继续用MDK打开MCU Demo,位于:
…\AN0077_AT32_BLE_Application_Note_V2.0.4\SourceCode\wb415_mcu_demo_2.0.3\wb415_mcu_demo_2.0.3\project\at_start_wb415\at_side\mdk_v5下的MDK工程文件
。
编译后,在:
…\AN0077_AT32_BLE_Application_Note_V2.0.4\SourceCode\wb415_mcu_demo_2.0.3\wb415_mcu_demo_2.0.3\project\at_start_wb415\at_side\mdk_v5\Objects目录下,可以看到编译后生成的*.hex文件
。
打开ArteryICPProgrammer。(1)添加蓝牙*.bin文件时,需要添加起始地址:00000000,如图48所示。
图48 添加起始地址
(2)添加MCU Demo *.hex文件,如图49所示。
图49 添加MCU Demo *.hex文件
点击
,完成固件下载
。
打开手机端LightBlue APP(需要提前安装)
,可以看到AT32WB415评估板,蓝牙名称:WB415-GATT
,点击
,连接蓝牙,可以看到WB415-GATT蓝牙信息如图50所示。
图50 WB415-GATT蓝牙信息
可以看到有些信息有Readable(可读)、Writable(可写)、Supports notifications/indications(支持通知/指示)
,打钩表示支持,打叉表示不支持。数据显示格式
。对于可读写的信息
,点击 、 按钮
,进行读写操作。
AT32WB415评估板上的USER Key
用于切换AT Command模式和透传模式,LED3指示灯
用于指示当前模式(亮:透传模式;灭:AT command模式)。
官方文档提示:AT Command模式和透传模式冲突,透传模式下自定义服务将无法使用。
通过串口调试助手打印信息,也可以显示是否进入透传模式,如图51所示。
图51 透传模式选择
透传模式下
,进入F002特征
,输入任意字符串
,点击
,可以看到串口调试助手显示输入的信息
。
透传模式下,进入F001特征
,点击
,可以看到显示的信息为
。在串口工具中输入
,点击发送,LightBlue APP端F001特征显示“WB415”
。
下一步,将对官方提供的蓝牙Demo的源码进行剖析。
雅特力AT32WB415开发板-评测报告-施连敏-20220806-0908.pdf
(4.12 MB, 下载次数: 1)
|