在泰凌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多协议无线连接系统级芯片和丰富的固件协议栈。公司产品广泛应用于智能照明,智能家居/楼宇,智能遥控,无线外设,智能零售,穿戴设备,无线音频,智能玩具,物流追踪,智慧城市等各类消费和商业应用场景中。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !