你好
我们正在尝试将SUOTA添加到我们的固件中,但是我们遇到了一个问题。当我们将SUOTA添加到我们的个人资料中,我们无法入睡,我们得到了大约1.2 mA。然而,当我们在固件中删除SUOTA配置文件时,设备可以进入正常睡眠状态,消耗下降到30uA。
在文档AN-B-10中,步骤号10表示转向睡眠模式。这是否意味着,如果我们要在我们的固件中使用Suota配置文件,那么它无法睡觉?
感谢和问候
瓦拉希尔
关键词:
设备:
你好,穆
你的意思是当你只添加SUOTA配置文件的sw你会得到更高的功耗?不是在过程中,还是之后,只是在添加SUOTA代码时?即使580处于无睡眠状态,1.2mA也很贵了。关于睡眠,你可以操作睡眠时,你有SUOTA启用,即使在SUOTA设备睡觉和醒来(我无法找到你在AN-B-10提到的睡眠)。
谢谢mt_dialog.
你好
是的,我得到增加只是通过添加SUOTA配置文件,即包括“#包括”spotar.h“”在文件user_profiles_config.h
在AN-B-10部分8.1第12页中,列出了步骤过程。在步骤10中,它将在user_config.h中关闭休眠模式。
你好,穆
我的糟糕,我正在检查一个旧版本的文件,但仍然是新版本的文档意味着禁用睡眠是错误的,所以谢谢你的表明,我通知作者关于这个误导评论。关于你的问题,我无法看到涉及偶像的装置的目前消耗装置的增加,应该有一些引脚的泄漏,但我无法涉及到这一点,因为它配置了销钉并设置从闪光灯或I2C读取或写入数据时的SPI模块。您是否能够在583中使用邻近的邻近Reporter构建复制。
谢谢mt_dialog.
你好
好的,所以我们再次检查,我们要睡觉,但我们仍然消耗过多的电流。
在文件user_periph_setup.c中有一个名为set_pad_functions的函数。在此功能中,存在一系列GPIO配置,如下所示
#if(ble_spota_receiver)
GPIO_ConfigurePin(SPI_EN_GPIO_PORT, SPI_EN_GPIO_PIN, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(SPI_CLK_GPIO_PORT, SPI_CLK_GPIO_PIN, OUTPUT, PID_SPI_CLK, false);
gpio_configurepin(spi_do_gpio_port,spi_do_gpio_pin,输出,pid_spi_do,false);
gpio_configurepin(spi_di_gpio_port,spi_di_gpio_pin,输入,pid_spi_di,false);
// i2c EEPROM的示例GPIO配置。
// gpio_configurepin(gpio_port_0,gpio_pin_2,输入,pid_i2c_scl,false);
//GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_3, INPUT, PID_I2C_SDA, false);
# endif
这些配置的目的是什么。通过删除这些配置,我们能够减少我们的目前。从睡眠中醒来后我们需要打电话这个序列吗?
你好,穆
那些引脚是为了让唤醒后要初始化的引脚,并且是您需要在唤醒之后重新初始化引脚(那些配置命令是配置连接到SPI接口的引脚),但是配置文件在启动与外部内存的交互之前,它始终通过配置文件配置引脚,因此我认为您将很好地淘汰这些配置,尽管我没有看到我的设置上的那些引脚的任何泄漏。
谢谢mt_dialog.
你好
好的,如果我删除下面的行,那么SPI将不会初始化,但您说过SUOTA配置文件在更新之前会执行所需的SPI初始化。这种理解正确吗?
GPIO_ConfigurePin(SPI_EN_GPIO_PORT, SPI_EN_GPIO_PIN, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(SPI_CLK_GPIO_PORT, SPI_CLK_GPIO_PIN, OUTPUT, PID_SPI_CLK, false);
gpio_configurepin(spi_do_gpio_port,spi_do_gpio_pin,输出,pid_spi_do,false);
gpio_configurepin(spi_di_gpio_port,spi_di_gpio_pin,输入,pid_spi_di,false);
如果我发起一个SUOTA传输,那么SPI将被初始化,并将发生成功的传输,但是在设备重新启动后,SPI将保持初始化状态还是将进入重置状态。也就是说,有一个序列来清洁/解构SPI引脚,我需要在睡觉之前添加,以便重新启动后没有泄漏。
你好,穆
是的,您可以在app_spotar_spi_config中查看suota配置文件()保留SPI的引脚,如果您处于开发模式和配置。设备重新启动后,它将加载您下载的新应用程序,并且您的引脚状态将是您在user_periph_setup()函数中的新fw中的状态。关于清洁/解构程序过程,没有具体过程,引脚的默认状态为input_pulldown。
谢谢mt_dialog.
你好
因此,我们删除了SPI的初始化,并观察到一些奇怪的事情。当我们通过SmartSnippet加载十六进制文件时,即保持SPI Flash可启动,我们在睡眠模式下的功耗为30-40uA,正如我们的期望。然而,当我们使用辅助引导加载程序(SDK实用程序中提供的)创建一个双重映像,然后使用SmartSnippet并保持SPI Flash不可引导时,我们的功耗为300-400uA。
我们已经检查了测试点上的信号,并且根据我们的设备的要求,所有这些信号都低,端口2_3,2_4,2_0和2_9。我们仍然无法弄清楚哪个GPIO端口/引脚未知为30-40 UA。
你好,穆
我无法解释可能导致这种行为的内容,引导加载程序刚刚运行才能加载两个现有图像之一,之后图像本身在580上运行,您是否尝试使用邻近记者刻录多部分.BinFW为了检查你是否得到相同的功耗?
谢谢mt_dialog.
你好
我们仍在试图调试为什么引导加载程序的功耗很高。在引导加载程序中,除了GPIO引脚配置之外,在控制移交给固件之前,设置了以下寄存器。你能告诉我们这些值是多少吗?我们需要取消他们或重置他们在我们的固件初始化
setword16(WatchDog_reg,0xC8);// 200 * 10.24ms初始化的活动时间!
SetWord16 (RESET_FREEZE_REG FRZ_WDOG);/ /开始WDOG
if(*(volatile unsigned *)0x20000000和0x20000000)
{
tmp = GetWord16 (SYS_CTRL_REG);
tmp = ~ 0 x0003;
SetWord16 (SYS_CTRL_REG tmp);
sw_reset();
}
tmp = GetWord16 (SYS_CTRL_REG);
/ / tmp = ~ 0 x0003;
tmp | = 0 x8000;
SetWord16 (SYS_CTRL_REG tmp);
你好,穆
您从efferic_bootloader fw粘贴的代码,它只是将望datog设置为值键,然后启用它,然后启动刚从外部设备加载到SYSRAM的应用程序。我不认为它们与高功耗有关。也许额外的功耗来自闪光灯,您是否尝试从FW中调用SPI_FLASH_POWER_DOWN(),也许您正在使用代码中的某处的闪存。还有你试过靠近记者检查你是否获得相同的功耗?
谢谢mt_dialog.