Dialog SDK5中修改广播时间的方法

Dialog SDK5中的一些BLE应用例子默认是一直广播的,如果需要测试芯片的超低功耗,势必会想让广播停下来,这很简单,您只需改一个地方即可。这里我们以prox_reporter例子为例:

在以下目录下打开对应工程:

DA1458x_SDK\5.0.3\projects\target_apps\ble_examples\prox_reporter\Keil_4

首先找到user_config.h文件里的结构体:

然后第一个参数adv_scenario修改成DEF_ADV_WITH_TIMEOUT:

保存后编译,就会看到广播一段时间后就会停止。

如果要修改广播的时间,可以修改第二个参数advertise_period,直接修改括号中的时间即可:

好了,结束,So easy,再也不用担心广播永远不停了。

更多信息请微信关注:

Dialog SDK5.03中让外挂FLASH进入超低功耗的方法

在之前的测试中,模块进入休眠后一直有15uA左右的电流,拆掉FLASH,电流变为7uA,可见外挂FLASH消耗了约8uA电流,这个在一些超低功耗的场合还是偏大,查看了手册,FLASH应该是处于Standby mode,必须让FLASH进入power-down mode才行。

在SDK5.0.3中,flash的操作函数已经打包在spi_flash.c中,只要调用相应的函数即可:

可见,在所有的FLASH操作完毕后,调用spi_flash_power_down函数就可以直接让FLASH进入低功耗模式。

这里以SDK5.0.3中prox_reporter项目为例(位置5.0.3\projects\target_apps\ble_examples\prox_reporter\Keil_4):

为了保证SDK的统一性,我们加代码的原则是尽量在user区域加,所以,我们找到以下位置:

在函数的最后加入函数spi_flash_enable和spi_flash_power_down:

当然,别忘记在文件顶部加入#include “spi_flash.h”:

好了,此时编译并download程序到FLASH中,测试后得到7uA最低电流,可见FALSH已进入power-down模式。

更多信息请微信关注:

基于SDK5.03的SUOTA使用方法(附工具)

 DA1458x是可以支持空中升级的,但是需要对编译好的hex文件做适当处理,本文以SDK5.0.3为例,为您演示DA14580芯片如何制作和烧录SUOTA程序,要成功使用SUOTA,芯片外部必须外挂1M以上FLASH,我这里使用的是2Mbits SPI FLASH。首先,我们有以下两个工具,第一个hex2bin是将hex文件转换为bin文件,第二个是制作SUOTA的img文件,hex2bin是网上找的,如果你有类似的工具也可以使用,mkimage的源码可以在SDK5.0.3中找到,用VC编译后可生成exe文件。我将这两个工具放在了附件中,需要的话可以下载。

 关于具体的SUOTA操作方法,请参考我的百度文档:http://wenku.baidu.com/view/ae9400c4192e45361166f59f.html

点击下载: SUOTA_TOOLS.rar

DA14580 SUOTA在IOS平台的使用方法

本文只介绍在IOS下用SUOTA APP给DA14580升级新程序,关于DA14580的img文件怎么制作,怎么烧录到DA14580,请查阅其他文章。

SUOTA需要DA14580外挂1Mbits以上的FLASH或者EEPROM,当然DA14583不需要,因为它已经内置了1M FLASH。

本文的演示需要用到事先制作好的img文件,关于img文件怎么制作,请查看我写的另一个文档:http://wenku.baidu.com/view/ae9400c4192e45361166f59f.html

这里再啰嗦一点,除了用IOS升级,也可以用Android,当然,官方的文档说Android会不稳定。关于SUOTA APP,可以在苹果商店或者谷歌的商店上直接下载到。

这里我们以IOS版SUOTA为例:

当然,先别急着打开APP,在此之前,我们要把要升级的img文件拷贝到手机。工具可以选择iTunes或者iTools,其道理是一样的,这里以iTools为例,将手机连上iTools,然后选择:

打开SUOTA的文件共享,并选择以下文件夹,将要升级的文件拷贝到该文件夹下,这里我拷贝了3个文件,可以根据自己的需求来拷,反正升级只需要一个:

拷贝完毕后关闭iTools,断开手机。

然后打开手机APP,点击搜索,之前请让DA14580工作在广播状态。

不一会儿,就会出现SUOTA02这个设备,这是我们事先烧录好的程序(相关方法请查阅我的其他文档,下文不再重复说明),点击SUOTA02与设备建立连接。

点击Update,选择fw03.img(SUOTA02是fw02.img,所以我们选择新的)。

正常的话会出现以下界面:

由于我们用的是FLASH,所以选择SPI,然后根据自己的硬件选择SPI口的配置,关于Image bank,可以选择Oldest-自动选择老的区块覆盖,Bank1-覆盖区块1,Bank2-覆盖区块2,Block size-一般选择默认好了,完毕后点击Send to device。然后出现以下界面:

等待它升级完成,会跳出以下界面:

选择reboot,再刷新界面,可以看到更新后的设备—SUOTA03:

说明更新成功。

 更多信息请微信关注:

BD0007-如何在DA14580中为设备设置独立的蓝牙地址

在DA14580的开发中,我们可以通过代码设置一个固定的蓝牙地址来测试,如下图,我们将地址设置为1234567890ab:

烧录后,我们可以通过抓包工具看到实际的地址:

那么问题来了,如果我要生产100套呢?难道每一个都去重新编译一个hex文件么?

当然,答案是否定的,我们有很多种解决方法,可以将我们的蓝牙地址存在FLASH的某个位置(EEPROM也一样,下文不再重复),然后我们增加代码去读FLASH中的蓝牙地址,每生产一个,就改动FLASH中的地址字节。当然这样做的弊端就是增加了我们的代码工作量,所以,我们不推荐这种方法。

这里给大家介绍一种简单的方法,就是可以将地址放在OTP的header中,只烧录header不烧录程序,这样不影响我们将应用程序放到FLASH中,也不影响OTA等功能。

首先我们来看看这样做的官方依据:

打开以上文件,我们可以清楚地看到关于蓝牙地址的说明—如果OTP header中有蓝牙地址,则定义无效。所以,我们的想法有理论依据。

接着,连接好我们的硬件,打开SmartSnippets,按照下图选择OTP Header烧录界面:

然后点击Connect:

根据提示操作,显示成功连接后,我们找到以下位置,红色框中的选项选择No,这表明我们的应用程序不在OTP中,程序还是会从外部FLASH中启动:

接着找到晶振设置选项,根据您的硬件选择,我们这里有外部32k晶振,所以选择外部:

然后设置DMA大小为32k(00001fff):

找到以下位置,设置我们要的蓝牙地址:

设置地址,我们可以将鼠标移到右侧,点击以下图标:

会跳出一个对话框,直接输入我们要的地址,地址前6字节是有效的:

填好以后点击Burn:

提示烧录成功后,我们reset芯片,再用抓包工具看,地址已经改为我们设置的新地址:

这里说明一下地址的位置,我们设置的值是:0xCD123456007890AB,去掉最后2字节为0xCD1234560078,最后我们通过广播得到的地址是0x7800563412CD,所以,如果我们要设置0x1234567890AB为蓝牙地址,则填写的值应该为:0xAB9078563412****,这个可以自己去体会。

当然,以上过程只是工程师测试时可以使用,真正量产时可以使用量产工具,做到蓝牙地址自动递增,以提高生产效率。关于量产工具的使用,这边不再做过多的说明。

这里需要特别说明的一点是,OTP为一次性烧写,这次烧写完毕后下次就不能改啦,所以设置的时候千万要小心。