了解更多常见问题解答教程

14个职位/0个新职位
最后一篇
邓昌永
离线
最后一次露面:2周4天前
加入:2020-02-10 02:23
可移动地址

嗨,

我有一个蓝牙问题,想咨询你。如何确保蓝牙地址的唯一性,同一程序被刻录到不同的芯片中,如何确保蓝牙地址不同?

设备:
PM_DIALOG.
离线
最后一次露面:2天9小时前
员工
加入:2018-02-08 11:03
你好,

你好,

您使用的是什么样的BD地址?它是静态吗?您能否分享更多的输入?

谢谢,PM_DIALOG.

邓昌永
离线
最后一次露面:2周4天前
加入:2020-02-10 02:23
嗨,

嗨,

我在谈论蓝牙MAC地址。我在谈论什么是蓝牙MAC地址。问题是下载相同的程序将具有相同的蓝牙MAC地址

PM_DIALOG.
离线
最后一次露面:2天9小时前
员工
加入:2018-02-08 11:03
你好,

你好,

设备正在公布的BD地址是什么?如果您不使用随机BD地址,设备将用应用程序代码中设置的BD地址播发。你能为你所取得的成就分享更多的意见吗?BD地址的类型是什么?

谢谢,PM_DIALOG.

邓昌永
离线
最后一次露面:2周4天前
加入:2020-02-10 02:23
嗨,

嗨,

是的,它是广告BD地址。在一个随机蓝牙地址保证每个BD地址都有不同?如何使用随机蓝牙地址,请指导我。

PM_DIALOG.
离线
最后一次露面:2天9小时前
员工
加入:2018-02-08 11:03
你好,

你好,

为了用静态随机BD地址进行宣传,您应该将user_add_src结构的.addr_src属性更改为gapm_gen_static_rnd_addr。此结构位于User_Config.h文件下。请查看app_easy_gap_undircated_advertise_start_create_msg()函数,为可连接的无向事件创建广告消息。如果user_adv_conf.addr_src配置为Gapm_gen_static_rnd_addr,则将触发生成_static_random_address(),它会生成48位静态随机地址。

谢谢,PM_DIALOG.

邓昌永
离线
最后一次露面:2周4天前
加入:2020-02-10 02:23
嗨,

嗨,

我找不到app\u easy\u gap\u undirected\u advertized\u start\u create\u msg()函数?请说明该功能的位置。

PM_DIALOG.
离线
最后一次露面:2天9小时前
员工
加入:2018-02-08 11:03
你好,

你好,

它是低于5.0.4 \ sdk \ app_modules \ src \ app_common \ app.c sdk路径。您使用的是哪个SDK版本?您已标记DA14580产品,因此推荐SDK为5.0.4版。

谢谢,PM_DIALOG.

邓昌永
离线
最后一次露面:2周4天前
加入:2020-02-10 02:23
嗨,您好,

嗨,您好,

对不起,我标记的产品和SDK是错误的,我使用DA14695,并使用最新的SDK版本

PM_DIALOG.
离线
最后一次露面:2天9小时前
员工
加入:2018-02-08 11:03
你好,

你好,

默认情况下,该设备启动静态公共BD地址的广告。公共地址的默认值在SDK / BLE / CONFIG / BLE_CONFIG.H文件中声明。如果需要确定新值,则新的宏定义应在Config / Custom_config_xxx.h文件中进行,其中应声明所有自定义定义。例如 :

#定义默认的静态地址{0x01,0x02,0x03,0x04,0x05,0x06}

如果设置随机BD地址,则应执行以下操作:

/ *初始化与BD地址相关的BLE结构* / static const ove_address_t user_bd_address = {.addr_type = private_random_nonresolvable_address,.addr = {0x01,0x02,0x03,0x04,0x05,0x06}};/ *设置蓝牙地址* / ble_gap_address_set(&user_bd_address,0x00ff);

.addr将被忽略。

谢谢,PM_DIALOG.

邓昌永
离线
最后一次露面:2周4天前
加入:2020-02-10 02:23
嗨,您好,

嗨,您好,

如果您遵循您的示例,那么在大规模生产中,每个产品的蓝牙MAC地址将是相同的。这绝对不起作用,有更好的方法吗?

Aectaan.
离线
最后一次露面:4天11小时前
加入:2019-10-02 07:06

不,它对于每个设备都是唯一的,并且设备的BD地址至少每150秒改变一次。但是如果您将地址类型设置为PRIVATE\u RANDOM\u NONRESOLVABLE\u address,正如PM\u Dialog所说,您将无法连接。不可解析地址用于信标或不可连接的设备。

我以这种方式设置了我的唯一地址:

static const own\u address\u t own\u addr={.addr\u type=PRIVATE\u RANDOM\u RESOLVABLE\u address,};err=ble\u gap\u address\u set(&own\u addr,defaultBLE\u address\u RENEW DURATION);

您可以更改地址续订期间。

不幸的是,在生产中没有像nRF52 mcu那样的私有静态BD地址。

邓昌永
离线
最后一次露面:2周4天前
加入:2020-02-10 02:23
嗨,您好,

嗨,您好,

我使用ble_gap_address_set(&user_bd_address,0x00ff)来设置BD地址。为什么可以通过Android手机扫描此设备,但不是由Apple手机扫描?我的数据如下:

/ *初始化与BD地址相关的BLE结构* /
静态自身\u地址\u t用户\u bd \u地址={
.ddr_type = private_static_address,
.addr={0x01、0x02、0x03、0x04、0x05、0x06}
};

PM_DIALOG.
离线
最后一次露面:2天9小时前
员工
加入:2018-02-08 11:03
你好,

你好,

让我解释一下在我们的SDK中如何处理BD地址。当设备引导时,BLE适配器将访问NVMS\u PARAM\u PART分区,并检查是否在该分区中放置了有效的BD地址。该分区的第一个条目是NVPARAM\u BLE\u PATFORM\u BD\u ADDRESS,长度为7字节:

- BD地址的6个字节

-1字节,指定写入的BD地址的有效性。

您还可以使用SmartSnippets Toolbox来读取NVMS_PARAM_PART。

如果用户在该分区中没有写入任何BD地址,或者如果标志无效(禁用),则应用程序将采用默认的公共BD地址。请在BLE适配器(AD_BLE.C文件)中查看READ_PUBLIC_ADDRESS()函数。

如果开发人员没有提供设备地址,则使用蓝牙公共地址。public address的默认值在sdk/ble/config/ble\u config.h文件中声明。如果需要定义一个新的值,那么新的宏定义应该发生在config/custom\u config\u xxx.h文件中,所有自定义定义都应该在该文件中声明。

update_bd_address()函数旨在基于Trng(真式随机数生成器)引擎生成BD地址,并通过调用BLE_GAP_ADDRESS_SET()来设置它。然后,将将先前生成的地址写入NVMS_PARAM_PART。因此,在发生冷启动(重置)后,设备将使用闪光灯中写入的BD地址。请在附件中找到源代码。您还将找到验证的代码片段。

通常,配置BD地址有三种(3)种方法:

1.定义唯一的公共地址。因此,youdwle_static_address宏应在custom_config_xxxx.h中定义

2在NVMS\u PARAM\u PART flash分区中写入一个BD地址。SDK将覆盖defaultBLE\u STATIC\u address宏定义中定义的公共地址。

3.通过调用BLE_GAP_ADDRESS_SET()API来定义唯一的BD地址。可以随时调用此API以更改设备的BD地址。

谢谢,PM_DIALOG.