这DA14585和DA14586推荐用于新设计。
最灵活,功耗最低的蓝牙低能耗解决方案
DA14581集成电路是DA14580的优化版本,可以减少引导时间并支持多达8个连接。它有一个完全集成的无线电收发器和蓝牙®低能量基带处理器。它可以用作独立的应用程序处理器,也可以用作托管系统中的数据泵。
DA14581支持灵活的内存体系结构,用于存储蓝牙配置文件和定制应用程序代码,这些代码可以通过空中(OTA)进行更新。合格的蓝牙低功耗协议栈和HCI就绪软件存储在专用ROM中,所有软件通过一个简单的调度器运行在ARM®Cortex®-M0处理器上。
蓝牙低功耗固件包括L2CAP服务层协议、安全管理器(SM)、属性协议(ATT)、通用属性配置文件(GATT)和通用访问配置文件(GAP)。支持蓝牙SIG发布的所有配置文件以及自定义配置文件。该收发器直接与天线接口,完全符合蓝牙4.2标准。
DA14581拥有专用硬件,用于蓝牙低能耗链路层实现,以及用于增强连接能力的接口控制器。
生命周期状态
特性
蓝牙4.2
皮质M0应用处理器
电源0.9 - 3.6 V
单引脚射频输入输出
丰富的模拟和数字外设集
8个连接
优化的启动时间
支持软件升级过空中(OTA)
好处
基于同样出色DA14580的SoC
使用专用ROM,提供针对A4WP和HCI的优化
A4WP:
- 功率接收单元(PRU)快速启动时间
- PTU (Power Transmitting Unit) 8个连接
人机交互:
- 人机交互优化代码配合到OTP
- 这使客户/模块,以提供预编程的HCI设备/模块
亚博国际官网平台网址
无线充电(A4WP)
人机交互
包
WLCSP-34(2.5×2.5×0.5mm)的
QFN-40(5.0×5.0×0.9 MM)
超薄WLCSP-34(2.436 X 2.436 X0.334毫米)
停止开发工具包和参考设计
基于DA14581硬件开发套件 |
---|
DA14581 Development Kit - Pro |
DA14581
1年前
扩展睡眠模式禁用/重新启用
发布的AdamShier35分 15日回复你好,
我试图让我与DA14581 MOD板定制电路板延长休眠工作。设置如下:
该系统的最初配置extended_sleep而不OTP复制。唤醒是上的按钮中断,从而不会唤醒系统上第一压榨配置。一旦唤醒,休眠被禁用(使用arch_disable_sleep),所以我可以使用定时器0采样的传感器每100ms。然后extended_sleep意味着在7秒后重新启用来。
定义一段时间后(约3 - 4秒),系统似乎就决定它应该回到extended_sleep,尽管它从来没有被重新启用,并根据arch_get_sleep_mode睡眠模式(0)。当然timer0不再运行,所以传感器不再是被采样。
如果我将系统配置为不使用extended_sleep,那么一切都会按照预期工作。同样,这个带有extended_sleep的系统在运行RAM(使用KEIL调试)时工作得很好,但在使用flash时就不行了。
你知道是什么引起的吗?
谢谢
1年前
嗨AdamShier,
感谢您在网上提出的问题,以及您对我们的TINY模块解决方案的兴趣。让我为您最初的帖子更改设备选择,因为选择的是DA14581而不是DA14531 TINY模块。
如果我的理解有误,请纠正:模块配置为EXT Sleep模式,在系统初始化时使用OTP拷贝——user_app_init()回调——并且唤醒控制器也被启用,以便通过GPIO触发器唤醒系统。当芯片醒来时,请问是否也开始广告?是否调用user_app_adv_start()回调?
>>>在限定的时间(〜3-4秒)时间后,系统似乎只是决定它应该回到extended_sleep,尽管它已经是从来没有重新启用
那么,如果从System-RAM启动,在设备决定休眠后,可以在GPIO触发器后唤醒它吗?
能否请您检查是否有定时器就会“自动”休眠?其SDK您使用的是开发自己的应用程序的参考项目?
根据当前的消耗,当它冻结时,它看起来不是在extended_sleep模式,实际上仍然在活动模式,只是卡在某处。
是否有可能在调试模式下运行它,并检查代码是否会中断到断言,NMI等?
如果default_operation_adv = user_app_adv_start,那么DA4531将在系统初始化后自动开始发布。
谢谢,PM_Dialog
1年前
模块在ext_sleep_mode配置没有OTP拷贝,user_app_init被用作.app_on_init,并且唤醒控制器被配置为使用GPIO作为从按钮唤醒。当芯片醒来时,它不会开始做广告,因为我已经有意识地删除了那个方面。user_app_adv_start()回调函数只在某人按住按钮10秒时调用。
我可以用GPIO触发器第一次把它从睡眠中唤醒。一旦它醒来,它将在3-4秒后冻结,除非广告启用,在这种情况下一切都将正常工作。
在调试模式下运行的问题是,在调试模式下一切都能正常运行,但从flash中运行时就不行了。
我明白default_operation_adv = user_app_adv_start方面自动启动之初的广告。我只是不知道为什么,似乎改变的限定的时间间隔后渐冻,与预期工作条件的代码的行为。
就它所类似的基础项目而言,它将是睡眠模式的user_peripheral和proxy的组合。
1年前
如果我使用的,而不是设置定时器0作为计数器的app_easy_timer()的代码也能正常工作。我知道定时器0为扩展睡眠模式禁用,但唤醒时使用即时通讯arch_disable_sleep()的按钮,所以我不明白为什么这会成为一个问题。
当从按钮中醒来时,计时器被完全重新初始化/配置,所以它看起来是正常启动的,但一段时间后,代码就停止了。
编辑:这一次从按钮醒来到冻结是2.7秒,非常一致。它绝对没有休眠,运行电流从200uA上升到300uA当冻结发生。
1年前
嗨AdamShier,
你是对的——当设备处于睡眠状态时,timer0是关闭的,因为所有的外围模块都是关闭的。您可以使用app_easy_timer()定期唤醒,因为它使用BLE计时器。你能不能检查一下这个设备在广告间隙是否处于休眠状态?我
>>>在调试模式下运行的问题是,一切工作正常在调试模式,而不是从闪存中运行时。
当附加调试器时,这将防止系统进入任何睡眠模式。
您能解释一下您所说的设备在规定时间后冻结是什么意思吗?
由于是从flash引导的,所以可以使用arch_printf()在串行终端中打印一些调试信息。
谢谢,PM_Dialog
1年前
当使用闪光灯启动时,当我没有按下按钮或在广告之间时,设备肯定会进入睡眠状态,睡眠电流下降到~10uA。
我正在使用printf的顺序来确定,这是冻结。当按下按钮时,睡眠被禁用,定时器0开始,并产生一个中断每100ms。所有的中断处理程序是打印递增索引。该指数递增工程2.7秒,直到它只是停止,这就是我怎么知道它2.7秒后一直冻结。
1年前
这差不多解决了。我不知道为什么2.7秒后它会冻结,或者为什么当广告启用时它还能工作,但现在当我移除了
如果(arch_ble_ext_wakeup_get())在按钮按回调。我认为它在示例项目中,因为按钮开始广告,它只有在广告完成时评估为真。所以对于我的项目来说,它不存在是有意义的。
1年前
嗨AdamShier,
缺省情况下,WDOG超时时间大约是2.6秒,所以我假设WDOD定时器过期了。
你运行与调试代理连接?你也应该有开发调试启用 - CFG_DEVELOPMENT_DEBUG。
谢谢,PM_Dialog
1年前
嗨AdamShier,
你能定义WDOG并在调试模式下运行吗?如果以普通模式从System-RAM运行它(没有附加调试器),可以复制此行为吗?当附加调试器时,这会阻塞系统进入睡眠状态。
谢谢,PM_Dialog
1年前
所以我尝试启用看门狗,这似乎也解决了它,而不是删除在唤醒回调中对arch_ble_ext_wakeup_get的检查。我在这里为大家总结一下这些组合:
如果你有
如果(arch_ble_ext_wakeup_get())
{
arch_ble_force_wakeup ();
arch_ble_ext_wakeup_off ();
app_easy_wakeup();
}
你想要禁用睡眠一段时间,然后在稍后的时间点重新启用睡眠,那么看门狗必须被启用。否则在唤醒后代码会在看门狗超时后冻结,仍然不确定到底为什么。还有一种情况是,当广告启用时,它将在设备广告时工作,然后将再次冻结时,无限的广告,你不会看到这个问题。
7个月前
嗨AdamShier,
我目前正在努力解决类似的问题,围绕外睡眠,按钮唤醒和周期性读取传感器值。你是否愿意分享一些代码与更多的信息,如你如何进入睡眠,你如何配置按钮按下唤醒/回调,..?
谨致衷心的感谢和良好的祝愿。
约瑟夫
1年前
我设置了default_operation_adv = NULL,而不是像所有其他示例那样设置了user_app_adv_start。一旦把它放回user_app_adv_start,那么当广告运行时,它在flash中工作得很好。如果我等到广告完成后再按下按钮,它就会再次冻结。根据当前的消耗,当它冻结时,它看起来不是实际上在extended_sleep模式,实际上仍然在活动模式,只是停留在某处。
你知道为什么会这样吗?从我的角度来看,这一切都改变了,这是一开始的广告,而不是没有,但它的影响似乎不止于此。