嗨对话小组
我使用自己的自定义,电池操作,巴克模式,Da14580与需求方与外部flash设备项目,添加i2c司机(SDA sci,打开注册- 10 k与VBAT3v),一旦数据发送到主保佑设备,扩展dsp设备断开和进入睡眠,我用数字万用表(DMM)检查了功耗,
广告- 512ua,
连接,数据xt - 776ua
睡眠- 322ua,
我已经测试了相同的DSPS设备项目与Murata P2ML 3656 - Murata LBCA2HNZYZ) - ZY型Dev Board,与DMM和功率profiler(没有i2c驱动,静态数据)
广告- 240ua,
连接,数据xt - 537ua
睡眠- 110ua,
我也用Dialog IOT da14583测试了相同的设置
广告- 250ua,
连接,数据xt - 313 - 512 ua
睡眠- 227 ua,我得到…
为什么我不能得到1.3u安培或附近??请帮我解决这个??
谢谢对话团队
设备:
嗨prasanth,
DSPS项目永远不会陷入永久睡眠,它总是保持广告或保持连接活跃和睡眠之间的连接间隔或广告间隔。因此,如果在你的固件设置设备永久睡眠,你有睡眠功能,那么你应该看到一个接近1.3uA的值。额外的消耗可能由您的板上的其他设备(我认为板上有一个I2C内存,所以额外的功耗可能来自该设备)或由您的板上的泄漏而增加。还有你提到的数值,我想它们是你的仪器测量的平均值。请在教程部分的Documents选项卡中查看教程4:配置睡眠模式,了解如何正确测量睡眠期间的功耗。
由于MT_dialog
在DSPS设备项目中,一旦数据发送到主完成,我们已经将DSPS设备放置5分钟睡眠,我能够看到设备5分钟没有广告,5分钟后只有DSPS设备是广告。所以睡眠是正常的,不是吗??
i2c驱动温湿度传感器,环境光传感器。
正如你所说的,如果硬件问题,为什么在DA14583物联网套件中我也得到了相同的,(通过连接万用表,到智能带物联网BLE板的开关,电池端ti万用表正,ckt端mutimeter com)
谢谢你的对话框
嗨对话框
PFA。能量分析器图
谢谢你!
嗨prasanth,
从功率分析器中我可以看到设备正在休眠和苏醒,所以是的,设备应该处于休眠状态,因为你的主板上有传感器,你的传感器消耗额外的能量,不仅仅是580消耗能量。关于物联网,由于它也有额外的传感器,当设备休眠时,你无法获得约1.4uA,当前消耗约为11uA。
由于MT_dialog
你好,
你需要切断闪光灯的供电以减少电流消耗。
嗨Wisilica
感谢您的回复。
那么如何DA14583物联网智能Bond套件将提供11ua,这也使用“切断spi供应”配置。请告诉我更多的细节。
I2c传感器有10k上拉,这会导致什么问题吗??...如何解决这些问题?
谢谢你!
嗨对话框
https://support.dialog-semiconductor.com/issues-external-spi-flash
正如上面提到的,次要引导加载程序会修复这个问题吗(对于DA14580) ??
谢谢你!
嗨prasanth,
物联网,flash在低功耗模式下,当其未使用(它仍然消耗一些能量,但不如全功能时),它还设置额外的传感器在低功耗模式下,你可以检查spi_flash_power_down spi_flash.c文件()函数。正如我上面提到的,您必须检查系统上的其他模块是否消耗了额外的电力。
关于你贴在上面的帖子是否能解决你的问题,你确定你的定制设备消耗的额外电力来自于外部闪光灯吗?二级引导装载程序的原因是,如果你关闭闪光灯,你想重置装置在ROM引导装载程序没有醒来flash的能力,这在二级引导装载程序掌权的flash, 580年将会正常启动了。所以,请检查这些额外的电力消耗来自哪里(内存、传感器等)。
由于MT_dialog
嗨对话框
如何在DSPS设备项目中使用spi_flash_power_down() (DA14580和DA14583),是否有样例项目或文档??
PFA的外部外设在我的定制板,我也在DSPS使用这个电池水平监测,
我有两个定制板,一个是DA14580BLE,另一个是DA14583,如果SPI flash绘制更多的功率,为什么这两个定制板当前消耗几乎相同??DA14583的custom Board应该显示的少,对吗?
嗨prasanth,
从需求方的例子多恩不使用flash没有例子,但参考设计开发flash有此功能,只需调用函数我上面提到为了powerdown flash,像灯塔一样,函数的实现位于spi_flash.c司机。
我不能预见为什么你的板子上有额外的电流,因为这取决于相当多的因素,你必须一个一个地检查是什么增加了你的功耗,检查额外的设备。583年嵌入式flash和你提到580年外部闪光灯,所以我想,如果你不闪了你会得到类似的功耗,正如我前面提到的flash在583年需要关闭,如果这是个问题。
由于MT_dialog
嗨对话框
https://wenku.baidu.com/view/20871b8127d3240c8547efd2.html
i have follow above link to use spi_flash_power_down() in DSPS_Device, but not working,…
从灯塔项目,每个读/写操作后spi_flash_power_down()调用,但在需求方设备项目我不做任何读/写SPI Flash,那么到底从哪个函数我必须调用此spi_flash_power_down(),这将是有意义的。
比你
嗨prasanth,
我提到了flash power down命令,以便发送这种命令给flash,以检查flash是否消耗了你在你的板上看到的额外的电力。所以你可以调用它来检查消耗是否会下降,如果你没有看到任何影响,那么其他东西正在消耗额外的电流。
由于MT_dialog
甚至在调用spi_flash_power_down()时,我们也没有看到电源下降。必须通过gpio控制flash电源,关闭flash。
嗨对话框
问1。在我们的定制板DA14580——与外部闪光灯,我已经删除了所有引体向上(10 k),注册和测试,我能不能通过SmartSnippets flash /擦除SPI内存,如果我把在CS销引体向上,这是工作,但在灯塔和智能标记的设计我没有看到任何在CS销拔起吗? ?
谢谢你的对话框
嗨prasanth,
如果这是你的问题的话,在信标或智能标签或任何开发套件的CS上都没有pullup。一个大胆的猜测,也许其他东西也在驱动CS线,一个电子问题在定制板上可能,导致在您的SPI线感应噪音?
由于MT_dialog
嗨对话框
谢谢对话框,现在我可以不用上拉寄存器就可以使用SPI flash了。
在dsp设备项目中
如果我调用spi_flash_power_down periph_init内()()“user_periph_setup.c”,我闪过这段代码,我的设备不是广告后一段时间,同时在这之后擦除spi闪我面对错误,在物联网项目中,spi_flash_power_down()调用,而读/写配置参数,但在需求方如何使用这个API ?
谢谢你的对话框
嗨prasanth,
peri_init()是一个函数,在每次设备唤醒时执行,如果在某个点后设备停止或给你错误,你将不得不通过调试检查实际原因。无论如何,没有适当的点,你将把电源下电的闪存,该函数应该被调用后接口与闪存,例如读取或写入数据后(正如物联网使用它)。现在,出于某种原因,当DSPS运行时,flash是通电的,你可以在app_on_init()回调中调用函数,这应该没问题。
由于MT_dialog
嗨对话框
正如您所建议的,我正在调用user_on_init()中的spi_flash_power_down()
空白user_on_init(空白)
{
// SPS应用程序初始化
user_scheduler_init ();
default_app_on_init ();
da14580_spi_flash_init ();
da14580_spi_flash_deinit ();
}
空白da14580_spi_flash_init(空白)
{
SPI_Pad_t cs_pad_param;
Int8_t man_dev_id = 0;
cs_pad_param。端口= SPI_EN_GPIO_PORT;
cs_pad_param。销= SPI_EN_GPIO_PIN;
man_dev_id = spi_flash_enable (cs_pad_param。港口,cs_pad_param.pin);
if (man_dev_id == SPI_FLASH_AUTO_DETECT_NOT_DETECTED)输出说明
{
//设备未被识别。
//使用默认参数。
//或者,错误可以在这里断言。
spi_flash_init (SPI_FLASH_DEFAULT_SIZE SPI_FLASH_DEFAULT_PAGE);
}
}
Void da14580_spi_flash_deinit(Void)
{
spi_flash_power_down ();
}
但我仍然得到235ua在下次睡眠
作为menitone din smart_tag项目,我已经更改user_peri_setup .c
#如果DEVELOPMENT_DEBUG
空白GPIO_reservations(空白)
{
/*
*全球预留gpio预留
*/
/*
*应用特定的gpio预留。仅在开发模式下使用(#if DEVELOPMENT_DEBUG)
即。
gpio_port_0, pio_pin_1, pid_gpio;//保留P_01作为通用目的I/O
*/
//保存gpio (uart1_tx, gpio_uart1_tx_port, gpio_uart1_tx_pin, pid_uart1_tx);
//设置pio (uart1_rx, gpio1_rx_port, gpio_uart1_rx_pin, pid_uart1_rx);
Reserve_gpio (i2c_scl, i2c_gpio_port, i2c_scl_pin, pid_i2c_scl);/ /副总裁
预留gpio (i2c_sda, i2c_gpio_port, i2c_sda_pin, pid_i2c_sda);/ /副总裁
gpio_port_1, gpio_pin_1, pid_gpio);
Reserve_gpio (spi_cs, spi_gpio_port, spi_cs_pin, pid_spi_en);
Reserve_gpio (spi_clk, spi_gpio_port, spi_clk_pin, pid_spi_clk);
Reserve_gpio (spi_do, spi_gpio_port, spi_do_pin, pid_spi_do);
Reserve_gpio (spi_di, spi_gpio_port, spi_di_pin, pid_spi_di);
/*
#如果(UART_HW_FLOW_ENABLED)
预留gpio (uart1_rts_port, gpio_uart1_rts_pin, pid_uart1_rtsn);
Reserve_gpio (uart1_ctsn, gpio_uart1_cts_port, gpio_uart1_cts_pin, pid_uart1_ctsn);
# endif
# ifdef CFG_PRINTF_UART2
Reserve_gpio (uart2_tx, gpio_uart2_tx_port, gpio_uart2_tx_pin, pid_uart2_tx);
预留gpio (uart2_rx, gpio_uart2_rx_port, gpio_uart2_rx_pin, pid_uart1_rx);
# endif
*/
}
# endif / / DEVELOPMENT_DEBUG
/ * *
****************************************************************************************
* @brief Map端口引脚
*
* Uart和SPI端口引脚和GPIO端口映射
****************************************************************************************
*/
Void set_pad_functions(Void) //设置gpio端口功能模式
{
/*
*配置应用端口。
即。
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_1, OUTPUT, PID_GPIO, false);//设置P_01为通用目的输出
*/
GPIO_ConfigurePin(LED_PORT, LED_PIN, OUTPUT, PID_GPIO, true);
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);/ /副总裁
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, true);/ /副总裁
//GPIO_ConfigurePin(GPIO_UART1_TX_PORT, GPIO_UART1_TX_PIN, OUTPUT, PID_UART1_TX, false);
GPIO_ConfigurePin(GPIO_UART1_RX_PORT, GPIO_UART1_RX_PIN, INPUT_PULLUP, PID_UART1_RX, false);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_CS_PIN, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_CLK_PIN, OUTPUT, PID_SPI_CLK, false);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_DO_PIN, OUTPUT, PID_SPI_DO, false);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_DI_PIN, INPUT, PID_SPI_DI, false);
/*
#如果(UART_HW_FLOW_ENABLED)
GPIO_ConfigurePin(GPIO_UART1_RTS_PORT, GPIO_UART1_RTS_PIN, OUTPUT, PID_UART1_RTSN, false);
GPIO_ConfigurePin(GPIO_UART1_CTS_PORT, GPIO_UART1_CTS_PIN, INPUT_PULLUP, PID_UART1_CTSN, false);
# endif / / UART_HW_FLOW_ENABLED
# ifdef CFG_PRINTF_UART2
GPIO_ConfigurePin(GPIO_UART2_TX_PORT, GPIO_UART2_TX_PIN, OUTPUT, PID_UART2_TX, false);
GPIO_ConfigurePin(GPIO_UART2_RX_PORT, GPIO_UART2_RX_PIN, INPUT, PID_UART2_RX, false);
# endif
*/
}
我也有undef #undef CFG_DEVELOPMENT_DEBUG
移除了EXT-SPI flash的cs引脚上拉。
我在开发板上检查了同样的项目,仍然是230uAmps,所以我不认为硬件泄漏是造成当前的消耗
可能有什么问题..........??还有其他的选择吗
谢谢你!
嗨prasanth,
所以你已经测试了设备,基本上没有闪存和额外的I2C组件,你的fw仍然消耗大约230uA。没有明显的原因,我的意思是,如果设备是清醒的,当你进行测量时,功耗应该远远高于230uA。没有设备连接在580(内存设备,I2C传感器等),我能想到的唯一的方式,可能消耗这种功率是通过UART引脚的某种泄漏,虽然我不能看到任何类似的DSPS参考设计,您是否尝试删除UART连接并检查这是否会降低您的当前消耗。
由于MT_dialog
嗨Dilaog团队
感谢您的回复…
您是否尝试删除UART连接并检查这是否降低了当前的消耗??
如何删除,你的意思是注释在外围_setup.c ??
Q2:我已经启用spi_flash_power_down,在DSPS_DEVICE项目中,我得到睡眠电流160ua,如果我禁用176ua,我没有看到很大的区别…
Q3:如你所说,如果在定制板上有其他泄漏,如何测量或发现泄漏
Q4:我使用了一些未使用的GPIO引脚作为测试点,这会不会造成泄漏??
Q5:在RFIOp匹配中,我们增加了1.2pf和3.9nh分立组件(在PI网络中,R3 -> 1.2pf, R4 -> open, R5 -> 3.9nh),这会造成什么问题吗??
Q6:在ext sleep模式下- i2c gpio很高,我得到了3v,这是一个问题吗?如果是,我能开低一点吗??