你好,
我只是开始使用DA14531DEVKIT-PRO的几个例子,我有两个子板,普通SoC和基于一个模块。
仅使用ARCH_EXT_SLEEP_ON的基本示例,在SOC版本上,我看到当前消耗(平均)约为1.6uA,而在基于一个模块上,我看到刚刚超过10uA(使用连接到J9的万用表测量)。
我假设这是由于te flash没有被正确地禁用如下:
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。——软件/ power-down-da14531mods-spi-flash
然而……我禁用了SPI_FLASH…(# undef CFG_SPI_FLASH_ENABLE) . .即使我启用它,似乎也没有任何区别。
我尝试过把一个spi_flash_powerdown()在user_app_init(),然而,这显然不会工作,如果flash没有启用,它也不工作,如果它是…在这两种情况下,我都得到了300uA的消耗并且没有广告,所以我假设它挂起了(还没有尝试调试它)。
我是不是错过了什么?另一篇帖子中的帖子似乎明白了这一点,但我在冬眠的例子中看不到任何有意义的东西。
非常感谢,
李。
设备:
嗨,李,
你所有的观察都是正确的。问题是模块中的flash设备消耗过多的功率由于从选择引脚的状态(Aka芯片选择,spi启用等)。为了减少这种功耗,你所要做的就是确保SS引脚在每次唤醒时保持高。这是在函数中管理的set_pad_functions ()的user_periph_setup.c.对于DA14586,你可以看到这个(例如SDK样例项目empty_peripheral_template):
对于DA14531模块,它应该是这样的:
模块和SoC之间的差异应该下降到大约300nA。
/ MHv
你好,
谢谢你的回答,但是我觉得不太对。代码已经有了这个…
...我想和你说的一样。
我已经试着调整这个以适应您的特定代码,但没有任何区别。
...我没有读过闪存的具体数据表,但大多数闪存都是以非省电模式启动的,不是吗?所以我猜你真的需要启动闪光灯,然后把它调到省电模式??还是我错过了什么?
李。
你的代码和我的一样,除了我的代码直接指定了pin码。
我记得你说过你已经试过启动闪光灯然后让它休眠了,是我误会了吗?
/ MHv
嗨,李,
我认为您的应用程序可能挂起了——在我的模块上强制挂起将导致大约250uA。
尝试从empty_peripheral_template项目开始,并将睡眠模式设置为扩展睡眠。通过Keil的JTAG将其加载到模块上(附加然后分离调试器),以运行代码并度量功耗。在SoC上做同样的事情,你应该会看到功耗的巨大差异(在我的板上大约是1mA)。然后添加上述SPI SS的硬件配置,并在模块上重复测量。SoC和模块上的电流消耗几乎相同。
/ MHv
你好,
这个问题现在解决了……不是你说的那样,实际上是我完全不了解事情是如何初始化的。我曾假定启用CFG_SPI_FLASH_ENABLE就足以正确启用flash,但事实并非如此。
作为参考,模块flash (P25Q11U)的数据表清楚地显示了9uA的待机电流和0.1uA的深功率下降电流,所以几乎是9uA的差异,这正是我所看到的。此外,该模块将在待机模式下开机,需要特别将其置于深度关机模式。
我使用的代码示例(ble_app_barebone)的主要问题是没有SPI或flash初始化代码实际上在那里,所以CFG_SPI_FLASH_ENABLE实际上不做任何事情,因此调用spi_flash_powerdown()不会工作。
的进一步调查冬眠的例子(如中引用另一篇有关问题),我和你可以找到所有需要的代码来初始化别针,预置SPI,然后调用spi_flash_powerdown user_app_init()()和所有一切都非常完美…我实际上看到了稍微低一点的能耗,在1.4uA左右……但这只是用万用表,所以可能会遗漏峰等。
所以这很好…谢谢。
进一步…我刚刚发现了这个,它完美地解释了一切……
http://lpccs-docs.dialog-semiconductor.com/da145xx_tutorial_sdk6_periphe..。