嗨,对话小组
我使用自己的自定义,电池操作,巴克模式,Da14580与需求方与外部flash设备项目,添加i2c司机(SDA sci,打开注册- 10 k与VBAT3v),一旦数据发送到主保佑设备,扩展dsp设备断开和进入睡眠,我已经用数字万用表(DMM)检查了功耗,
广告- 512ua,
连接,数据xt-776ua
睡眠- 322ua,
我已经测试了相同的DSPS设备项目与Murata P2ML 3656 - Murata LBCA2HNZYZ) - Type ZY Dev Board,与DMM和功率分析器(没有i2c驱动,静态数据)
广告-240ua,
连接,数据xt - 537ua
睡眠- 110ua,
我也用Dialog IOT da14583测试了相同的设置
广告- 250ua,
连接,数据xt - 313 - 512 ua
睡眠-227 ua,我得到。。。
为什么我不能得到1.3u安培或附近??请帮我解决这个问题??
谢谢对话团队
设备:
嗨prasanth,
DSPS项目永远不会陷入永久的睡眠,它总是保持广告或保持连接,并在连接间隔或广告间隔之间睡眠。所以,如果你在固件上设置设备处于永久休眠状态,并且设置了休眠功能,那么你应该会看到一个接近1.3uA的值。额外的功耗可能是由您的板上的其他设备(我假设板上有一个I2C内存,所以额外的功耗可能来自该设备)或泄漏在您的板上。你提到的这些值,我认为它们是你仪器测量的平均值。关于如何正确测量睡眠期间的功耗,请查看教程4:配置睡眠模式的文档选项卡。
谢谢你的对话
在DSPS设备项目中,一旦数据发送到Master完成,我们将DSPS设备放置5分钟睡眠,我可以看到5分钟内设备没有广告,5分钟后只有DSPS设备在广告。所以睡眠正常运转,不是吗?
i2c驱动用于温湿度传感器,环境光传感器。
正如您所说,如果硬件出现问题,为什么在DA14583物联网套件中我也会得到相同的结果(通过将万用表连接到智能波段物联网板的开/关开关,电池端ti万用表正极,ckt端到万用表com)
谢谢你的对话框
嗨,对话
PFA。能量分析器图
谢谢你!
嗨prasanth,
从功率分析器我可以看到设备在睡觉和醒来,所以是的,设备应该在睡觉,因为你的板上有传感器,你的传感器消耗额外的功率,不仅580消耗功率。至于物联网,因为它也有额外的传感器,当设备休眠时,你无法获得约1.4uA的电流,消耗约11uA。
谢谢你的对话
你好,
你需要切断闪光灯的电源以减少电流消耗。
嗨Wisilica
谢谢你的回复。
那么DA14583物联网智能Bond套件将如何提供11ua,也使用“cut off spi supply”配置。请告诉我更多的细节。
I2c传感器有10k上拉,会不会有问题??...如何解决这些问题?
非常感谢。
嗨,对话
https://support.dialog-semiconductor.com/issues-external-spi-flash
如上所述,辅助引导加载程序会修复这个问题吗(DA14580) ??
非常感谢。
嗨prasanth,
IoT在未使用闪存时将其设置为低功耗模式(它仍然消耗一些电源,但没有完全正常工作时消耗的那么多),它还将其他传感器设置为低功耗模式,您可以在spi_flash.c文件中检查spi_flash_power_down()函数。如上所述,您必须检查系统上的其他模块是否消耗额外的电源。
关于你贴在上面的帖子是否能解决你的问题,你确定你的定制设备消耗的额外能量来自外部闪光灯吗?二级引导装载程序的原因是,如果你关闭闪光灯,你想重置装置在ROM引导装载程序没有醒来flash的能力,这在二级引导装载程序掌权的flash, 580年将会正常启动了。所以检查一下这些额外的能量消耗来自哪里(内存,传感器等)。
谢谢你的对话
嗨,对话
如何在DSPS设备项目(DA14580和DA14583)中使用spi_flash_power_down(),是否有样本项目或文档?
PFA的外部外设在我的定制板,我使用这个电池水平监测也在DSPS,
我有两个自定义板,一个与DA14580BLE,另一个与DA14583,如果SPI flash绘制更多的功率,为什么两个自定义板的电流消耗几乎相同?带有DA14583的定制板应该显示较少,对吗?
嗨prasanth,
由于DSPS示例不使用闪存,因此没有示例,但使用闪存开发的参考设计具有此功能,您只需调用上面提到的功能,以便关闭闪存,如信标,该功能的实现位于spi_flash.c驱动程序中。
我不能预见为什么在你的板上有额外的电流,因为这取决于相当多的因素,你将不得不检查一个一个增加你的功耗,检查额外的设备。583年嵌入式flash和你提到580年外部闪光灯,所以我想,如果你不闪了你会得到类似的功耗,正如我前面提到的flash在583年需要关闭,如果这是个问题。
谢谢你的对话
嗨,对话
https://wenku.baidu.com/view/20871b8127d3240c8547efd2.html
我已经按照上面的链接在DSPS设备中使用spi_flash_power_down(),但不工作,。。。
从灯塔项目,每个读/写操作后spi_flash_power_down()调用,但在需求方设备项目我不做任何读/写SPI Flash,那么到底从哪个函数我必须调用此spi_flash_power_down(),这将是有意义的。
比你
嗨prasanth,
我提到了flash掉电命令,是为了向flash发送这类命令,以检查flash是否消耗了您在板上看到的额外电源。所以你可以调用它来检查消耗量是否会下降,如果你看不到任何影响,那么其他东西正在消耗额外的电流。
谢谢你的对话
即使在调用spi_flash_power_down()时,我们也没有看到电源下降。必须通过gpio控制闪光电源,并关闭闪光电源。
嗨,对话
问1。在我们的定制板DA14580——与外部闪光灯,我已经删除了所有引体向上(10 k),注册和测试,我能不能通过SmartSnippets flash /擦除SPI内存,如果我把在CS销引体向上,这是工作,但在灯塔和智能标记的设计我没有看到任何在CS销拔起吗? ?
谢谢你的对话框
嗨prasanth,
如果这是你的问题,在CS的信标或智能标签或任何开发套件上都没有拉升。一个大胆的猜测,也许是其他一些东西也在驱动CS线,也许是自定义板上的电气问题,导致在您的SPI线上产生噪声?
谢谢你的对话
嗨,对话
谢谢对话,现在我可以不用上拉寄存器使用SPI闪存了。
在DSPS设备项目中
如果我在“user_periph_setup.c”中的periph_init()内调用spi_flash_power_down(),我刷新了这段代码,我的设备在一段时间后不会发布广告,同样在这之后,在擦除spi flash时我面临错误,在IOT项目中,读取/写入配置参数时调用spi_flash_power_down(),但在DSP中如何使用此API?
谢谢你的对话框
嗨prasanth,
periph_init()是一个在每次唤醒设备时执行的函数,如果在某一点之后设备暂停或出现错误,您必须通过调试检查实际原因。无论如何,没有适当的点,您将关闭闪存的电源,该功能应在与闪存接口后立即调用,例如在读取或写入数据后(如物联网使用)。现在,如果由于某种原因,当DSP运行时闪存通电,您可以调用app_on_init()回调中的函数,这应该可以。
谢谢你的对话
嗨,对话
正如您所建议的,我正在调用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.pin=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_闪烁_断电();
}
但我在下次睡觉时仍然会得到235ua
作为menitone din智能标签项目,我已经更改了user\u periph\u setup.c
#如果DEVELOPMENT_DEBUG
空白GPIO_reservations(空白)
{
/*
*全球GPIOs预留
*/
/*
*应用程序特定的gpio预订。仅在开发模式下使用(#if DEVELOPMENT_DEBUG)
即
Reserve_gpio (descriptive_name, gpio_port_0, gpio_pin_1, pid_gpio);//保留P_01作为通用I/O
*/
//预留GPIO(UART1\U TX、GPIO\U UART1\U TX\U端口、GPIO\U UART1\U TX\U引脚、PID\U UART1\U TX);
// reserve_gpio (uart1_rx, gpio_uart1_rx_port, gpio_uart1_rx_pin, pid_uart1_rx);
Reserve_gpio (i2c_scl, i2c_gpio_port, i2c_scl_pin, pid_i2c_scl);/ /副总裁
Reserve_gpio (i2c_sda, i2c_gpio_port, i2c_sda_pin, pid_i2c_sda);/ /副总裁
Reserve_gpio (led_port, gpio_port_1, gpio_pin_1, pid_gpio);
Reserve_gpio (spi_cs, spi_gpio_port, spi_cs_pin, pid_spi_en);
预留GPIO(SPI时钟、SPI时钟端口、SPI时钟引脚、PID时钟);
spe_gpio (spi_do, spi_gpio_port, spi_do_pin, pid_spi_do);
预留GPIO(SPI_DI、SPI_GPIO_端口、SPI_DI_引脚、PID_SPI_DI);
/*
#如果(UART硬件流量已启用)
Reserve_gpio (uart1_rts, gpio_uart1_rts_port, gpio_uart1_rts_pin, pid_uart1_rtsn);
Reserve_gpio (uart1_cts, gpio_uart1_cts_port, gpio_uart1_cts_pin, pid_uart1_ctsn);
# endif
# ifdef CFG_PRINTF_UART2
预留GPIO(UART2_-TX、GPIO_-UART2_-TX_端口、GPIO_-UART2_-TX_引脚、PID_-UART2_-TX);
预留GPIO(UART2\U RX、GPIO\U UART2\U RX\U端口、GPIO\U UART2\U RX\U引脚、PID\U UART1\U RX);
# endif
*/
}
# endif / / DEVELOPMENT_DEBUG
/**
****************************************************************************************
* @brief映射端口引脚
*
*Uart和SPI端口引脚以及GPIO端口已映射
****************************************************************************************
*/
void set\u pad\u函数(void)//设置gpio端口函数模式
{
/*
*配置应用端口。
即
GPIO_配置引脚(GPIO_端口0,GPIO_引脚1,输出,PID_GPIO,假);//将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_配置引脚(I2C_GPIO_端口,I2C_SDA_引脚,输入,PID_I2C_SDA,真);//副总裁
// gpio_configurein (GPIO_UART1_TX_PORT, GPIO_UART1_TX_PIN, OUTPUT, PID_UART1_TX, false); // gpio_configurein (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_配置引脚(SPI_GPIO_端口、SPI_CS_引脚、输出、PID_SPI_EN、真);
GPIO_配置引脚(SPI_GPIO_端口、SPI_时钟引脚、输出、PID_SPI_时钟、假);
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硬件流量已启用)
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_configurein (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闪存的cs引脚上拉。
我在开发板上检查了相同的项目,仍然是230uAmps,所以我不认为硬件泄漏导致了电流消耗
可能有什么问题…………还有什么其他选择
谢谢你!
嗨prasanth,
所以你已经测试了设备,基本上没有闪存和额外的I2C组件,你有你的定制板和你的fw仍然消耗约230uA。没有明显的原因,我的意思是,如果设备是清醒的时候,你正在测量的功耗应该远远高于230uA。没有设备连接在580(存储设备,I2C传感器等),我能想到的唯一方法可能是通过UART引脚的某种泄漏,虽然我不能看到任何类似的DSPS参考设计,您是否尝试删除UART连接并检查这是否降低了您当前的消费。
谢谢你的对话
嗨Dilaog团队
谢谢你的回复…
您是否尝试删除UART连接并检查这是否降低了您当前的消费??
问题1:如何删除,你是说在periph_setup.c中添加注释??
Q2:我已经启用了spi_flash_power_down,在DSPS_DEVICE项目中,我得到的睡眠电流是160ua,如果我禁用了176ua,我没有看到很大的差异…
问题3:正如您所说,如果定制板中存在其他泄漏,如何测量或查找泄漏
我使用了一些未使用的GPIO引脚作为测试点,会不会造成泄漏??
问题5:在用于匹配的RFIOp中,我们添加了1.2pf和3.9nh离散组件(在PI网络中,R3->1.2pf,R4->open,R5->3.9nh),这会导致任何问题吗??
问题6:在ext睡眠模式下-i2c gpio很高,我得到3v,这是一个问题吗?如果是,我能开低一点吗??