这就跟你问声好!
我的项目进展顺利:我已经能够用smarsnippet在DA14580的RAM内存中编程我的murata TYPE ZY芯片。然而,蓝牙地址不是代码中指定的那个(当我编写开发工具包时获得的那个)。
.NVDS_TAG_BD_ADDRESS = {0x01, 0x00, 0x00, 0xCA, 0xa, 0x81},
在这个“问题”上有什么启示吗?
获取的蓝牙地址已由村田?
它储存在哪里?
当我烧录OTP时,我还能自定义它吗?(有最终的蓝牙地址,以指定在smarsnippet烧前)。
还有一件小事:在下面的文档(http://wireless.murata.com/datasheet?/RFM/data/lbca2hnzyz-711.pdf),第16页,Vbat不需要通过UART编程芯片(不在绿色的跳线列表中),对吗?
提前感谢!
设备:
那么你得到的是什么mac地址?一个只有零的地址?一个看似随机的地址?别的吗?
在da14580_config.h中,基本上有两个#定义将影响使用哪个mac地址:APP_BOOT_FROM_OTP和READ_NVDS_STRUCT_FROM_OTP。当您在RAM中而不是从OTP运行程序时,这两个参数必须是未定义的(否则结果将是未定义的)。稍微简化一下,如果OTP头中的mac地址被编程,则使用该地址,否则使用nvds结构中的地址。这是通过检查OTP是否包含6个零来完成的。
这假设你已经配置了你的设备使用公共地址(这是默认的)而不是私有地址,私有地址是在你的应用程序的proj文件中的函数app_configuration_func中完成的。
我有两个标志APP_BOOT_FROM_OTP和READ_NVDS_STRUCT_FROM_OTP未定义。
我的NVDS结构体定义如下:
.NVDS_TAG_DEVICE_NAME = " LoveTracker ",
.NVDS_TAG_BD_ADDRESS = {0x01, 0x00, 0x00, 0xCA, 0xa, 0x81},
我有正确的名称(即这个结构是考虑在上传),但蓝牙地址是:
98:F1:70:62:59:BB(每次,不是随机的)。
另外,当我尝试在代码中搜索它时,没有找到。
我真的不知道它是从哪里来的。
最后,当我在我的DEV工具包中发送相同的代码时,会选择正确的BLE地址。
当我查看app_configuration_func函数和gapm_set_dev_config_cmd定义时,我找不到哪个字段定义了一个公共或私有的BD地址。
啊哈!那个MAC地址被分配给"村田制造有限公司"也就是说他们已经在OTP中预先设定了一个MAC地址。如前所述,如果在OTP中有一个已编程的MAC地址,那么该地址将优先于您在nvds.c文件中指定的地址。
如果你能将smarsnippets连接到你的Murata芯片上,你应该能够使用OTP工具来读取头部内容,并发现这个地址已经在地址0x(4)7fd4的“Device specific Id”中被嵌入。如果您喜欢使用另一个MAC地址,您想要编程到OTP,您必须将它存储在OTP中的另一个自由地址。最好在同一节“设备特定Id”,但向前8字节,0x(4)7fdc。如果这个和0x7fe0是未被占用的(在SmartSnippets中看到0),你可以在这里存储你自己的MAC地址。一定要更新
#定义x7fd4 BDADDR_FROM_OTP 0
来
#定义x7fdc BDADDR_FROM_OTP 0
在nvds.c。如果您更新这个定义,并将OTP区域留空(用于调试),则将使用写入nvds结构中的MAC地址。
嗨Joacinwe,
我就是这么想的!
谢谢你的最后一个建议!出于好奇,我想试试。这个问题对我的系统没有害处,但我想知道发生了什么。
再次感谢您的帮助!
问候,
瓦尔