DA14585睡眠模式代码在OTP后卡住

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在Dialog主网站中。所有的帖子和账户都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程//www.xmece.com/support.我们将在未来几天修复漏洞/优化搜索和标签。
39个职位/ 0个新
最后发表
MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
DA14585睡眠模式代码在OTP后卡住

你好,对话小组,

我正在为我的项目使用一个自定义板。

这个项目有一个压力传感器,每30秒通过gpio发送曼彻斯特编码数据。我的对话芯片解码数据并将其加载到广告字符串中。我有一个电池为我的电路供电。我开启睡眠以节省电池寿命。

到目前为止,我已经完成了以下工作。因为我们正在开发定制硬件,所以我对示例(ble_app_sleepmode)程序做了如下更改。

1)根据我们在user_peri_setup .h中的原理图更改led端口和按钮引脚

2)在da1458x_config_advanced.h中将#define CFG_LP_CLK LP_CLK_XTAL32改为#define CFG_LP_CLK LP_CLK_RCX20,因为我们没有32Khz的外部晶体。

3)更改#define cfg_xtal16m_adaptive_settlement为#undef cfg_xtal16m_adaptive_settlement,因为点2。

4)在da1458x_config_advanced.h中#undef CFG_CODE_LOCATION_EXT和#定义CFG_CODE_LOCATION_OTP

我已经成功地调试了我的585devkit项目,它运行没有任何问题。我现在面临以下问题。由于我的调试会话正常运行,我已经计划执行OTP。在我做了OTP之后,程序没有运行很长一段时间。我想它跑了一会儿就停了。不知道为什么。

问候,

马克

设备:
MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
我附上了这个项目

我也附上了项目文件夹。

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨kuda,

嗨kuda,

谢谢你的问题。

>>>>我现在正面临以下问题。由于我的调试会话正常运行,我已经计划执行OTP。

你的意思是你有调试器?如果是,这将防止系统进入睡眠模式。您完全确定您的应用程序正在我们的DK中运行吗?

对于自定义板,您是否尝试在调试模式下运行应用程序?例如,您是否尝试将fw下载到系统内存中?

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

是的。我将代码下载到sys-RAM,它完美地工作,没有任何问题。

在我将代码下载到OTP之后,我断开了调试器。我把电池取下来又插回去。它只运行了几分钟就卡住了。

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨MarkDsylva_2277

嗨MarkDsylva_2277

您是否可以导出并共享您正在使用的OTP报头?

谢谢,PM_DIalog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

如何导出OTP报头?

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨MarkDsylva_2277

嗨MarkDsylva_2277

从SmartSnippets工具箱。您需要连接到OTP头并将其导出到文件。

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我读的时候有很多错误。

我正在附加日志。

问候,

马克

附件:
MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_dialog,

嗨PM_dialog,

我设法拿到了头球。它附着在这里。

问候,

马克

附件:
MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

请更新我的状态,因为我在等待你的回复,以进一步发展我的项目。

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

两个应用程序标志都被设置为“Yes”,这是正确的。你用的是什么套餐?WLCSP34, QFN40还是QFN48 ?我的OTP头你已经选择了QFN40。此外,时钟源被选择到外部晶体振荡器,但在最初的帖子中,您使用的是间隔RCX。你对OTP报头做了什么改变?你烧录了“设备和包”和“睡眠时钟源”还是默认配置?

在我将代码下载到OTP后,我断开了调试器。我把电池取下来又插回去。它只运行了几分钟就卡住了。

由于它运行了几分钟,这意味着设备从OTP正确引导。这个问题可能和软件有关。设备是否会做广告然后突然停止?您是否能够将其连接到对等设备?

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

你用的是什么包?WLCSP34, QFN40还是QFN48 ?我的OTP头你已经选择了QFN40。

是的,是QFN40。

---->此外,时钟源被选择到外部晶体振荡器,但在你最初的帖子中,你使用的是区间RCX。你对OTP报头做了什么改变?你烧录了“设备和包”和“睡眠时钟源”还是默认配置?

我有一个外部水晶连接。但是对于低功耗的晶体选择,我没有一个32Khz的外部晶体连接到我的对话芯片。所以我把它从#define CFG_LP_CLK LP_CLK_XTAL32改为#define CFG_LP_CLK LP_CLK_RCX20。我没有改变任何其他在头部。我只是将应用程序标志更改为Yes。

---->因为它运行了几分钟,这意味着设备从OTP正确引导。这个问题可能和软件有关。设备是否会做广告然后突然停止?您是否能够将其连接到对等设备?

该设备运行几分钟,当它从睡眠中醒来时就会停止。应用程序的运行时间变化很大。有时2分钟就停了,也可能要15分钟。由于我的项目只与广告相关,所以我没有将它与对等设备连接。如果问题与软件有关,为什么在调试时没有出现?

-------------------------------------------------------------------------------------------------------------------------

我最大的疑问是,如果应用程序中有一个bug,为什么它运行了一段时间后就停止了。

->我有一个移动应用程序,记录广告数据与系统时间。在我的项目中,广告的间隔是150ms, 5秒后广告停止。根据我的日志,芯片会在广告停止前的5秒内醒来并停止。

我还从你们网站上的一个在线教程中读到,下面这行应该从rwip.c中注释。如果不使用32Khz外部晶体

// DA14585/586不支持Boost模式+ RCX
if (GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 1)

ASSERT_WARNING (0);

我没有试着评论这一点,因为我身上没有多少筹码,因为我们因为Covid-19而被封锁了。我的代码在调试中连续运行了一个多星期。在我做了OTP之后,我开始面临一些问题。这件事非常紧急,请支持我。

------------------------------------------------------------------------------------

如果你能在某些方面指导我,那就更好了,因为我使用的是定制板,在做OTP后发现bug后,我根本不能浪费芯片。我的管理层会问我,你会为此浪费多少芯片?

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

你提到你在开发模式下测试了你的项目。请记住,当附加调试器时,这将防止系统进入睡眠模式。您曾经在没有调试器的情况下进行过测试吗?

您的问题与从睡眠模式中醒来有关。

例如,如果您将相同的FW下载到Sys-Ram(没有附加调试器)或SPI Flash中,是否运行正常?

关于OTP报头似乎是正确的。如果OTP头和OTP映像没有正确地烧掉,设备将无法启动!在您的示例中,DA14585正在正确引导并开始发布广告。

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

你提到你在开发模式下测试了你的项目。请记住,当附加调试器时,这将防止系统进入睡眠模式。您曾经在没有调试器的情况下进行过测试吗?

我尝试从keil启动调试会话,并通过按下相同的调试按钮来停止调试会话。代码没有运行。

正如我在上面的帖子中所说的,我认为代码在广告过程的中间某处挂起(即在广告间隔之间醒来和睡觉)。我的代码在user_sleepmode.c文件中,我在其中处理外部中断和数据解码。在我收到数据后,我启动广告并设置app_easy_timer为5秒....然后我停止广告。在这中间我什么都没有。我怎么检查代码挂在哪里?什么好主意吗?

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

所以这个问题与SW有关。让我们试着调查一下根本原因是什么。如果在带有调试器的自定义电路板上运行应用程序代码,它是否会在任何地方停止?如果是,你能分享一下卡在哪里的截图吗?看门狗是否开启或关闭?

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

- - - >没有。代码不会停在任何地方。它运行起来没有任何问题。

——>我已禁用看门狗。

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

你能在启用WDOG的情况下运行它吗?现在,如果您在调试模式下运行它,代码是否卡住了?请定义CFG_WDOG宏并再次运行它。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

另外,你们使用的SDk是什么?我无法在我们的SDK中构建提供的示例代码。

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我使用的SDK是6.0.12

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

我的建议是启用WDOG并在调试模式下运行代码。另外,请启用CFG_DEVELOPMENT_DEBUG标志。这允许您在发生硬故障或NMI时热附加调试器并获得调试信息。因此,启用这2个宏,在调试模式中破坏它时,它会卡住吗?此外,没有必要为了调试OTP -只需下载固件到系统内存通过Keil IDE。

同时,我会尝试在我们的开发板上运行附件中的项目。

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我照你说的做了。

我#定义了两个宏,并通过按下调试按钮上传代码,然后再次按下相同的按钮。代码又卡住了。

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

哪里会卡住?你能分享一下截图吗?

谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我已断开调试器。所以我不知道它卡在哪里了。

但是当我附带调试器运行时,代码正常运行。

----------------------------------------------------------------------

我有一个截止日期,明天完成项目,由于代码在广告间隔之间被卡在广告间隔之间,我正在考虑通过将false传递给arch_set_extended_sleep(false)和更改静态const sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON来删除otp复制睡眠…

这能暂时解决我的问题吗?

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

我已经运行了CFG_WDOG和CFG_DEVELOPMENT_DEBUG宏定义的附加项目。我正在研究QFN40子板和我们的新Pro-DK主板。为了使用板载按钮唤醒设备,我使用P1_1作为LED。

当在调试模式下运行代码时,它会卡在gpio.c文件下一行的GPIO_SetPinFunction()中。

__asm(“BKPT # 0 \ n”);//该密码之前没有被保留!

在user_peripheral _setup.c中,您将所有gpio配置为输入下拉。这并不需要,因为默认状态是INPUT_PULLDOWN。您可以很容易地阅读GPIOs寄存器来澄清它。此外,这个和平的代码重新配置所有的gpio,这是不推荐的。

另外,在user_sleepmode.c文件中,您使用的是一个从不保留的GPIO !

请在附件中找到我在你的代码中所做的修改的差异文件。有了这些修改,我可以在我们的dk中运行您的项目。

OTP代表一次性可编程,所以你应该确保你的项目完全运行之前,烧毁它!

在开发阶段,建议启用WDOG和开发调试,否则,如果代码卡在某处,您将永远不会收到此通知!总之,刻录OTP图像和OTP报头要求应用程序代码100%运行。否则,芯片将永远不会从OTP启动!

你们使用的DA14585的封装是什么?

谢谢,PM_Dialog

附件:
MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

好的。我会照你说的去做。

我正在使用QFN40包。

GPIO预留问题会导致代码在执行OTP之后挂起吗?

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
既然你在运行

因为您是在调试模式下运行项目,所以应该定义了CFG_DEVELOPMENT_DEBUG。这允许您模拟从OTP到System-RAM的OPT镜像。

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
我建议运行

我建议在DK中运行这个项目。它运行正常吗?

如果是,请使用自定义单板,将FW下载到System-RAM中。请确保OTP为空。100%有效吗?

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

我从你的skd中获取了一个新的睡眠模式示例副本,并试图将其下载到585子板的ram中。我没有修改任何代码中的任何内容。当我按下调试按钮并启动代码时,它立即停止在nmi_handler。你的示例代码在585子板中不做任何修改就能正常工作吗?

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,Mark,请下载

嗨,Mark,请先把fw下载到RAM中-现在工作了吗?

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,你能

Mark你好,你能告诉我你用的是哪个DK吗?哪个子板和哪个母板?是的,这个例子是正确的。

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
你好,

你好,

试剂盒为DA14580DevKT-P_VC

子板为DA14585。

问候

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,Mark,是的,ble_app

嗨,Mark,是的,ble_app_sleepmode在这个板上正确运行。我可以在我的侧面做手术。是否可以分享一张带有跳线配置的照片?

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
你好,

你好,

照片附呈。

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,刚刚测试了ble

嗨,Mark,刚刚在我们的DK上测试了ble_app_sleepmode的例子-我使用的是和你相同的DK和相同的跳线配置。你有多余的DK来测试吗?我建议在一个干净的SDK目录以及工作。另外,通过我昨天分享给你的修改,我可以在我们的DK中运行你的项目…您正在为DA14585构建项目吗?谢谢,PM_Dialog

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20
嗨PM_Dialog,

嗨PM_Dialog,

你有多余的DK来测试吗?

不。我没有。

我建议在一个干净的SDK目录以及工作。

我从6.0.12.1020.2.zip文件中提取sdk文件夹,打开ble_app_sleepmode项目,构建它并启动调试会话。我没有修改里面的任何东西。但我也面临着同样的问题。我附上了截图。

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,你能跑吗

嗨,马克,你能运行任何其他SDK项目吗?例如,ble_app_barebone。所有的SDK示例都运行在我们的dk中,并由SDK提供。在这个特定的设备中,你烧毁了OTP吗?

MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20

你好,

我不能运行任何ble的例子。我尝试了眨眼项目。它运行得很好。

问候,

马克

PM_Dialog
离线
最后看到:3个月3天前
工作人员
加入:2018-02-08 11:03
嗨,马克,

嗨,马克,

请查收附件我的跳线配置。所有BLE示例都按预期运行。对于ble_app_sleepmode,我可以使用附带的配置运行它。因此,请尝试将SDK解压缩到一个新文件夹中,并再次尝试。我建议有一个短的SDK路径-可能解压缩在C:\。如果不运行,可能是单板损坏。你在那个设备上写OTP了吗?

谢谢,PM_Dialog

附件:
MarkDsylva_2277
离线
最后看到:7个月2周前
加入:2019-06-19 04:20

嗨PM_Dialog,

我照你说的试过了。

1)我拿出了一个新的SDK副本,并在D盘中创建了一个文件夹。我没有修改任何东西就运行了sleepmode示例。一旦我开始调试会话,它就卡在nmi处理程序。

2)我连接智能片段工具并检查读取OTP内存。它只读0。

问候,

马克