Hello Dialog Team,
I am using a custom board for my project.
This project has a pressure sensor that sends manchester coded data every 30sec through gpio. My dialog chip decodes the data and loads it in the advertisement string. I have a battery attached for powering up my circuit. I am enabling sleep to save battery life.
I have done the following so far. Since we are developing our custom hardware, I did the following changes to the example (ble_app_sleepmode) program as follows.
1) Changed the led port and button pin as per our schematic in user_periph_setup.h
2) Changed #define CFG_LP_CLK LP_CLK_XTAL32 to #define CFG_LP_CLK LP_CLK_RCX20 in da1458x_config_advanced.h, since we dont have a 32Khz external crystal.
3) Changed #define CFG_XTAL16M_ADAPTIVE_SETTLING to #undef CFG_XTAL16M_ADAPTIVE_SETTLING because of point 2.
4)#undef cfg_code_location_ext和#define cfg_code_location_otp在da1458x_config_advanced.h中
I have successfully debugged the project with my 585devkit and it ran without any problems. I am facing the following problems now. Since my debug session is running properly I have planned to do the OTP. After I did the OTP, the program doesnt run for a long time. It runs for a while and then halts I think. No idea why.
问候,
标记
我正在附上这个项目folder also.
Hi kuda,
Thanks for your question.
>>>> I am facing the following problems now. Since my debug session is running properly I have planned to do the OTP.
Do you mean that you have the debugger attached? If yes, this prevents the system to go into sleep mode. Are you completely sure that your application is running in our DK?
In case of your custom board, did you try to run you application in debug mode? For example, did you try to download fw to System-RAM?
Thanks, PM_Dialog
嗨pm_dialog,
是的。我将代码下载到sys-RAM,它完美地工作而没有任何问题。
After I downloaded the code to OTP, I disconnected the debugger. I removed the battery and inserted it back. It runs for a few minutes and then it gets stuck.
问候,
标记
Hi MarkDsylva_2277
Can you please export and share the OTP Header that you are using?
Thanks, PM_DIalog
嗨pm_dialog,
How to export OTP header?
问候,
标记
Hi MarkDsylva_2277
来自SmartSnippets工具箱。您需要连接到OTP标题并将其导出到文件。
Thanks, PM_Dialog
嗨pm_dialog,
I am getting a lot of errors while reading.
I am attaching the log.
问候,
标记
Hi PM_dialog,
I managed to get the header. Its attached here.
问候,
标记
嗨pm_dialog,
请更新我的状态,因为我正在等待您在项目中进一步发展的回复。
问候,
标记
Hi Mark,
两个应用程序标志都设置为正确的“是”。您使用的包裹是什么?WLCSP34,QFN40或QFN48?我选择了QFN40的OTP标题。此外,选择时钟源在外部晶体振荡器中,但在您使用的初始帖子中使用间隔RCx。您在OTP标题中完成了哪些变化?您是否烧毁了“设备和包”和“睡眠时钟源”或是默认配置?
>>>我将代码下载到OTP后,我断开了调试器。我卸下了电池并将其插入。它运行几分钟,然后陷入困境。
Since it is running for a few minutes, this means that the device is booting correctly from the OTP. Probably the issue might be related to the SW. Does the device advertise and stops suddenly? Are you able to connect it with a peer device?
Thanks, PM_Dialog
嗨pm_dialog,
--->您使用的包裹是什么?WLCSP34,QFN40或QFN48?我选择了QFN40的OTP标题。
Yes it is QFN40.
---->另外,将时钟源选择为外部晶体振荡器,但在您使用的初始帖子中使用间隔RCx。您在OTP标题中完成了哪些变化?您是否烧毁了“设备和包”和“睡眠时钟源”或是默认配置?
I have an external crystal connected. But for low power crystal selection I dont have a 32Khz external crystal connected to my dialog chip. So I changed it from #define CFG_LP_CLK LP_CLK_XTAL32 to #define CFG_LP_CLK LP_CLK_RCX20. I didnt change anything else in the header. I only changed the application flags to Yes.
----> Since it is running for a few minutes, this means that the device is booting correctly from the OTP. Probably the issue might be related to the SW. Does the device advertise and stops suddenly? Are you able to connect it with a peer device?
The devices runs for a few minutes and when it wakes up from sleep its stops. The running time of the application varies a lot. Somtimes it stops in 2 mins or it may take 15mins also. Since my project is related to advertisement only, I didnt connect it with a peer device. If the issue is related to software, Why hasnt it occured during debugging?.
-----------------------------------------------------------------------------------------------------------------------------------------------------
-> My biggest doubt is, if there is a bug in the application, why does it run for a certain amount of time and then stops.
-> I have a mobile app that logs the advertisement data with system time. As per my project, the advertisement interval is 150ms and it is done for 5 seconds after which advertisement stops. As per my log, the chip wakes up and stops in between those 5 seconds time before advertisement stops.
-> I also read from a online tutorial in your website, that the following line should be commented from rwip.c. if not using 32Khz external crstal
// Boost mode + RCX is not supported in DA14585/586
if (GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 1)
ASSERT_WARNING(0);
I didnt try commenting this because I dont have many chips left with me as we are in lockdown due to Covid-19. My code ran in debug for more than a week straight. After I did OTP I started facing problems. Please support me on this as it is very urgent.
--------------------------------------------------------------------------------------------------
如果您可以在某些方面引导我,因为我正在使用自定义板,并且在做OTP后发现错误后,我就会更好。我将被问到我的管理员关于多少筹码你会浪费多少?
问候,
标记
Hi Mark,
您提到您在开发模式下测试了项目。请记住,当附加调试器时,这可以防止系统进入睡眠模式。你有没有附上调试器的测试?
您的问题与睡眠模式的唤醒是相关的。
例如,如果您将相同的FW下载到SYS-RAM(没有连接的调试器)或SPI Flash中,则运行是否正确?
Regarding the OTP Header seems to be correct. If the OTP Header and the OTP Image were not burnt correctly, the device will not be able to boot! In your case, the DA14585 is booting correctly and starts advertising.
Thanks, PM_Dialog
嗨pm_dialog,
--->您提到您在开发模式下测试了您的项目。请记住,当附加调试器时,这可以防止系统进入睡眠模式。你有没有附上调试器的测试?
我试图通过按相同的调试按钮开始从keil启动调试会话并停止调试会话。代码没有运行。
As I had said in the above post, I think the code hangs somewhere in the middle of the advertisement process (ie Waking up and sleeping between advertisemnt intervals). My code is in the user_sleepmode.c file, where I am handling the external interrupt and data decoding. After I receive the data, I start the advertisement and set an app_easy_timer for 5 seconds....after which I stop the advertisement. In between I dont have anything. How am I to check where the code hangs?. Any ideas?
问候,
标记
Hi Mark,
所以问题与SW相关。让我们试着调查根本原因的原因。如果您使用附加调试器运行自定义板中的应用程序代码,则停止任何地方吗?如果是,请您能分享一个截图卡住的屏幕截图吗?看门狗是否已禁用ORE?
Thanks, PM_Dialog
嗨pm_dialog,
--> No. The code doesnt stop anywhere. It runs without any problems.
--> I have disabled the watchdog.
问候,
标记
Hi Mark,
Can you please run it with the WDOG enabled? Now, if you run it in debug mode, does the code stuck anywhere? Please define the CFG_WDOG macro and run it again.
Thanks, PM_Dialog
Hi Mark,
Additionally what is the SDk that you are using? I am unable to build the provided example code in our SDK.
Thanks, PM_Dialog
嗨pm_dialog,
The SDK I am using is 6.0.12
问候,
标记
Hi Mark,
My suggestion would be to have the WDOG enabled and run the code in debug mode. Additionally, please enable the CFG_DEVELOPMENT_DEBUG flag. This allows you to hot attach debugger and get debug information if a hardfault or NMI is occurred. So, with these 2 macros enabled, does is get stuck anywhere when ruining it in debug mode? Additionallym there is no need to bunt the OTP in order to debug it - just download the firmware into the System-RAM through the Keil IDE.
与此同时,我将尝试在我们的开发板上运行附加的项目。
Thanks, PM_Dialog
嗨pm_dialog,
I did as you said.
我#Defined宏并按下调试按钮,然后再次按下相同的按钮。代码再次陷入困境。
问候,
标记
Hi Mark,
Where it gets stuck? Can you please share a screenshoot?
Thanks, PM_Dialog
嗨pm_dialog,
I have disconnected the debugger. So I am not able to see where its getting stuck.
But when I run with the debugger attached, the code runs properly.
------------------------------------------------------------------------------------
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...
Will this solve my issue for time being?.
问候,
标记
Hi Mark,
I have run your attached project with the CFG_WDOG and the CFG_DEVELOPMENT_DEBUG macros defined. I am working on an QFN40 daughter board and our new Pro-DK motherboard. In order to use the on-board button to wake-up the device, I am using the P1_1 for the LED.
在调试模式下运行代码时,卡住in GPIO_SetPinFunction() in gpio.c file in the following line.
__asm("BKPT #0\n"); // this pin has not been previously reserved!
In user_periph_setup.c you are configuring all the GPIOs to input pull down. This is not need as the default state is INPUT_PULLDOWN. You can easily read the GPIOs registers to clarify it. Additionally this peace of code reconfigures all the GPIOs which is not recommend.
Also, in the user_sleepmode.c files you are using a GPIO which is never reserved!
Please find attached a diff file with the modifications I did in your code. With that modifications I am able to run your project in our DKs.
OTP代表一个时间可编程,因此您应该确保在燃烧之前完全运行的项目!
在开发阶段,建议启用WDOG和开发调试,否则,如果代码粘在某个地方,您将永远不会通知此!总之,刻录OTP图像和OTP标题要求应用程序代码运行100%。否则,芯片将永远不会启动表单OTP!
What is the package of DA14585 that you are using?
Thanks, PM_Dialog
嗨pm_dialog,
Ok. I will do as you said.
I am using a QFN40 package.
Will GPIO reservation problems cause the code to hang after doing OTP?.
问候,
标记
Since you are running the project in debug mode, you should have the CFG_DEVELOPMENT_DEBUG defined. This allows you to simulate the OPT mirroring from the OTP to System-RAM.
我建议在DK中运行项目。它是否正确运行?
If yes, then use your custom board and download the FW into System-RAM. Please make sure that OTP is empty. Is that working 100%?
嗨pm_dialog,
我从你的Skd拍摄了一份新鲜的SleepMode示例,并试图将其下载到585女儿板中的RAM。我没有在任何代码中修改任何内容。当我按下调试按钮并启动时,它立即在NMI_Handler停止。您的示例代码是否会在585女儿板上进行修改?
问候,
标记
嗨,马克,请downoloadfw into RAM first - is that working now?
嗨,马克,你能说明你用的是哪个dk?哪个子板和哪个母板?是的,该示例正常工作..
Hi,
Kit is DA14580DevKT-P_VC
Daughter board is DA14585.
问候
Hi Mark, Yes the ble_app_sleepmode is runnign correctly in this board. I can run it in my side. Would it be possible to share a phote with the jumpers configuration?
Hi,
Photos are attached.
问候,
标记
嗨,马克,只是测试了ble_app_sleepmode例子on our DK - I am using the same DK with you and the same jumper configuration. Do you have any spare DK to test it? I'd suggest to worki on a clean SDK directory as well. Additionally, with the modification i had shared you yesterday, I am able to run your project in our DK... Are you building the project for DA14585? Thanks, PM_Dialog
嗨pm_dialog,
--->Do you have any spare DK to test it?
不,我没有一个。
--> I'd suggest to worki on a clean SDK directory as well.
I extracted the sdk folder from the 6.0.12.1020.2.zip file and opened the ble_app_sleepmode project and built it and started the debug session. I didnt modify anything else inside. But I am facing the same issue. I have attached the screenshot.
问候,
标记
HI Mark,您是否能够运行其他其他SDK项目?例如,BLE_APP_BAREBONE。所有SDK示例都在我们的DKS出框中运行,并且由SDK提供。在这个特定的设备中,你烧了OTP吗?
Hi,
I am not able to run any ble examples. I tried the blinky project. It worked fine.
问候,
标记
Hi Mark,
Please find attached my jumper configuration. All the BLE examples are running as expected. In case of ble_app_sleepmode, I am able to run it with the attached configuration. So please, try to unzip the SDK into a new folder and give again a try. I would suggest to have a short SDK path – probably unzip in under the C:\ . If it Is not running again, probably the board is damaged. Have you written the OTP in that device?
Thanks, PM_Dialog
嗨pm_dialog,
我试过你说的。
1) I took out a fresh copy of the SDK and created a folder in D drive. I ran the sleepmode example without modifiying anything. As soon as I started the debug session it got stuck at the nmi handler.
2)连接智能片段工具并检查读取OTP内存。它只读零。
问候,
标记