你好对话团队,
我正在为项目使用自定义板。
该项目具有一个压力传感器,每30秒通过GPIO发送曼彻斯特编码数据。我的对话框芯片将数据解码并将其加载到广告字符串中。我有一个电池可以为电路供电。我正在使睡眠能够节省电池寿命。
到目前为止,我已经完成了以下操作。由于我们正在开发自定义硬件,因此我对示例(ble_app_sleepmode)程序进行了以下更改,如下所示。
1)根据我们的user_periph_setup.h中的示意图更改了LED端口和按钮引脚
2)更改#define cfg_lp_clk lp_clk_xtal32 to #define cfg_lp_clk lp_clk_rcx20在da1458x_config_advanced.h中,因为我们没有32KHz外部晶体。
3)更改#define cfg_xtal16m_adaptive_settling到#undef cfg_xtal16m_adaptive_settling,因为点2。
4)#undef cfg_code_location_ext和#define cfg_code_location_otp in da1458x_config_advanced.h
我已经成功地通过585DEVKIT进行了调试,它没有任何问题。我现在面临以下问题。由于我的调试会话正常运行,因此我计划进行OTP。完成OTP之后,该程序不会长时间运行。它运行了一段时间,然后我想停下来。不知道为什么。
问候,
标记
设备:
我也附上了项目文件夹。
嗨,库达,
感谢您的问题。
>>>>我现在面临以下问题。由于我的调试会话正常运行,因此我计划进行OTP。
您的意思是附带了调试器吗?如果是,则可以防止系统进入睡眠模式。您是否完全确定您的应用程序在我们的DK中运行?
如果您的自定义板,您是否尝试在调试模式下运行应用程序?例如,您是否尝试将FW下载到System-ram?
谢谢,pm_dialog
嗨,pm_dialog,
是的。我将代码下载到sys-ram,它运行得很好,没有任何问题。
将代码下载到OTP后,我断开了调试器的连接。我卸下了电池并将其插入。它运行了几分钟,然后被卡住了。
问候,
标记
HI MarkdSylva_2277
您可以出口并分享您使用的OTP标头吗?
谢谢,pm_dialog
嗨,pm_dialog,
如何导出OTP标头?
问候,
标记
HI MarkdSylva_2277
来自Smartsnippets工具箱。您需要连接到OTP标头并将其导出到文件。
谢谢,pm_dialog
嗨,pm_dialog,
阅读时我会遇到很多错误。
我正在附上日志。
问候,
标记
嗨,pm_dialog,
我设法获得了标题。它附在这里。
问候,
标记
嗨,pm_dialog,
当我等待您的回复以进行进一步开发时,请向我更新状态。
问候,
标记
嗨,马克,
两个应用程序标志都设置为“是”,这是正确的。您正在使用什么包?WLCSP34,QFN40或QFN48?我是您选择了QFN40的OTP标头。此外,将时钟源选择为外部晶体振荡器,但是在您的初始帖子中,您使用的是Interval RCX。您在OTP标头中进行了哪些更改?您是否燃烧了“设备和软件包”和“睡眠时钟源”,还是默认配置?
>>>将代码下载到OTP后,我断开了调试器的连接。我卸下了电池并将其插入。它运行了几分钟,然后被卡住了。
由于它正在运行几分钟,因此这意味着该设备正在从OTP正确启动。问题可能与SW有关。该设备是否会宣传并突然停止?您可以将其与对等设备连接起来吗?
谢谢,pm_dialog
嗨,pm_dialog,
--->您正在使用什么包装?WLCSP34,QFN40或QFN48?我是您选择了QFN40的OTP标头。
是的,它是QFN40。
---->另外,将时钟源选择为外部晶体振荡器,但是在您的初始帖子中,您使用的是Interval RCX。您在OTP标头中进行了哪些更改?您是否燃烧了“设备和软件包”和“睡眠时钟源”,还是默认配置?
我有一个外部晶体连接。但是对于低功率晶体选择,我没有连接到对话框芯片的32kHz外部晶体。因此,我将其从#Define CFG_LP_CLK LP_CLK_XTAL32更改为#Define CFG_LP_CLK LP_CLK_RCX20。我没有在标题中更改其他任何内容。我只将应用程序标志更改为“是”。
---->由于它正在运行几分钟,因此这意味着该设备正在从OTP正确启动。问题可能与SW有关。该设备是否会宣传并突然停止?您可以将其与对等设备连接起来吗?
这些设备运行了几分钟,当它从睡眠中醒来时。应用程序的运行时间差异很大。它会在2分钟内停止,或者也可能需要15分钟。由于我的项目仅与广告有关,因此我没有将其与对等设备联系起来。如果问题与软件有关,为什么在调试期间没有发生?
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- >我最大的疑问是,如果应用程序中有一个错误,为什么它会在一定时间内运行,然后停止。
- >我有一个移动应用程序,可以将广告数据与系统时间记录。根据我的项目,广告间隔为150ms,并且在5秒钟内完成广告停止。根据我的日志,芯片醒来并在广告停止之前的5秒内停止。
- >我还从您网站的在线教程中读到,应从RWIP.C评论以下行。如果不使用32kHz外部Crstal
// BOOST模式 + RCX在DA14585/586中不支持RCX
if(getBits16(ana_status_reg,boost_selected)== 1)
assert_warning(0);
我没有尝试评论这一点,因为由于19号,我们在锁定时没有剩下很多筹码。我的代码连续运行超过一周。完成OTP后,我开始面临问题。请支持我,因为这非常紧急。
---------------------------------------------------------------------------------------------------------------------------------------
如果您可以使用自定义板,那么您可以在某些方面引导我,而且在执行OTP后发现错误后,我根本无法浪费芯片。我会从我的货币上问我要浪费多少芯片的问题。
问候,
标记
嗨,马克,
您提到您在开发模式下测试了项目。请记住,连接调试器时,这会防止系统进入睡眠模式。您是否曾经没有附带调试器进行测试?
您的问题便是与睡眠模式醒来有关的。
例如,如果您将相同的FW下载到SYS-RAM(没有附加的调试器)或SPI Flash中,那是否正确运行?
关于OTP标头似乎是正确的。如果OTP标头和OTP图像未正确燃烧,则设备将无法启动!就您而言,DA14585正在正确启动并开始广告。
谢谢,pm_dialog
嗨,pm_dialog,
--->您提到您在开发模式下测试了项目。请记住,连接调试器时,这会防止系统进入睡眠模式。您是否曾经没有附带调试器进行测试?
我试图从Keil开始调试会话,并通过按相同的调试按钮停止了调试会话。代码没有运行。
正如我在上面的帖子中所说的那样,我认为该代码悬挂在广告过程中的某个地方(即在广告间隔之间醒来和睡觉)。我的代码位于user_sleepmode.c文件中,我正在处理外部中断和数据解码。收到数据后,我启动广告并设置App_easy_timer 5秒。...此后,我停止了广告。在两者之间,我什么都没有。我如何检查代码挂在哪里?有任何想法吗?
问候,
标记
嗨,马克,
因此,问题与SW有关。让我们尝试研究可能是根本原因。如果您使用附带的调试器在自定义板上运行应用程序代码,它是否在任何地方停止?如果是,您可以在卡住的位置分享屏幕快照吗?启用监管机的矿石是否禁用?
谢谢,pm_dialog
嗨,pm_dialog,
- >否。代码不会在任何地方停止。它运行没有任何问题。
- >我已经禁用了看门狗。
问候,
标记
嗨,马克,
您可以在启用WDOG的情况下运行它吗?现在,如果您以调试模式运行它,代码会粘在任何地方吗?请定义CFG_WDOG宏并再次运行。
谢谢,pm_dialog
嗨,马克,
另外,您使用的SDK是什么?我无法在我们的SDK中构建提供的示例代码。
谢谢,pm_dialog
嗨,pm_dialog,
我使用的SDK是6.0.12
问候,
标记
嗨,马克,
我的建议是启用WDOG并在调试模式下运行代码。此外,请启用CFG_Development_debug标志。这使您可以加热调试器并获取调试信息,如果发生了硬故障或NMI。因此,通过启用了这两个宏,在调试模式下破坏它时会卡住吗?此外,不需要将OTP击败以调试它 - 只需通过Keil IDE下载固件即可。
同时,我将尝试在我们的开发委员会中运行所附项目。
谢谢,pm_dialog
嗨,pm_dialog,
我按照你说的。
我#定义了宏,并通过按调试按钮将代码上传,然后再次按下同一按钮。代码再次陷入困境。
问候,
标记
嗨,马克,
它在哪里卡住了?您能分享屏幕屏幕吗?
谢谢,pm_dialog
嗨,pm_dialog,
我断开了调试器的连接。因此,我看不到它被卡在哪里。
但是,当我使用附加的调试器运行时,代码可以正确运行。
----------------------------------------------------------------------------------------------------------------
I am having a deadline to complete the project by tomorrow, and since the code is getting stuck between advertisement intervals, I am thinking of removing the otp copy sleep between advertisement intervals by passsing false to arch_set_extended_sleep(false) and changing the static const sleep_state_t app_default_sleep_mode= Arch_ext_sleep_on ...
这会解决我的问题吗?
问候,
标记
嗨,马克,
我已经使用CFG_WDOG和已定义的CFG_Development_debugg宏来运行您的附件项目。我正在制作QFN40女儿董事会和我们的新Pro-DK主板。为了使用板上按钮唤醒设备,我将P1_1用于LED。
在调试模式下运行代码时,它将卡在以下行中的gpio.c.c文件中的gpio_setpinfunction()中。
__asm(“ bkpt#0 \ n”);//以前没有保留此PIN!
在USER_PERIPH_SETUP.C中,您正在配置所有GPIO以输入下拉。这是不需要的,因为默认状态是input_pulldown。您可以轻松阅读GPIO寄存器以澄清它。此外,代码的平静重新配置了所有不建议的GPIO。
另外,在User_sleepmode.c文件中,您使用的是永远不会保留的GPIO!
请在您的代码中找到附带的差异文件。通过这种修改,我可以在我们的DKS中运行您的项目。
OTP代表一次可编程,因此您应该确保您的项目在燃烧之前完全运行!
在开发阶段,建议使用WDOG并启用开发调试,否则,如果代码卡在某个地方,您将永远不会通知您!总之,燃烧OTP图像和OTP标头要求应用程序代码运行100%。否则,芯片将永远不会启动OTP!
您正在使用的DA14585的包装是什么?
谢谢,pm_dialog
嗨,pm_dialog,
好的。我会按照你说的。
我正在使用QFN40软件包。
GPIO保留问题会导致执行OTP后悬挂代码吗?
问候,
标记
由于您以调试模式运行项目,因此应定义CFG_DEVEVELMENT_DEBUG。这使您可以模拟从OTP到System-RAM的OPT镜像。
我建议将项目运行到DK中。它运行正确吗?
如果是,请使用您的自定义板,然后将FW下载到System-ram中。请确保OTP是空的。那起作用100%吗?
嗨,pm_dialog,
我从您的SKD中取了一份Sleemmode示例的新副本,并试图将其下载到585女儿板上的RAM。我没有在任何代码中修改任何内容。当我按下调试按钮并启动代码时,它立即在NMI_Handler停止了。您的示例代码是否可以在585个女儿董事会中进行修改?
问候,
标记
嗨,马克,请首先将FW倒入RAM-现在正在工作吗?
嗨,马克,您能指出您正在使用哪个DK?哪个女儿董事会和哪个母板?是的,示例正常工作..
你好,
套件是DA14580DEVKT-P_VC
女儿董事会是DA14585。
问候
嗨,马克,是的,ble_app_sleepmode在此板上正确运行。我可以在我身边运行它。可以与跳线配置共享一个光片吗?
你好,
照片附上。
问候,
标记
嗨,马克,刚刚在我们的DK上测试了BLE_APP_SLEEPMODE示例 - 我正在与您和相同的跳线配置一起使用相同的DK。您有任何备用DK测试吗?我也建议在干净的SDK目录上进行Worki。此外,通过我昨天分享了您的修改,我可以在我们的DK中运行您的项目...您是否正在为DA14585构建项目?谢谢,pm_dialog
嗨,pm_dialog,
--->您有任何备用DK测试吗?
不,我没有一个。
- >我也建议在干净的SDK目录上进行Worki。
我从6.0.12.1020.2.zip文件中提取了SDK文件夹,并打开了BLE_APP_SLEEPMODE项目,并构建了它并启动了调试会话。我没有修改内部的其他任何内容。但是我面临同样的问题。我已经连接了屏幕截图。
问候,
标记
嗨,马克,您可以运行其他任何SDK项目吗?例如,ble_app_barebone。所有SDK示例都在我们的DKS内运行,并由SDK提供。在这个特定的设备中,您是否燃烧了OTP?
你好,
我无法运行任何BLE示例。我尝试了眨眼的项目。它工作正常。
问候,
标记
嗨,马克,
请找到附带的跳线配置。所有BLE示例都按预期运行。如果BLE_APP_SLEEPMODE,我可以使用附件配置运行它。因此,请尝试将SDK解压缩到新文件夹中,然后再次尝试。我建议使用短的SDK路径 - 可能在c:\下取消拉链。如果它不再运行,则董事会可能会损坏。您是否在该设备中写了OTP?
谢谢,pm_dialog
嗨,pm_dialog,
我像你说的那样尝试。
1)我取出了SDK的新副本,并在D驱动器中创建了一个文件夹。我在不修改任何内容的情况下运行了Sleepmode示例。一旦我开始调试会议,它就会陷入NMI处理程序。
2)我连接了智能摘要工具并检查了阅读OTP内存。它仅读取零。
问候,
标记