⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
14个员额/0个新员额
最后发表
邓昌永
离线
最后看到:7个月2周前
加入:2020-02-10 02:23
可移动地址

你好,

我有一个关于蓝牙的问题想咨询您。如何保证蓝牙地址的唯一性,相同的程序烧录到不同的芯片上,如何保证蓝牙地址不一样?

设备:
PM_Dialog
离线
最后看到:21小时22分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

您使用的是哪种BD地址?它是静态随机的吗?你能分享更多关于这方面的意见吗?

谢谢,PM_Dialog

邓昌永
离线
最后看到:7个月2周前
加入:2020-02-10 02:23
你好,

你好,

我说的是蓝牙MAC地址。我说的是蓝牙MAC地址。问题是,下载相同的程序会有相同的蓝牙MAC地址

PM_Dialog
离线
最后看到:21小时22分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

设备正在公布的BD地址是什么?如果您没有使用随机BD地址,设备将使用应用程序代码中设置的BD地址进行播发。你能为你的成就分享更多的投入吗?BD地址的类型是什么?

谢谢,PM_Dialog

邓昌永
离线
最后看到:7个月2周前
加入:2020-02-10 02:23
你好,

你好,

是的,上面写着BD地址。一个随机的蓝牙地址是否保证每个BD地址是不同的?我如何使用随机的蓝牙地址,请指导我。

PM_Dialog
离线
最后看到:21小时22分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

为了使用静态随机BD地址播发,您应该将user\u adv\u conf结构的.addr\u src项更改为GAPM\u GEN\u static\u RND\u addr。此结构位于user_config.h文件下。请查看app_easy_gap_undirected_Advertised_start_create_msg()函数,该函数为可连接的无向事件创建广告消息。如果用户_adv_conf.addr_src配置为GAPM_GEN_STATIC_RND_addr,则会触发生成48位静态随机地址的generate_STATIC_random_addr()。

谢谢,PM_Dialog

邓昌永
离线
最后看到:7个月2周前
加入:2020-02-10 02:23
你好,

你好,

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

PM_Dialog
离线
最后看到:21小时22分钟前
工作人员
加入: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

邓昌永
离线
最后看到:7个月2周前
加入:2020-02-10 02:23
你好,

你好,

不好意思,我标注的产品和SDK都不对,我用的是DA14695,使用的是最新的SDK版本

PM_Dialog
离线
最后看到:21小时22分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

缺省情况下,设备以静态公共BD地址开始发布。公共地址的默认值在sdk/ble/config/ble_config.h文件中声明。如果需要定义一个新值,那么新的宏定义应该出现在config/custom_config_xxx.h文件中,所有自定义定义都应该声明。例如:

#定义Defaultable_静态_地址{0x01、0x02、0x03、0x04、0x05、0x06}

如果设置的是随机的BD地址,请按照以下步骤操作:

/*初始化与BD地址相关的BLE结构*/ static const own_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

邓昌永
离线
最后看到:7个月2周前
加入:2020-02-10 02:23
你好,

你好,

如果按照您的示例,那么在批量生产时,每个产品的蓝牙MAC地址都是相同的。这肯定行不通,有更好的办法吗?

艾克塔安
离线
最后看到:7个月1周前
加入:2019-10-02 07:06

不,它对于每个设备都是唯一的,并且设备的BD地址至少每150秒更改一次。但若你们设置的地址类型是私有的,随机的,不可解析的,正如PM对话所说的,你们将无法连接。不可解析地址用于信标或不可连接的设备。

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

静态常量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\u DURATION);

您可以更改地址更新期限。

不幸的是,在生产时并没有私有的静态BD地址,就像在nRF52 MCU上一样。

邓昌永
离线
最后看到:7个月2周前
加入:2020-02-10 02:23
你好,

你好,

我使用ble_gap_address_set (& user_bd_address, 0x00FF)设置BD地址。为什么安卓手机可以扫描,而苹果手机不能扫描?我的数据如下:

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

PM_Dialog
离线
最后看到:21小时22分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

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

- 6字节为BD地址

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

还可以使用SmartSnippets工具箱读取NVMS_PARAM_PART。

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

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

update_bd_address()函数的目的是基于TRNG(真随机数生成器)引擎生成一个BD地址,并通过调用ble_gap_address_set()来设置它。然后,前面生成的地址将被写入NVMS_PARAM_PART。因此,在冷启动(重置)发生后,设备将使用写入闪存的BD地址。请在附件中找到源代码。您还将找到用于验证的代码片段。

一般有三(3)种方式配置BD地址:

1.定义一个唯一的公共地址。因此,defaultBLE_STATIC_ADDRESS宏应该在custom_config_xxx.h中定义

2.在NVMS_参数_部分闪存分区中写入BD地址。SDK将覆盖Defaultable_STATIC_address宏定义中定义的公共地址。

3.通过调用ble_gap_address_set() API定义一个唯一的BD地址。这个API可以在任何时候调用来更改设备的BD地址。

谢谢,PM_Dialog