SDK中的B85m_module例程的使用及注意事项

描述

 

在泰凌Wiki网站上提供了多种应用场景的软件sdk,供客户选择使用。本系列的几篇文章主要讲述"Bluetooth LE Single Connection",此SDK是单连接应用的SDK,所谓的单连接就是蓝牙芯片做从机跟主机(一般是手机)建立点对点连接,或者蓝牙芯片做主机跟其他的从机建立点对点连接的应用场景。

本篇文章详细讲述此SDK中的B85m_module例程的使用及注意事项,以便客户尽快的熟悉起来,加快项目开发进度。

1module例程说明

单连接sdk中B85m_module是使用825x芯片和827x芯片,所以编译选项中又分为了825x_module和827x_module。module例程提供了基于BLE的数据透传功能,使得用户不必关心BLE复杂的实现细节,只需要处理传输业务数据即可。数据透传的指令是泰凌自己实现的一套指令集,如果用户更习惯使用AT指令,可以将例程中的指令做替换即可。

2module例程编译问题及解决方法

如果开发者直接编译825x_module或者827x_module(下文统称B85m_module),会出现下文的编译错误。

蓝牙芯片

原因是B85m_module例程实现较复杂,需要使用32K retention的配置来编译,而sdk默认是选择的16K retention的配置。

解决方法:修改retention的配置可以参考Handbook的1.3章节的Software bootloader介绍,使用32K的boot.link文件和cstartup_*_32K.S启动文件。

3硬件连接图

蓝牙芯片

说明:下文以8258芯片为例,来描述B85m_module例程的使用。

在8258开发板上烧录编译成功的825x_module.bin固件,代码中默认的UART tx是PB1, uart rx是PB0。然后根据硬件连接图搭建好环境。

*注意:芯片的uart tx接串口工具的uart rx,芯片的uart rx接串口的工具uart tx,不要接错了。

PC端打开串口工具软件,波特率设置为115200,data bit为8,无校验,stop位为1。

手机端的app使用LightBlue软件,然后扫描到"kModule"的蓝牙设备,然后建立连接。

如果连接时,弹出配对请求,则选择配对。是因为默认使能了smp配对功能。如果不需要这个功能,则把app_config.h文件的 BLE_SECURITY_ENABLE宏定义设置为0,再clean后重新编译生成固件。

4数据透传

当手机app和B85m_module建立蓝牙连接之后,可以看到module例程的Telink SPP透传服务,根据描述符的提示,分成数据接收和数据发送两个方向:

蓝牙芯片

4.1数据接收

数据接收(Phone->Module)即手机app发送数据给蓝牙芯片,然后蓝牙芯片通过uart打印出来,最后在PC端的串口工具软件上显示。

1、蓝牙event事件输出

当在nrf connect软件上点击连接或者断开时,串口工具上会显示出蓝牙连接事件(hex数据 FF 02 83 07)和蓝牙断开事件(hex数据 FF 02 84 07),如下图所示。

蓝牙芯片

*备注:FF 02 8D 07是map channel更换的event事件。

2、手机发送hex数据 00 11 22 33 44 55 66

在LightBlue软件上,数据透传使用的服务,UUID是0x000102030405060708090a0b0c0d2b11(注意跟代码中的UUID是反序的),点击红色方框处输入发送的数据。

蓝牙芯片

如下图所示,PC端的串口工具软件已经显示了接收到的数据。注意接收到的数据有格式,前7bytes是数据的header。

蓝牙芯片

4.2数据发送

数据发送(Module -> Phone)即PC端串口工具软件发送数据给蓝牙芯片,然后蓝牙芯片通过BLE发送给手机,最后在LightBlue软件上显示。

(1)手机app端使能notify权限

蓝牙芯片上报数据给手机app,是使用notify方式,手机端必须先使能notify权限,手机端才会监听到蓝牙芯片上报的数据,否则手机app不会接收的。

在LightBlue软件上点击Listen,当软件界面显示Stop Listening时,表示正在listening,已经使能了notify权限。

(2)蓝牙芯片端使能唤醒脚

在B85m_module程序中,默认使能了低功耗,也就是蓝牙芯片会自动进入低功耗模式,并定时唤醒保持蓝牙连接的心跳,因此大部分时间是处于低功耗模式。在低功耗模式下,芯片的UART是无法接收数据的,必须先使用GPIO唤醒芯片,让芯片处于active模式,uart才能接收数据。

代码中默认设置为PA2为高电平唤醒脚。手动把芯片的PA2 pin拉高,接到3.3V上。就可以把蓝牙芯片唤醒并禁止进入低功耗。在app_config.h文件中对应的宏定义:

#define GPIO_WAKEUP_MODULE      GPIO_PA2

(3)数据发送

在串口工具中,输入hex数据:1c ff 16 00 11 00 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 07 08 09 00,然后点击send发送。

数据输入的格式说明,都是hex格式的数据:

1C FF:表示data send命令

16 00:表示数据长度,handle值(2bytes)+ data Length(20bytes)

11 00:数据发送使用的handle值为0x0011,小端字节序原因。

01 02 …00:实际需要发送的数据。

注意数据发送的长度在20字节以内,如果要发送更长的数据,可以查看Handbook中的MTU和DLE功能,使能长包后再发送长包数据。

蓝牙芯片

在手机LightBlue软件上,可以看到收到的数据,如下图所示。

蓝牙芯片

 

关 于 泰 凌

泰凌微电子致力于为客户提供一站式的低功耗高性能无线连接SoC芯片解决方案,包括经典蓝牙,蓝牙低功耗,蓝牙Mesh,Zigbee,Thread,Matter,Apple HomeKit,Apple“查找(Find My)”,和私有协议等低功耗2.4GHz多协议无线连接系统级芯片和丰富的固件协议栈。公司产品广泛应用于智能照明,智能家居/楼宇,智能遥控,无线外设,智能零售,穿戴设备,无线音频,智能玩具,物流追踪,智慧城市等各类消费和商业应用场景中。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分