你好,
我刚刚使用da14531devkit-pro的一些例子开始,我有两个子板,正常的SOC一个和模块基于一个。
使用ARCH_EXT_SLEEP_ON的简单例子,在SOC版本中,我看到了大约1.6uA的电流消耗(平均),而在基于模块的版本中,我看到超过10uA(使用连接到J9的万用表测量)
我假设这是由于te flash没有被正确禁用如下:
https://support.dialog-semicondiondiondum/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 chip select, spi enable,等等)的状态而消耗过多的功率。为了减少这种功耗,您所要做的就是确保SS引脚在每次唤醒时都保持高位。这是在函数中管理的set_pad_functions ()的user_periph_setup.c.对于我们的DA14586,您可以看到此(SDK示例Project Enterion_Peripheral_Template):
对于DA14531模块,它应该是这样的:
然后,模块和SoC之间的差异应该下降到大约300na。
/ MHv
你好,
谢谢你的答案,但我不认为这是合适的......这个代码已经有了......
......我认为哪个与您建议相同。
我已经尝试调整这到您的特定代码,它没有任何不同。
...我还没有读过flash的具体数据表,但它们大多数都是在非省电模式下启动的,不是吗?所以我猜你真的需要打开闪光灯,然后把它调到省电模式??还是我遗漏了什么?
李。
你的代码与我的相同,除了我的代码直接指定pin。
我记得你说过你已经试过启动闪光灯然后让它休眠了,我是不是误会了?
/ MHv
嗨,李,
我认为您的应用程序可能挂起了我的模块,强制挂起导致大约250uA。
尝试从empty_peripheral_template项目开始,并将睡眠模式设置为扩展睡眠。通过Keil中的JTAG将其加载到模块中(连接然后分离调试器),以运行代码并测量功耗。在SoC上做同样的事情,你应该会看到功耗的巨大差异(在我的主板上大约是1mA)。然后添加上面描述的SPI SS的硬件配置,在模块上重复测量。SoC和模块上的当前消耗将几乎相同。
/ MHv
你好,
这个问题现在解决了……不是你说的那样,其实是我完全不了解事情是如何初始化的。我本来以为启用CFG_SPI_FLASH_ENABLE就足以正确启用flash,但事实并非如此。
供参考,模块闪光灯(P25Q11U)的数据表清楚地显示了9uA待机电流和0.1ua深度下电流,所以几乎是900A差异,这正是我所看到的。此外,该模块将在待机模式下打开电源,需要专门放入深断电模式。
代码示例的主要问题我正在使用(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..。