打印
[AIROC™ 蓝牙]

【英飞凌CYW20829测评】高级1-蓝牙广播 与 自定义服务收发数据

[复制链接]
6497|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dvacos|  楼主 | 2024-7-8 14:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dvacos 于 2024-7-8 15:05 编辑

#申请原创#
高级任务第一步-蓝牙广播 与 自定义服务收发数据

一、广播名 与 扫描回复
下载并使用“Bluetooth_LE_Multi-peripheral”例程。


1、广播名
新上手一个平台,先看Main中与蓝牙相关的API。看看代码,熟悉一下平台。


阅读代码后,跳转到“app_bt_management_callback”发现是状态机,



在使能case下,找到了蓝牙初始化函数。话说这里为什么是bt,不是ble?



跳转到“app_bt_init”函数里,可以看见如上图,注释写着 设置广播数据的API。



跳转到cy_bt_adv_packet_data就可以发现广播名的数组了,在尝试过后发现修改广播名方法有2个。
方法1:
直接修改广播数据数组



下图是手机APP的截图,广播数据可以对应上。

虽然广播数据对的上了,但是还要实验、测试一下是不是找对地方了。


修改广播名为”ABC”,烧录。

下图是手机APP截图,可以确认我们找到的就是广播名。





修改广播名的第二种方法:
使用IDE工具,直接填写

①点击GAP Setting
②修改广播名
③保存后退出,即可修改广播名

烧录后也是使用第一种方法确认。


2、添加扫描回复
在“app_bt_init”中只打开了了广播内容,并没有打开扫描回复。所以要添加代码打开扫描回复 和 修改扫描回复的数据。


打开扫描回复
①添加扫描回复API

②将数量改为3



找到扫描回复内容



扫描回复的内容,可以和广播一样,但是我要验证是否打开扫描回复,所以修改为:



修改结果:





二、添加服务
1、添加服务与特征
再次回到“app_bt_init”函数中,找到添加服务的函数。





跳转后发现这个数组太复杂了,能看懂,但是修改太麻烦了(要打太多字了)。。。
并且 修改服务、添加 肯定与 修改广播内容 时同理有2种方法,分别是:1、手动修改 2、使用IDE内置工具生成。但是手动的太、太复杂了,所以只做使用工具生成的方式添加服务。



①添加服务



②添加特征,Write 和 Notify,Write用于接收APP下发数据,Notify用于发送数据给APP

保存后,编译烧录即可,应该长度是自动计算的,不用手动填写了。


下图是添加后的效果:




2、收发数据
添加服务后就是将接收的数据打印出来,先找到接收数据(即APP写数据)的地方:



阅读代码后,用handle 的值区分服务后接收数据,这个值也有生成出来



想要实现发送数据,就要找到notify发送数据的接口:

wiced_bt_gatt_server_send_notification
作用:以Notify的形式发送数据给APP


参数:
①连接的ID,即连接的设备顺序,第一个连接的设备就是0
②Handle,就是Handle,可以大致的理解为服务、特征的顺序
③数据长度
④数据
⑤暂时不理解,跟着填NULL


于是把接收数据 与 发送数据组合起来:



将自定义服务接收到的数据,转发回手机,实验的结果如下:

数据转发回手机了,不过回复太快了,APP显示顺序有问题。





使用特权

评论回复
沙发
IFXOcean| | 2024-7-10 12:58 | 只看该作者
很多同学会抱怨BLE广播数据量太小了, 只有31个字节,填充一个128bit UUID后,就几乎没什么空间了,即使加上scan response也不够用。
20829支持扩展广播,可以填充更多的广播数据了,一个扩展广播最长可以有254字节,如果一个广播不行,那就再来一个。

使用特权

评论回复
板凳
大鹏2365| | 2024-7-28 17:26 | 只看该作者
app_bt_init中只打开了了广播内容,没打开扫描回复。要添加代码打开扫描回复

使用特权

评论回复
地板
shenxiaolin| | 2024-7-29 22:01 | 只看该作者
感谢分享

使用特权

评论回复
5
yangjiaxu| | 2024-7-30 10:33 | 只看该作者
他这个固件也是开源的吗?就是API的协议的话是开源的吗,还是只能调用

使用特权

评论回复
评论
dvacos 2024-7-30 14:21 回复TA
什么固件啊? 
6
paigu1| | 2024-7-31 12:20 | 只看该作者
感谢分享,学习到了;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

102

帖子

1

粉丝