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

了解更多常见问题教程

39帖子/ 0新
最后一篇文章
markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
DA14585休眠模式代码在OTP后被卡住

您好对话团队,

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

该项目具有压力传感器,通过GPIO每30秒发送曼彻斯特编码数据。我的对话框芯片对数据进行解码并将其加载到广告字符串中。我有一个电池,用于向上电我的电路。我可以睡觉以节省电池寿命。

到目前为止,我已经完成了以下内容。由于我们正在开发自定义硬件,因此我对示例(BLE_APP_SLEEPMODE)程序进行了以下更改,如下所示。

1) 根据user\u periph\u setup.h中的示意图更改了led端口和按钮引脚

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

3)因点2而将#define cfg_xtal16m_adaptive_settling更改为#undef cfg_xtal16m_adaptive_settling。

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

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

当做,

作记号

设备:
markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
我附上该项目

我附加的项目文件夹也。

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
嗨Kuda,

嗨Kuda,

谢谢你的问题。

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

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

如果您的定制板,您是否尝试在调试模式下运行您的应用程序?例如,您是否尝试将FW下载到System-RAM?

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

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

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

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
hi markdsylva_2277.

hi markdsylva_2277.

您能否导出和分享您正在使用的OTP标题?

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

如何导出OTP头?

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
hi markdsylva_2277.

hi markdsylva_2277.

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

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我在阅读时犯了很多错误。

我正在附上日志。

当做,

作记号

附件:
markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我设法拿到了头球。附于此。

当做,

作记号

附件:
markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

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

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

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

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

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

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入: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正确引导。问题可能与软件有关。设备是否会突然停止?您能将其与对等设备连接吗?

这些设备运行几分钟,当它从睡眠停止时醒来。应用程序的运行时间变化很大。Somtips它在2分钟内停止或可能需要15分钟。由于我的项目仅与广告有关,因此我并没有将其与对等设备连接。如果问题与软件有关,为什么在调试期间会出现它?

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

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

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

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

//DA14585/586不支持Boost mode+RCX
if(GetBits16(ANA\u STATUS\u REG,BOOST\u SELECTED)==1)

assert_warning(0);

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

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

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

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

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

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

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

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

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

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

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

正如我在上面的帖子中所说的,我认为代码挂在广告过程的某个地方(即在广告间隔期间醒来和睡觉)。我的代码在user\u sleepmode.c文件中,在这里我处理外部中断和数据解码。收到数据后,我启动广告并设置一个app\u easy\u计时器5秒……然后我停止广告。中间我什么都没有。我要怎么检查代码挂在哪里?。有什么想法吗?

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

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

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

- >否。代码不停止任何地方。它没有任何问题。

-->我把看门狗弄坏了。

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

您能用WDOG运行它吗?现在,如果在调试模式下运行它,代码在任何地方粘在一起?请定义CFG_WDOG宏并再次运行它。

谢谢,下午好

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

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

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我使用的SDK是6.0.12

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

我的建议是将启用WDOG并在调试模式下运行代码。此外,请启用CFG_Development_debug标志。这允许您热连接调试器,并且如果发生硬盘或NMI,则获取调试信息。所以,通过启用这2个宏,在调试模式下毁了它时会粘在任何地方?另外,不需要禁止OTP才能调试它 - 只需将固件下载到系统内通过Keil IDE。

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

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

我照你说的做了。

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

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

哪里卡住了?你能分享一个截图吗?

谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

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

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

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

我有一个截止日期,以完成该项目的明天,因为代码是陷入广告之间的间隔,我正在考虑消除otp复制睡眠之间的广告间隔通过传递假到拱\设置\扩展\睡眠(假)和改变静态常量睡眠\状态\应用程序\默认\睡眠\模式=拱\扩展\睡眠\开。。。

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

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

我已经使用CFG_Wdog和CFG_Development_debug宏运行附加项目。我正在研究一个QFN40女儿板和我们的新款Pro-DK主板。为了使用板载按钮唤醒设备,我正在使用LED的P1_1。

在调试模式下运行代码时,它会在以下行中的GPIO.C文件中陷入GPIO_SETPINFUNCTION()。

__asm(“BKPT#0\n”);//此pin以前未被保留!

在user\u periph\u setup.c中,您将所有GPIO配置为下拉输入。这是不需要的,因为默认状态是INPUT\u PULLDOWN。您可以很容易地读取GPIOs寄存器来澄清它。此外,这种代码的和平重新配置所有gpio,这是不推荐的。

此外,在user_sleepmode.c文件中,您正在使用永不保留的GPIO!

请找到附加的差异文件与修改我在您的代码。有了这些修改,我可以在我们的DKs运行您的项目。

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

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

您正在使用的DA14585的包是什么?

谢谢,下午好

附件:
markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

好 啊。我会照你说的做。

我正在使用qfn40包。

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

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
既然你在管理

由于您在调试模式下运行项目,因此您应该定义CFG_Development_debug。这允许您模拟从OTP到系统RAM的OPT镜像。

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
我建议你去办

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

如果是的话,那么使用你的定制板并将固件下载到系统RAM中。请确保OTP为空。100%有效吗?

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

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

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
嗨Mark,请下载

嗨,马克,请先把fw放到RAM里-现在可以了吗?

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
嗨,马克,你能忘吗

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

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,

嗨,

套件为DA14580DevKT-P\U VC

子板为DA14585。

当做

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
嗨,马克,是的,ble\u应用程序

你好,马克,是的,ble\u app\u睡眠模式在这个板上运行正常。我可以在我身边跑。是否可以与跳线配置共享一个phote?

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,

嗨,

附照片。

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
嗨,马克,刚刚测试了ble

你好,马克,刚刚在我们的DK上测试了bleèappèsleepmode示例-我和你使用的是同一个DK和同一个跳线配置。你有备用的DK测试吗?我建议也在一个干净的SDK目录上工作。此外,与修改我昨天分享你,我可以运行在我们的DK你的项目。。。你在为DA14585做项目吗?谢谢,下午好

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20
嗨,PM\U对话,

嗨,PM\U对话,

--->你有备用的DK测试吗?

不,我没有。

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

我从6.0.12.1020.2..zip文件中提出了SDK文件夹,然后打开BLE_APP_SLEEPMODE项目并建立并启动调试会话。我没有修改里面的任何东西。但我面临着同样的问题。我附上了截图。

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
嗨,马克,你能跑吗

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

markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20

嗨,

我不能举出任何不可靠的例子。我试过布林奇的计划。效果不错。

当做,

作记号

PM\U对话框
离线
最后一次见到:1小时42分钟前
工作人员
已加入:2018-02-08 11:03
你好,马克,

你好,马克,

请找到我的跳线配置附件。所有BLE示例都按预期运行。在ble\u app\u睡眠模式的情况下,我可以使用附加的配置运行它。所以,请尝试将SDK解压到一个新文件夹中,然后再试一次。我建议使用一个短的SDK路径——可能在C:\下解压。如果它没有再次运行,可能是电路板损坏了。你在那台设备上写过OTP吗?

谢谢,下午好

附件:
markdsylva_2277.
离线
最后一次见到:15小时32分钟前
已加入:2019-06-19 04:20

嗨,PM\U对话,

我照你说的做了。

1)我拍出了SDK的新鲜副本,并在D驱动器中创建了一个文件夹。我在没有修改任何内容的情况下运行sleepMode示例。一旦我开始调试会话,它就被困在NMI处理程序。

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

当做,

作记号