DA14585的所有优点都具有更大的灵活性。
ISM14585-L35-P8提供最小、最低功耗和最集成的蓝牙®解决方案,最高可达8Mbit的Flash和可选的板上范围扩展放大器。
这个多功能模块非常适合将低能耗蓝牙添加到远程控制、邻近标签、信标、联网医疗设备和智亚博电竞菠菜能家庭节点等产品中,支持所有蓝牙开发,包括蓝牙5。它甚至有一个集成的麦克风输入语音命令支持。
ISM14585-L35-P8易于设计,并支持独立应用程序和托管应用程序。亚博国际官网平台网址它由Dialog的完整开发环境(包括SmartSnippets™软件)支持,以支持快速原型设计、大规模生产设计和优化功耗。
特性
DA14585 BLE5.0 SoC
集成8Mb SPI Flash板
集成SkyWorks PA在飞机上增加TX功率
集成16Mhz和32kHz振荡器
综合10 b ADC
综合电源管理单元
FCC、CE、IE认证完成
选择一个认证的嵌入式天线或认证的w.fl外部天线
1.8 - 3.6V工作电压
所有需要的无源元件
LGA封装6.0mm x 8.6mm x 1.2mm
亚博国际官网平台网址
物联网应亚博国际官网平台网址用
声控遥控器
键盘和鼠标
连接传感器
信号灯和标签
家庭自动化
连接的玩具
家用电器
相关链接
开发工具包和参考设计
iotcomboevk - 14585装备 |
DA14585
2个月前
在DA14585上从深度睡眠中醒来
发布的分别Michihiro挂川115点 8回答说你好,
我使用的是DA14585,我的申请是广播广告,也使用深度睡眠来节省电池消耗。
我已经将固件编程到OTP内存中,看看它是否进入深度睡眠和醒来,并再次开始广告。
不幸的是,它没有。
我正在寻找一些线索,解释为什么它没有再次开始做广告。
我正在使用Android的BLE Scanner应用程序接收广告。
当我的自定义板运行时,它接收到一个广告,在触发自定义板上的唤醒中断后,它不接收。
我已经从广告完整函数(user_app_adv_nonconn_complete()函数)调用该函数进入深度睡眠。
我已经定义了EXCLUDE_DLG_MSG(0)(用于发生唤醒回调)
我需要进一步的程序开始广告后,从深度睡眠醒来?
我将把我的代码放在下面。
在我的自定义板上没有XTAL32kHz,所以我已经定义了CFG_LP_CLK到LP_CLK_RCX20和未定义cfg_xtal16m_adaptive_settle
2个月前
嗨分别Michihiro挂川,
感谢您的在线问题和分享代码片段。
您提到设备是从OTP启动的。我看到CFG_DEVELOPMENT_DEBUG未定义,那么如何调试呢?你的设计中有SPI闪光灯吗?您可以编程SPI flash和检查DA14585唤醒。我也会在我这边测试一下,然后告诉你。
谢谢,PM_Dialog
2个月前
你好
谢谢您的回复。
是的,在将固件编程到OTP之后,它正在从OTP启动。
之后,我用Keil uVision通过我的项目的J-Link运行调试(对配置标志做了一些更改)。
我已经设置了OTP报头字段如下所示,我没有更改SWD启用标志字段(值是JTAG启用,与默认值相同),我认为这使我能够运行调试。
的名字 | 价值 |
---|---|
应用程序标记1 | 是的 |
应用程序标记2 | 是的 |
OTP DMA长度 | 166 c |
(OTP DMA Length字段的值设置为应用程序图像的大小除以4(十六进制格式)。)
我复制了原来的项目文件夹,并将其命名为[my_project_name]_for_test(这样我就可以保留原来的项目),并在复制的项目中更改了如下的配置标志以进行调试。
在src / user_config / da1458x_config_advanced.h
#定义CFG_DEVELOPMENT_DEBUG
在src / user_config / da1458x_config_basic.h
#undef CFG_PRODUCTION_DEBUG_OUTPUT #define CFG_CODE_LOCATION_EXT
然后我开始调试会话。
我已经将J-Link连接到我的自定义板上,使用SWD接口进行调试。
抱歉,我的设计中没有SPI闪光灯。
在查看我的程序时,我想知道在将系统置于深度睡眠模式之前调用app_easy_gap_non_connectable_advertise_get_active()函数是否会导致某种问题。
void user_app_adv_nonconn_complete(uint8_t status) {if (status == GAP_ERR_CANCELED) {struct gapm_start_advertise_cmd *cmd = app_easy_gap_non_connec_table_advertise_get_active ();
2个月前
你好,
而peripher_init()的代码片段
src / user_platform / user_periph_setup.c
Void peripher_init (Void) {....//设置pad功能set_pad_functions();//初始化I2C模块i2c_init(&i2c_cfg);....}
在深度睡眠之前添加void i2c_release(void)函数的函数调用会有区别吗?
wkupct_enable_irq()函数的恢复时间设置为0x3F (63ms)。
LP_CLK_RCX20设置为低功耗时钟。
这会在peripher_init()中(或之后)引起一些问题吗?
2个月前
嗨分别Michihiro挂川,
所以,实际的问题是设备不能从深度睡眠中唤醒使用唤醒控制器。另外,您使用P1_2作为叫醒针。
由于OTP是编程的,我建议编程一个干净的板(空OTP),并通过Keil IDE在调试模式下运行您的代码。当设备从System-RAM引导时,您是否能够复制此行为?例如,在唤醒回调中添加一个断点,断点是否命中?
如果定义了CFG_DEVELOPMENT_DEBUG宏,则可以模拟到System RAM的OTP镜像。
也许代码会堆栈到断言等等。
另外,当您试图通过P1_2唤醒设备时,DA14585是否重置或什么都不做?你能提供一个电源跟踪器吗?
谢谢,PM_Dialog
2个月前
你好PM_Dialog
感谢您的回复和关于如何调试的建议。
是的,我的问题是设备不能从深度睡眠中唤醒使用唤醒控制器。
是的,我用P1_2作为叫醒针。
我的项目文件的基础是empty_peripheral_template在projects/target_apps/template,
为了让系统进入深度睡眠模式,我在ble_app_sleepmode和prox_reporter中引用了projects/target_apps/ble_example中的过程。
我可能误解了你上面的评论“既然OTP是编程的,我建议编程一个干净的板(空的OTP)”。
您的意思是将固件编程到定义了“define CFG_DEVELOPMENT_DEBUG”(然后通过Keil IDE在调试模式下运行)的OTP中吗?
我有两个自定义板“此刻”,这两个已经被OTP编程。
除了这两个自定义板,我有一个干净的板(空的OTP) DA14585上,但这不是完全相同的自定义板。
对于这个板(它有空的OTP),我尝试通过Keil IDE运行调试,定义了CFG_DEVELOPMENT_DEBUG。
当我试图通过P1_2唤醒设备时,调用了app_easy_wakeup()函数,
static void app_resume_system_from_sleep(void) {if (GetBits16(SYS_STAT_REG, PER_IS_DOWN)) {pher_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 ();}}
但并没有触及唤醒回调的断点。它在main()函数中循环,没有断言。(代码不会陷入断言中。)
配置标志如下
#define CFG_DEVELOPMENT_DEBUG #undef CFG_CODE_LOCATION_EXT #define CFG_CODE_LOCATION_OTP
通过功率跟踪,我将其理解为The power measurement of The SmartSnippets Tools > power Profiler,或通过某种测量工具来测量电流。
我恐怕不能提供功率跟踪,因为我既没有DKs也没有测量低电流的测量工具。
2个月前
当我用注释掉的arch_set_deep_sleep()函数启动调试会话时,它不会进入深度睡眠,但它将在唤醒中断后重新启动广告(在我的情况下从GPIO中唤醒)。
src / user_app / user_deep_sleep.c
下面是我的代码片段的固件,被编程到OTP。(SDK版本为6.0.14.114)
src / user_app / user_deep_sleep.h
src / user_app / user_deep_sleep.c
src / user_platform / user_periph_setup.h
src / user_platform / user_periph_setup.c
src / user_app / user_name_of_my_project.c
src / user_config / user_modules_config.h
src / user_config / da1458x_config_advanced.h
src / user_config / da1458x_config_basic.h