你好!
我的项目进展顺利:我已经能够用Smartsnippet在DA14580的RAM内存中编写murata型ZY芯片。尽管如此,蓝牙地址并不是代码中指定的地址(在编写开发工具包时获得的地址)。
.NVDS\u TAG\u BD\u ADDRESS={0x01,0x00,0x00,0xCA,0xEA,0x81},
对这个“问题”有什么启示吗?
获得的蓝牙地址已由murata指定?
它存放在哪里?
我烧OTP的时候还能定制吗?(在刻录之前,将最终蓝牙地址指定为Smartsnippet中指定的地址)。
还有一件小事:在下面的文档中(http://wireless.murata.com/datasheet?/RFM/data/lbca2hnzyz-711.pdf文件),第16页,通过UART编程芯片不需要Vbat(不在绿色的跳线列表中),对吗?
提前谢谢!
设备:
那么你得到的是什么mac地址呢?一个只有零的地址?一个随机出现的地址?还有别的吗?
在da14580Šconfig.h中,基本上有两个Š定义将影响使用哪个mac地址:APPŠBOOTŠFROMŠOTP和READŠNVDSŠSTRUCTŠFROMŠOTP。当您在RAM中而不是从OTP运行程序时,这两个必须是未定义的(否则结果将是未定义的)。稍微简化一下,如果OTP头中的mac地址被编程,则使用该地址,否则使用nvds结构中的地址。这是通过检查OTP是否包含6个零来完成的。
这假设您已将设备配置为使用公共地址(这是默认值),而不是私人地址,这是在应用程序项目文件的函数app\u configuration\u func中完成的。
我已经从\u OTP启动了APP\u BOOT\u标志,并从\u OTP读取了\u NVDS\u STRUCT\u标志。
我的NVDS结构定义如下:
.NVDS\u TAG\u DEVICE\u NAME=“LoveTracker”,
.NVDS\u TAG\u BD\u ADDRESS={0x01,0x00,0x00,0xCA,0xEA,0x81},
我有正确的名称(即上传时考虑此结构),但蓝牙地址是:
98:F1:70:62:59:BB(每次,不是随机的)。
另外,当我试图在代码中搜索它时,没有发现任何出现。
我真的不知道它是从哪里来的。
最后,当我在DEV kit中发送相同的代码时,将获得正确的BLE地址。
当我查看函数app\u configuration\u func和gapm\u set\u dev\u config\u cmd定义时,我找不到哪个字段定义公共或私有BD地址。
啊哈!该MAC地址被分配给“Murata制造有限公司”,这意味着他们已经在一个MAC地址中预先编程到OTP中。如前所述,如果OTP中有一个编程的MAC地址,那么这个地址比您在nvds.c文件中指定的那个更受欢迎。
如果您可以将SmartSnippets连接到Murata芯片,您应该能够使用OTP工具读取标头内容,并发现此地址已在地址0x(4)7fd4的“设备特定Id”处烧录。如果你想用另一个MAC地址编程到OTP,你必须把它存储在OTP的另一个空闲地址。最好在同一节“设备特定Id”中,但8字节转发,0x(4)7fdc。如果这个和0x7fe0未被占用(您在SmartSnippets中看到零),您可以在这里存储自己的MAC地址。一定要更新
#从OTP 0x7fd4定义BDADDR\u
到
#从OTP 0x7fdc定义BDADDR\u
在nvds.c中,如果更新此define并将OTP区域留空(用于调试),则将使用写入nvds结构中的MAC地址。
你好,乔阿奇韦,
我就是这么想的!
谢谢你最后的提示!出于好奇,我要试试看。这个问题不适合我的系统,但我想知道发生了什么。
再次感谢您的帮助!
当做,
瓦尔