DA14583的睡眠配置

了解更多常见问题教程

9个帖子/ 0个新帖子
最后发表
Utkarash
离线
最后看到:3个月前
加入:2019-01-18 06:36
DA14583的睡眠配置

你好所有的,

我使用对话框的DA14583基于开发工具包与基于I2C电容接近传感器与触摸键。

我的主要应用是感知接近变化(即触摸检测),并基于此共享少量数据字节更新广告包,该广告包被其他设备收集。

这个传感器有以下提到的特性
-它有一个额外的数据中断针除了基本的I2C通讯针在传感器方面理想地保持高。
-传感器拉低数据中断引脚,每当数据准备好,并即将发送它通过各自的I2C引脚到MCU。

我已经把这个传感器的数据中断引脚连接到我的MCU GPIO引脚上,它被配置为每当这个引脚低的时候就会中断。

我已经编程的传感器,以这样的方式,每当有一个proxomity变化(即,触摸检测),传感器将拉数据中断pin低,然后MCU可以开始读取操作。我还把传感器设定在低功耗模式,这样它消耗的电量就少了。

在我的应用程序中,人体运动检测的数据中断pin会中断单片机,根据读取的传感器值,我将更新广告包中的数据。

这个逻辑在主动模式下工作正常,但是我的设备是电池操作的,我想在这个设备上实现扩展的睡眠模式。

对于睡眠模式,我引用了“ble_app_sleep_mode”和“proxy_reporter”示例代码,并分别对代码进行了更改
-在user_config.h文件中

app_default_sleep_mode = ARCH_EXT_SLEEP_ON

——唤醒

arch_disable_sleep ();if (GetBits16(SYS_STAT_REG, PER_IS_DOWN)){外围init();} if (arch_ble_ext_wakeup_get()) {arch_set_sleep_mode(app_default_sleep_mode);arch_ble_force_wakeup ();arch_ble_ext_wakeup_off ();app_easy_wakeup ();}

-激活睡眠

arch_set_sleep_mode (ARCH_EXT_SLEEP_ON);

为了延长电池寿命,我改变了应用程序如下:
-首先我做各自的传感器配置和MCU配置,然后我发送MCU在睡眠模式。
-使用数据中断pin唤醒设备,然后检查传感器数据,执行各自的操作更新广告包。
-之后,我发送设备在睡眠模式再次等待下一个中断。

现在,当我不协调睡眠模式,我不能从设备得到适当的响应,整个逻辑失败,我不能得到适当的中断或适当的数据
因此,我也尝试了一些下面提到的对唤醒逻辑的修改

arch_disable_sleep ();if (GetBits16(SYS_STAT_REG, PER_IS_DOWN)){外围init();} if (arch_ble_ext_wakeup_get()) {arch_set_sleep_mode(app_default_sleep_mode);arch_ble_force_wakeup ();arch_ble_ext_wakeup_off ();app_easy_wakeup ();} i2c_init ();

我的问题是睡眠是否影响I2C数据通信,如果影响,我该如何解决?

对于MCU是否有最小的特定睡眠时间,也就是说如果我每30秒连续中断4到5次,那么睡眠模式就可以正常工作。

请尽快帮助我

感谢和问候

设备:
PM_Dialog
离线
最后看到:7小时13分钟前
工作人员
加入:2018-02-08 11:03
嗨Utkarash,

嗨Utkarash,

是的,睡眠模式对I2C通信有影响。当设备处于任何睡眠模式时,所有外设域(SPI)。I2C, UART等)关闭。这意味着当设备处于延长睡眠模式时,它不可能有任何I2C活动。此外,请记住,如果设备配置在睡眠模式,那么它将进入睡眠模式之间的广告和连接间隔。

请问使用DA14583有什么具体的原因吗?你有什么特别的要求吗?

如果您正在开始一个新的设计/项目,我们强烈建议您从DA14531或DA14585/586产品和我们最新的SDK6.0.14开始雷电竞官网登录,因为它有了很大的改进。我们有很多代码示例和改进的文档,还有软件路线图支持。T这里没有对DA14580产品家族和SDK5的软件路线图支持。

请查看DA14531:

//www.wsdof.com/雷电竞官网登录products/connectivity/bluetooth-low-energy/products/da14531

我们还有一个DA14531模块,即DA14531 SmartBond TINY™模块!它有非常小的尺寸和非常低的功率。点击下面的链接可以找到模块的数据表、文档和HW担保:

//www.wsdof.com/雷电竞官网登录products/bluetooth-module-da14531-smartbond-tiny

还有一些参考设计,可以帮助您缩短开发阶段,因为您不需要在开发应用程序代码上花费太多时间。

CodeLes

无代码允许您使用一组AT命令快速启动无线物联网应用程序。雷竞技安卓下载命令平台上的无代码允许通过BLE控制本地UART连接的设备以及远程设备。您可以创建简单的演示/应用程序/概念证明,而无需进行任何代码雷竞技安卓下载开发或在上面构建您自己的应用程序!

//www.wsdof.com/雷电竞官网登录products/smartbond-codeless-commands

对话串口服务(DSPS)

dsp模拟串行电缆通信。它提供了一个简单的替代RS-232连接,包括熟悉的软件流控制逻辑通过蓝牙低能量。SPS软件分发包括应用程序和概要文件源代码,并支持GAP中心/外围角色。

//www.wsdof.com/雷电竞官网登录products/dialog-serial-port-service-dsps

对于DA14531,有一个完整的SW示例用于读取I2C接口并通过BLE通知将值发送到对等设备。你可以拿它作为参考!

DA14531-DA14585-586读数I2C加速计BLE

谢谢。PM_Dialog

Utkarash
离线
最后看到:3个月前
加入:2019-01-18 06:36
谢谢你的回复

感谢您的回复和建议,

抱歉,由于一些限制,我将不能改变对话框MCU或SDK在这种状态,

在下一个版本的设备中,我将不顾一切地回复你关于新MCU和SDK的建议,

但是我请求您帮助睡眠配置与curennt版本的SDK和MCU。

我已经分享了我参考的睡眠配置的代码片段,所以你能检查一下,让我知道我是否正确吗?

同样,在引用ble_app_sleep_mode示例后,我在考虑DA14583限制的情况下对扩展睡眠模式进行了睡眠配置。

我观察到了下面的行为。-

一旦我闪现的代码和重新启动它的设备是广告,几分钟后,如果我再次启动它,设备停止广告。

所以你能帮忙解决这个问题,为什么这个设备停止了广告有什么我错过了吗?

请尽快帮忙

感谢和问候

Utkarash

PM_Dialog
离线
最后看到:7小时13分钟前
工作人员
加入:2018-02-08 11:03
嗨Utkarash,

嗨Utkarash,

您是从SPI闪存还是系统ram启动?你能不能在调试模式下运行它,并检查它是否得到stauck (NMI, WDG,断言等)?

我想再次强调,当设备处于睡眠模式时,不可能有任何I2C活动。

谢谢,PM_Dialog

Utkarash
离线
最后看到:3个月前
加入:2019-01-18 06:36

感谢您的回复和建议,

您是从SPI闪存还是系统ram启动?——我使用SPI Flash启动,我使用十六进制文件后生成的构建过程,并使用智能代码片段工具,我转储文件到我的板。

你能不能在调试模式下运行它,并检查它是否得到stauck (NMI, WDG,断言等)?代码现在不会被NMI或WDG卡住,我之前提到的广告问题也解决了。

我想再次强调,当设备处于睡眠模式时,不可能有任何I2C活动。——我完全理解I2C在长时间睡眠中不起作用。然而,当我从睡眠中唤醒设备时,至少I2C应该工作。另外,关于这一点,我问我的睡眠配置,我做的是正确的吗?也就是说,

如前所述,

对于睡眠模式,我引用了“ble_app_sleep_mode”和“proxy_reporter”示例代码,并分别对代码进行了更改
-在user_config.h文件中

app_default_sleep_mode = ARCH_EXT_SLEEP_ON

——唤醒

arch_disable_sleep ();if (GetBits16(SYS_STAT_REG, PER_IS_DOWN)){外围init();} if (arch_ble_ext_wakeup_get()) {arch_set_sleep_mode(app_default_sleep_mode);arch_ble_force_wakeup ();arch_ble_ext_wakeup_off ();app_easy_wakeup ();}

-激活睡眠

arch_set_sleep_mode (ARCH_EXT_SLEEP_ON);

现在请检查这些语句,让我知道我是否使用了正确的代码发送设备在睡眠和唤醒它?

等待您的回复。

感谢和问候

Utkarsh

PM_Dialog
离线
最后看到:7小时13分钟前
工作人员
加入:2018-02-08 11:03
嗨Utkarsh,

嗨Utkarsh,

这似乎是正确的-你想停止广告并把设备进入永久睡眠模式吗?

您在这个实现中测量的功耗是多少?

请查看DA14580的睡眠模式教程,链接如下:

//www.wsdof.com/sites/default/files/training_04_sleep_mode_configurations.pdf

谢谢,PM_Dialog

Utkarash
离线
最后看到:3个月前
加入:2019-01-18 06:36
谢谢你的回复

感谢您的回复和建议,

你想停止广告,并把设备进入永久睡眠模式吗?——不,我不想停止广告,也不想让设备永远处于睡眠状态。请检查下面提到的几点,了解我的设备应该在哪里睡觉,什么时候应该唤醒?

-我唤醒设备时,有一个中断从传感器更新广告包,5秒后再次去睡觉,直到下一个中断收到传感器。

这是我如何需要睡眠工作,如果你需要了解关于传感器和我的申请,请refere我最初的帖子。

您在这个实现中测量的功耗是多少?--我已经断开了我的传感器,只测量了单片机的电流,我得到的范围在50到150微安(电流在这个范围内变化),这对我的情况不是理想的,我想要的电流不超过50微安,只有单片机。在连接传感器后,它会再次增加。另外,在测量电流时,我参考了你建议的同一教程。

请查看DA14580的睡眠模式教程,链接如下:——我参考了本教程本身,并实现了我的睡眠逻辑,我也已经和你们分享了。

除此之外,我还有一个问题,就是在实现睡眠的过程中,我发了一些帖子,发现下面提到了对话框的评论。

此外,由于它是DA14583,如果闪存现在关机,那么消耗将再次增加。
有一个函数可以将SPI置于电源关闭模式——spi_flash_power_down()——在这种情况下,您将无法与flash交互,除非您指示SPI flash电源打开。在开始与flash交互之前,您应该调用spi_flash_release_from_power_down()。”

在我的例子中,我也使用DA14583,所以我应该为此烦恼吗?

如果是的,那么关于这个评论,我在我的代码中做了这些改变,请检查是否正确?

  • 例如,在将设备发送到睡眠模式之前,我调用了spi_flash_power_down,
spi_flash_power_down ();arch_set_sleep_mode (ARCH_EXT_SLEEP_ON);
  • 在唤醒设备时,我再次切换到spi_power_down模式,例如,
arch_disable_sleep ();spi_flash_release_from_power_down ();if (GetBits16(SYS_STAT_REG, PER_IS_DOWN)){外围init();} if (arch_ble_ext_wakeup_get()) {arch_set_sleep_mode(app_default_sleep_mode);arch_ble_force_wakeup ();arch_ble_ext_wakeup_off ();app_easy_wakeup ();}

如果没有,那么应该忽略这个评论在我的情况下吗?

请尽快帮忙。

感谢和独立

Utkarash

PM_Dialog
离线
最后看到:7小时13分钟前
工作人员
加入:2018-02-08 11:03
嗨Utkarsh,

嗨Utkarsh,

您还可以在DA14583中使用- spi_flash_power_down() -以便关闭flash。这将减少当前在睡眠模式下的消耗。然后,当芯片醒来时,您应该调用-da14583_spi_flash_release() -将闪存从关机模式中释放。

例如,在将设备发送到睡眠模式之前,我调用了spi_flash_power_down,

我没有看到任何工作-你调用的api是正确的。

当唤醒设备时,我再次切换到spi_power_down模式,例如,

请尝试使用da14583_spi_flash_release()而不是spi_flash_release_from_power_down()。

谢谢,PM_Dialog

Utkarash
离线
最后看到:3个月前
加入:2019-01-18 06:36
谢谢你的回复

感谢您的回复和建议,

请尝试使用da14583_spi_flash_release()而不是spi_flash_release_from_power_down()谢谢你的建议,我会做相应的修改。

感谢和问候