前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bes2500芯片BLE通信调试及总结

bes2500芯片BLE通信调试及总结

原创
作者头像
番茄老夫子
修改2023-11-30 09:12:08
1790
修改2023-11-30 09:12:08
举报

一 前记

恒玄的芯片是没文档的。BES2500芯片有着资源大,代码乱等特点。最近用到了这里的BLE部分。又折腾了一把,伤筋动骨啊。不过,总算是搞定了。这里是要做个总结吧。

二 源码解析

关于ble广播:

代码语言:txt
复制
    app_ble_custom_adv_write_data(BLE_ADV_ACTIVITY_USER_1,
                            true,
                            BLE_ADV_PUBLIC_STATIC,
                            (uint8_t *)adv_addr_set2,
                            NULL,
                            80,
                            ADV_TYPE_EXT_CON_DIRECT,
                            ADV_MODE_LEGACY,
                            -5,
                            (uint8_t *)APP_DEMO_DATA1, APP_DEMO_DATA1_LEN,
                            NULL, 0);
    app_ble_custom_adv_start(BLE_ADV_ACTIVITY_USER_1);

这里可以让ble能搜到的,这里面有不少看点:

重心是两个玩意,一个是广播类型:ADV_TYPE_EXT_CON_DIRECT

这个是可以搜到的关键,这个宏定义要深入理解一下:

代码语言:javascript
复制
/* Advertise Types                                  */
/* ************************************************ */
typedef enum app_ble_adv_type
{
    /// Connectable and scannable undirected advertising
    ADV_TYPE_UNDIRECT = 0,
    /// Directed connectable with Low Duty Cycle
    ADV_TYPE_DIRECT_LDC,
    /// Directed connectable with High Duty Cycle
    ADV_TYPE_DIRECT_HDC,
    /// Non-connectable but Scannable undirected advertising
    ADV_TYPE_NON_CONN_SCAN,
    /// Non-connectable and nonscannable undirected
    ADV_TYPE_NON_CONN_NON_SCAN,
    /// Undirected connectable but scannable with extended ADV
    ADV_TYPE_CONN_EXT_ADV,
    /// Directed connectable no scannable with extended ADV
    ADV_TYPE_EXT_CON_DIRECT,
    /// Type MAx Number
    ADV_TYPE_MAX,
} BLE_ADV_TYPE_E;

还有就是数据信息:

#define APP_DEMO_DATA1 "\x02\x01\x06\x03\x18\x04\xFE"

#define APP_DEMO_DATA1_LEN (7)

这个到底啥意思呢?

请看说明:

标志域 02 01 06 为 广播数据类型

02:此域长度为2个字节

  01: 为标志域

06:BIT1,BIT2 = 1, 根据以下定义,所以为:

   * LE General Discoverable Mode

03 03 02 18 为服务标识域

03:此域长度为2个字节

  03: 为服务标识域

02 18:=》18 02 => Immediate Alert Service (防丢报警服务)

这里面这样就清楚了。

三 问题梳理

1 源码要深入理解。

这里涉及到的不同产品,都揉在一起了。导致代码量庞大。多分析源码和看流程,才是进步的关键。

2 编译宏的问题。这里面最大的问题是编译宏没搞对。不同的产品需要不同的宏,这里要深入的分析了。没文档,要自己摸索的。

四 总结备忘

1 作为一个软件工程师,能从纷杂的代码中找出来问题,是需要日积月累的。多看代码,多调试才是关键。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档