在DA14580的开发中,我们可以通过代码设置一个固定的蓝牙地址来测试,如下图,我们将地址设置为1234567890ab:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/fe071458795517.png)
烧录后,我们可以通过抓包工具看到实际的地址:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/d9b61458795517.png)
那么问题来了,如果我要生产100套呢?难道每一个都去重新编译一个hex文件么?
当然,答案是否定的,我们有很多种解决方法,可以将我们的蓝牙地址存在FLASH的某个位置(EEPROM也一样,下文不再重复),然后我们增加代码去读FLASH中的蓝牙地址,每生产一个,就改动FLASH中的地址字节。当然这样做的弊端就是增加了我们的代码工作量,所以,我们不推荐这种方法。
这里给大家介绍一种简单的方法,就是可以将地址放在OTP的header中,只烧录header不烧录程序,这样不影响我们将应用程序放到FLASH中,也不影响OTA等功能。
首先我们来看看这样做的官方依据:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/9a111458795519.png)
打开以上文件,我们可以清楚地看到关于蓝牙地址的说明—如果OTP header中有蓝牙地址,则定义无效。所以,我们的想法有理论依据。
接着,连接好我们的硬件,打开SmartSnippets,按照下图选择OTP Header烧录界面:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/96751458795520.png)
然后点击Connect:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/79d51458795521.png)
根据提示操作,显示成功连接后,我们找到以下位置,红色框中的选项选择No,这表明我们的应用程序不在OTP中,程序还是会从外部FLASH中启动:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/5f3b1458795521.png)
接着找到晶振设置选项,根据您的硬件选择,我们这里有外部32k晶振,所以选择外部:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/afc81458795522.png)
然后设置DMA大小为32k(00001fff):
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/0b3e1458795523.png)
找到以下位置,设置我们要的蓝牙地址:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/12b91458795523.png)
设置地址,我们可以将鼠标移到右侧,点击以下图标:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/e2831458795524.png)
会跳出一个对话框,直接输入我们要的地址,地址前6字节是有效的:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/7d781458795524.png)
填好以后点击Burn:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/586e1458795525.png)
提示烧录成功后,我们reset芯片,再用抓包工具看,地址已经改为我们设置的新地址:
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/59b21458795525.png)
这里说明一下地址的位置,我们设置的值是:0xCD123456007890AB,去掉最后2字节为0xCD1234560078,最后我们通过广播得到的地址是0x7800563412CD,所以,如果我们要设置0x1234567890AB为蓝牙地址,则填写的值应该为:0xAB9078563412****,这个可以自己去体会。
当然,以上过程只是工程师测试时可以使用,真正量产时可以使用量产工具,做到蓝牙地址自动递增,以提高生产效率。关于量产工具的使用,这边不再做过多的说明。
这里需要特别说明的一点是,OTP为一次性烧写,这次烧写完毕后下次就不能改啦,所以设置的时候千万要小心。
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/f63a1458550903.jpg)
![](http://www.snowywind.com/snowywind/content/uploadfile/201603/bfa41458550903.jpg)