大家好,
我使用Dialog的基础DA14583开发套件与触摸键I2C基于电容式接近传感器。
我的主要应用是感知接近变化(即触摸检测),并基于此共享少量数据字节更新广告包,该广告包被其他设备收集。
这个传感器有以下提到的特性
-它有一个额外的数据中断针除了基本的I2C通讯针在传感器方面理想地保持高。
- 传感器拉动数据中断引脚LOW每当数据已准备好,并即将在相应的I2C销到MCU发送。
我已连接的传感器的这个数据中断引脚,其被配置每当这个引脚变低,得到一个中断我的MCU GPIO引脚。
我已经以这样的方式,每当有一个proxomity变化(即,触摸检测)传感器将拉动数据中断引脚LOW,然后MCU可启动读操作中编程的传感器。此外,我已经编程在低功率模式中的传感器,使得其消耗更少的功率。
在我的应用程序中,人体运动检测的数据中断pin会中断单片机,根据读取的传感器值,我将更新广告包中的数据。
这种逻辑正常工作在Active模式,但是我的设备是电池供电的,我想实现扩展的休眠模式在此设备。
对于睡眠模式,我引用了“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唤醒设备,然后检查传感器数据,执行各自的操作更新广告包。
-之后,我发送设备在睡眠模式再次等待下一个中断。
现在,当我incorparate睡眠模式,我不能够得到从设备应有的反应,整个逻辑失败。在此我不能够得到适当的interuupts或正确的数据
因此,我也尝试了一些下面提到的对唤醒逻辑的修改
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();
我的问题是,是否睡眠aftects I2C数据通信,如果是的话我怎样才能解决这个问题?
对于MCU是否有最小的特定睡眠时间,也就是说如果我每30秒连续中断4到5次,那么睡眠模式就可以正常工作。
请帮我这个最早
感谢致敬
嗨Utkarash,
是的,睡眠模式对I2C通信的效果。当该装置处于任何的睡眠模式,所有的外围结构域(SPI。I2C,UART等)被断电。这意味着,当该装置处于延长休眠模式中,不可能有任何I2C活性。此外,请记住,如果在睡眠模式下配置的设备,那么它会进入广告和连接间隔之间休眠模式。
能否请你告诉我们,如果有使用DA14583的具体原因是什么?你有什么具体的要求?
如果你开始一个新的设计/工程,我们强烈建议先从DA14531和DA14585 / 586的产品和我们的最新SDK6.0.14雷电竞官网登录,因为它是更加提高。我们有很多的代码示例和改进的文档,以及还有软件路线图的支持。Ť这里是DA14580产品系列和SDK5没有软件路线图的支持。
请检查DA14531:
//www.wsdof.com/雷电竞官网登录products/connectivity/bluetooth-low-energy/products/da14531
我们也有一个DA14531模块,即DA14531 SmartBond TINY™模块!这是一个非常小的尺寸和极低功耗。按照下面的链接,找到数据表,对模块文档和硬件络:
//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
谢谢您的回复和建议,
抱歉,由于一些限制,我将不能改变对话框MCU或SDK在这种状态,
在设备的下一个版本,我会defiently参考,您新的MCU和SDK的建议,
但是我请求您帮助睡眠配置与curennt版本的SDK和MCU。
我曾告诉过我snipet为refered睡眠配置,以便你能请他们,让我知道我是否正确的代码?
此外refereing ble_app_sleep_mode例子后,我做的考虑延长休眠模式下保持DA14583限制睡眠配置。
我观察到了下面的行为。-
一旦我闪现的代码和重新启动它的设备是广告,几分钟后,如果我再次启动它,设备停止广告。
所以你能帮忙解决这个问题,为什么这个设备停止了广告有什么我错过了吗?
最早请帮助
感谢和问候
Utkarash
嗨Utkarash,
您是从SPI闪存还是系统ram启动?你能不能在调试模式下运行它,并检查它是否得到stauck (NMI, WDG,断言等)?
我想再次强调,当设备处于睡眠模式时,不可能有任何I2C活动。
谢谢,PM_Dialog
谢谢您的回复和建议,
您是从SPI闪存还是系统ram启动?- 我使用的SPI闪存启动,我用的构建过程,并使用智能片断的工具,我的文件转储到我的板后生成的hex文件。
你能不能在调试模式下运行它,并检查它是否得到stauck (NMI, WDG,断言等)?代码现在不会被NMI或WDG卡住,我之前提到的广告问题也解决了。
我想再次强调,当设备处于睡眠模式时,不可能有任何I2C活动。- 我完全理解在延长休眠是I2C犯规作品。然而,当我从睡梦中唤醒设备至少再I2C应该工作。另外,在参考该我问,我做了我的睡眠配置是否正确?即,
如前所述,
对于睡眠模式,我引用了“ble_app_sleep_mode”和“proxy_reporter”示例代码,并分别对代码进行了更改
- 在user_config.h文件
——唤醒
- 对于激活睡眠
现在,请检查这些语句,让我知道,如果我使用正确的代码在睡眠发送设备和将其唤醒?
等待您的回复。
感谢致敬
Utkarsh
嗨Utkarsh,
这似乎是正确的-你想停止广告并把设备进入永久睡眠模式吗?
什么是你在这个实现测量的功耗是多少?
请查看DA14580的睡眠模式教程,链接如下:
//www.wsdof.com/sites/default/files/training_04_sleep_mode_configurations.pdf
谢谢,PM_Dialog
谢谢您的回复和建议,
你想停止广告,并把设备进入永久睡眠模式吗?——不,我不想停止广告,也不想让设备永远处于睡眠状态。请检查下面提到的几点,了解我的设备应该在哪里睡觉,什么时候应该唤醒?
- 我唤醒设备时,有来自传感器更新中断的通告数据包和后5秒再次进入睡眠状态,等待下一个,直到中断从传感器接收。
这就是我需要睡眠来工作,如果你需要关于传感器和我的应用程序,请参考,我最初的职位了解。
什么是你在这个实现测量的功耗是多少?-我已经断开我的传感器和测量仅我在50至150微安(在该范围内的电流变化),这是不理想的我的情况下,我想这768,16不仅超过更多然后50MicroAmps的电流的范围正在逐渐MCU电流MCU。作为连接我的传感器后,它将再次Increase.Also同时测量电流i refered由你提出同样的教程。
请查看DA14580的睡眠模式教程,链接如下:——我已经refered本教程本身并实现了我跟你也分享我的睡眠逻辑。
除此之外,我还有一个问题,就是在实现睡眠的过程中,我发了一些帖子,发现下面提到了对话框的评论。
“此外,由于它是DA14583,如果闪存现在已经断电,那么消费将再次增加。
目前,以放置在掉电模式的SPI功能 - ()spi_flash_power_down - 在这种情况下,你将无法使用闪光灯进行交互,除非您指示SPI闪存上电。开始互动与闪光灯之前,您应该调用spi_flash_release_from_power_down()“。
现在,在我的情况还我使用DA14583所以我应该过问呢?
如是,然后,参照此评论我做这些更改我的代码,请检查它是否是正确的?
如果没有,那么应该忽略我的情况对此有何评论?
请在最早的帮助。
感谢和regrads
Utkarash
嗨Utkarsh,
您还可以在DA14583中使用- spi_flash_power_down() -以便关闭flash。这将减少当前在睡眠模式下的消耗。然后,当芯片醒来时,您应该调用-da14583_spi_flash_release() -将闪存从关机模式中释放。
>>>发送设备进入睡眠模式i呼叫spi_flash_power_down,例如之前,
我没有看到任何工作 - 你所呼叫的正确的API。
>>>虽然唤醒设备最多我再次relaese的spi_power_down模式中,例如,
请尝试使用da14583_spi_flash_release()而不是spi_flash_release_from_power_down()。
谢谢,PM_Dialog
谢谢您的回复和建议,
请尽量使用da14583_spi_flash_release()代替spi_flash_release_from_power_down().--谢谢你的建议,我会做出相应的变化。
感谢和问候