DA14585休眠模式代码在OTP后被卡住

了解更多常见问题解答教程

39个职位/0个新职位
最后一篇
马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
DA14585休眠模式代码在OTP后被卡住

你好,对话小组,

我正在为我的项目使用定制板。

这个项目有一个压力传感器,通过gpio每30秒发送一次曼彻斯特编码的数据。我的对话芯片解码的数据和加载到广告字符串。我有一个电池,用来给我的电路通电。我正在启用睡眠以节省电池寿命。

到目前为止,我已经做了以下工作。由于我们正在开发自定义硬件,我对示例(ble\u app\u sleepmode)程序做了如下更改。

1)根据我们的user_periph_setup.h中的原理图改变了LED端口和按钮引脚

2)将#define cfg_lp_clk lp_clk_xxtal32更改为#define cfg_lp_clk lp_clk_rcx20在da1458x_config_advanced.h中,因为我们没有32khz外部水晶。

3) 由于第2点,将#define CFG_XTAL16M_ADAPTIVE_setting更改为#undef CFG_XTAL16M_ADAPTIVE_setting。

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

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

当做,

作记号

设备:
马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
我附上该项目

我附加的项目文件夹也。

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,库达,

你好,库达,

谢谢你的问题。

>>>>我现在面临以下问题。因为我的调试会话运行正常,所以我计划执行OTP。

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

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

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

对。我把代码下载到sys-RAM,它运行得很好,没有任何问题。

在向OTP下载代码后,我断开了调试器。我卸下了电池并将其插入。它运行几分钟,然后陷入困境。

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,MarkDsylva\u 2277

你好,MarkDsylva\u 2277

您能导出并共享您正在使用的OTP头文件吗?

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

如何导出OTP标题?

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,MarkDsylva\u 2277

你好,MarkDsylva\u 2277

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

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

读书时我会得到很多错误。

我正在附加日志。

当做,

作记号

附件:
马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨pm_dialog,

嗨pm_dialog,

我设法得到了标题。它附在这里。

当做,

作记号

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

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

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

两个应用程序标志都设置为“是”,这是正确的。你用的是什么包装?WLCSP34、QFN40或QFN48?I您选择的QFN40的OTP头。此外,时钟源被选为外部晶体振荡器,但在您的初始岗位上,您使用的是间隔RCX。你在OTP标题中做了哪些更改?您是否烧毁了“设备和包”和“睡眠时钟源”或它是默认配置?

>>>将代码下载到OTP后,我断开了调试器的连接。我把电池取下来插回去。它跑了几分钟就卡住了。

因为它运行了几分钟,这意味着设备从OTP正确引导。问题可能与软件有关。设备是否会突然停止?您能将其与对等设备连接吗?

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

--->你用的是什么包装?WLCSP34、QFN40或QFN48?I您选择的QFN40的OTP头。

是的,是QFN40。

---->此外,时钟源被选为外部晶体振荡器,但在您的初始岗位上,您使用的是间隔RCX。你在OTP标题中做了哪些更改?您是否烧毁了“设备和包”和“睡眠时钟源”或它是默认配置?

我有一个外部水晶连接。但对于低功耗晶体选择我没有一个32Khz的外部晶体连接到我的对话芯片。所以我把它从define CFG LP CLK LP CLK XTAL32改成define CFG LP CLK LP CLK RCX20。我没有改变标题中的任何内容。我只将应用程序标志更改为“是”。

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

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

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

- >我最大的疑问是,如果应用程序中有一个错误,为什么它运行一段时间,然后停止。

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

- >我还从您的网站上的在线教程读取,应从RWIP.c.中评论以下行。如果不使用32kHz外部乳房

// DA14585 / 586不支持Boost Mode + RCX
if(getBits16(ANA_Status_reg,Boost_selected)== 1)

断言警告(0);

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

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

如果你能在某些方面指导我会更好,因为我使用的是定制板,我只是不能浪费芯片后发现错误后,做了OTP。我的经理会问我,你会为此浪费多少芯片?。

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

您提到您在开发模式下测试了您的项目。请记住,连接调试器时,这会阻止系统进入睡眠模式。您是否曾经在没有附加调试程序的情况下进行过测试?

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

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

关于OTP标题似乎是正确的。如果OTP头和OTP映像未正确烧录,设备将无法启动!在您的情况下,DA14585正确引导并开始发布广告。

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

--->您提到您在开发模式下测试了您的项目。请记住,当附加调试器时,这可以防止系统进入睡眠模式。你有没有附上调试器的测试?

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

正如我在上面的帖子中所说,我认为代码挂在广告过程中间的某处(即在广告间隔之间醒来和睡觉)。我的代码位于user_sleepmode.c文件中,在那里我正在处理外部中断和数据解码。收到数据后,我启动广告并设置APP_EASY_TIMER 5秒钟......之后我停止广告。在我之间,我没有任何东西。我怎么检查代码挂起的地方?有任何想法吗?

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

所以这个问题和软件有关。让我们试着调查一下根本原因。如果在安装了调试器的自定义板上运行应用程序代码,它会在任何地方停止吗?如果是的话,你能分享一个截图吗?看门狗是启用还是禁用?

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

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

- >我已经禁用了看门狗。

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

你能在启用WDOG的情况下运行它吗?现在,如果在调试模式下运行它,代码是否会卡在任何地方?请定义CFG\u WDOG宏并再次运行。

谢谢,PM_DIALOG.

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

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

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我使用的SDK是6.0.12

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

我的建议是启用WDOG并以调试模式运行代码。另外,请启用CFG\u DEVELOPMENT\u DEBUG标志。这允许您热连接调试器,并在发生硬故障或NMI时获取调试信息。那么,启用这两个宏后,在调试模式下破坏它时,它是否会卡在任何地方?另外,没有必要为了调试而bunt OTP,只需通过keilide将固件下载到系统RAM中即可。

同时,我将尝试在我们的开发板上运行所附的项目。

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我照你说的做了。

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

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

它被困在哪里?你能分享截图吗?

谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我已断开调试器。所以我无法看到它被困的地方。

但是,当我在附加了调试器的情况下运行时,代码运行正常。

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

我在明天完成项目的截止日期,因为代码在广告间隔之间被卡住,我正在考虑通过将假到ARCH_SET_EXTEDDE_SLEEP(FALSE)将FALST删除广告间隔之间的OTP复制睡眠,并更改静态const sleep_state_t app_default_sleep_mode= ARCH_EXT_SLEEP_ON ...

这将解决我的问题吗?

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

我已经用定义的CFG\u WDOG和CFG\u DEVELOPMENT\u DEBUG宏运行了您所附的项目。我在QFN40子板和我们的新的亲DK主板工作。为了使用板上按钮唤醒设备,我使用P1ï1作为LED。

在调试模式下运行代码时,它会卡在下一行GPIO.c文件中的GPIO\u SetPinFunction()中。

__asm(“bkpt#0 \ n”);//此PIN尚未保留!

在user_periph_setup.c中,您正在配置所有GPIO以输入下拉。这不需要,因为默认状态是input_pulldown。您可以轻松阅读GPIO寄存器以澄清它。此外,这种代码的平安重新配置了不推荐的所有GPIO。

另外,在user\u sleepmode.c文件中,您使用的是从未保留的GPIO!

请在您在代码中找到的修改附加了一个diff文件。使用该修改,我能够在我们的DKS中运行项目。

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

在开发阶段,建议启用WDOG和development debug,否则,如果代码被困在某个地方,您将永远不会收到通知!总之,刻录OTP映像和OTP头需要应用程序代码100%运行。否则,芯片将永远无法从OTP启动!

您使用的DA14585软件包是什么?

谢谢,PM_DIALOG.

附件:
马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

好 啊。我会照你说的做。

我使用的是QFN40软件包。

GPIO保留问题是否会导致代码在执行OTP后挂起?。

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
既然你正在运行

因为您是在调试模式下运行项目,所以应该定义CFG\u DEVELOPMENT\u debug。这允许您模拟从OTP到系统RAM的OPT镜像。

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
我建议你去办

我建议在丹麦进行这个项目。它运行正常吗?

如果是,则使用您的自定义板并将FW下载到系统RAM中。请确保OTP为空。这是100%的工作吗?

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我从你的skd上取了一个新的sleepmode示例,并尝试将其下载到585子板的ram中。我没有修改任何代码。当我按下debug按钮并启动代码时,它立即在nmi\u处理程序中停止。在585子板中,您的示例代码是否可以这样工作而不进行修改?。

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
嗨,马克,请放下行李

HI MARK,请先将FW降至RAM - 现在工作吗?

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
嗨,马克,你能帮我吗

你好,马克,你能指出你用的是哪种DK吗?哪个子板和哪个母板?是的,这个例子是正确的。。

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
你好,

你好,

套件是da14580devkt-p_vc

子板为DA14585。

当做

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
嗨,Mark,是的ble_app

嗨Mark,是的BLE_APP_SLEEPMODE在此板中正确运行。我可以在我身边跑。是否有可能与跳线配置共享一个phote?

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
你好,

你好,

附照片。

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
嗨马克,刚测试了ble

嗨Mark,刚刚在我们的DK上测试了BLE_APP_SLEEPMODE示例 - 我正在使用与您和相同的跳线配置相同的DK。你有备用DK吗?我也建议在干净的SDK目录上工作。此外,通过修改我昨天分享了您,我能够在我们的DK中运行您的项目......您是否在为DA14585构建项目?谢谢,PM_DIALOG.

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

--->你有备用DK是否测试它?

不,我没有。

-->我建议也在一个干净的SDK目录上工作。

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

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
嗨,马克,你能跑吗?

嗨,马克,你能运行其他SDK项目吗?例如,ble\u app\u barebone。所有的SDK示例都是在我们的DKs中运行的,并且是由SDK提供的。在这个特定的设备中,你烧过OTP吗?

马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20

你好,

我无法运行任何BLE示例。我尝试了眨眼项目。它的工作正常。

当做,

作记号

PM_DIALOG.
离线
最后一次露面:22分37秒前
员工
加入:2018-02-08 11:03
你好,马克,

你好,马克,

请找到我的跳线配置。所有BLE示例都按预期运行。在BLE_APP_SLEEPMODE的情况下,我能够使用附加配置运行它。所以请尝试将SDK解压缩到一个新文件夹中,再次尝试。我建议有一个简短的SDK路径 - 可能在C:\下解压缩。如果它没有再次运行,可能会损坏。您是否在该设备中写了OTP?

谢谢,PM_DIALOG.

附件:
马尔基尔瓦2277
离线
最后一次露面:10小时4分钟前
加入:2019-06-19 04:20

嗨,PM\U对话,

我照你说的做了。

1) 我拿出一个新的SDK副本,在D驱动器中创建了一个文件夹。我运行了睡眠模式的例子,没有修改任何东西。我一开始调试会话,它就卡在了nmi处理程序上。

2) 我连接了smart snippets工具并检查了OTP内存的读取。它只读0。

当做,

作记号