了解更多常见问题教程

14个职位/ 0个新职位
最后一篇文章
邓昌永
离线
最后一次见到:2个星期5天前
加入:2020-02-10 02:23
BLE MacAddress

你好

我有一个蓝牙问题,想请教你。如何确保蓝牙地址的唯一性,相同的程序被烧成不同的芯片,如何确保蓝牙地址是不同的?

设备:
PM_对话框
离线
最后一次见到:2小时44分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

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

谢谢,下午好

邓昌永
离线
最后一次见到:2个星期5天前
加入:2020-02-10 02:23
你好

你好

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

PM_对话框
离线
最后一次见到:2小时44分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

设备发布的BD地址是什么?如果您没有使用随机的BD地址,设备将使用在您的应用程序代码中设置的BD地址进行广告。对于你所完成的工作,你能分享更多的经验吗?BD地址的类型是什么?

谢谢,下午好

邓昌永
离线
最后一次见到:2个星期5天前
加入:2020-02-10 02:23
你好

你好

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

PM_对话框
离线
最后一次见到:2小时44分钟前
工作人员
加入: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()。

谢谢,下午好

邓昌永
离线
最后一次见到:2个星期5天前
加入:2020-02-10 02:23
你好

你好

我找不到app_easy_gap_undirected_advertise_start_create_msg()函数?请解释一下那个功能的位置。

PM_对话框
离线
最后一次见到:2小时44分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

它位于5.0.4\sdk\app\u modules\src\app\u common\app.c sdk路径下。您使用的是哪个SDK版本?您已经标记了DA14580产品,因此推荐的SDK版本为5.0.4。

谢谢,下午好

邓昌永
离线
最后一次见到:2个星期5天前
加入:2020-02-10 02:23
你好,

你好,

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

PM_对话框
离线
最后一次见到:2小时44分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

默认情况下,设备使用静态公共BD地址开始广告。公共地址的默认值在sdk/ble/config/ble_config.h文件中声明。如果需要定义一个新的值,那么新的宏定义应该在config/custom\u config\u xxx.h文件中进行,其中应该声明所有自定义定义。例如:

#define defaultBLE_STATIC_ADDRESS {0x01, 0x02, 0x03, 0x04, 0x05, 0x06}

在设置随机BD地址的情况下,应执行以下操作:

/*初始化与BD地址相关的BLE结构*/static const own_address_t user_BD_address={.addr_type=PRIVATE_RANDOM_unresolve_address,.addr={0x01、0x02、0x03、0x04、0x05、0x06}/*设置蓝牙地址*/ble\u gap\u address\u Set(&user\u bd\u address,0x00FF);

addr将被忽略。

谢谢,下午好

邓昌永
离线
最后一次见到:2个星期5天前
加入:2020-02-10 02:23
你好,

你好,

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

艾克塔安
离线
最后一次见到:5天12小时前
加入:2019-10-02 07:06

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

我通过以下方式设置我的唯一地址:

static const own_address_t own_addr = {.addr_type = PRIVATE_RANDOM_RESOLVABLE_ADDRESS,};err = ble_gap_address_set(&own_addr, defaultBLE_ADDRESS_RENEW_DURATION);

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

不幸的是,在生产中没有私有静态BD地址被烧毁,就像在nRF52 mcu中一样。

邓昌永
离线
最后一次见到:2个星期5天前
加入:2020-02-10 02:23
你好,

你好,

我使用ble\u gap\u address\u set(&user\u bd\u address,0x00FF)来设置bd地址。为什么Android手机可以扫描这个设备,而苹果手机却不能?我的数据如下:

/*初始化与BD地址相关的BLE结构*/
Static own_address_t user_bd_address = {
.addr\u type=专用\u静态\u地址,
.addr = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06}
};

PM_对话框
离线
最后一次见到:2小时44分钟前
工作人员
加入:2018-02-08 11:03
你好,

你好,

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

-BD地址为6字节

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

您还可以使用SmartSnippets工具箱读取NVMS_参数部分。

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

当开发者没有提供设备地址时,使用蓝牙公共地址。公共地址的默认值在sdk/ble/config/ble_config.h文件中声明。如果需要定义一个新值,那么新的宏定义应该出现在config/custom_config_xxx.h文件中,所有自定义定义都应该声明。

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

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

1.定义一个唯一的公共地址。因此,应该在custom\u config\u xxx.h中定义defaultBLE\u STATIC\u ADDRESS宏

2.在NVMS_PARAM_PART闪存分区中写入一个BD地址。SDK将覆盖defaultBLE_STATIC_ADDRESS宏定义中定义的公共地址。

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

谢谢,下午好