13个帖子/ 0个新
最后一篇
Auzzz.
离线
最后一次露面:5个月前
加入:2016-06-20十43
程序意外停止为DA14681

嗨对话框,
我们开发了一种基于基本devkit的最低DA14681系统的开发板。
我们在BASIC Dev kit上正确运行的代码,它只是简单地定期打印“hello world”到COM端口。
但当我把图片下载到自己设计的电路板上时,代码只运行了很短的时间,10秒后,程序就停止了。我们制作了5个开发板,都出现了相同的错误。

开发环境:
1.SmartSnippets工作室v1.2.3.588
2.SDK DA1468x_SDK_BTLE_v_1.0.6.968
3.外部Flash Winbond W25Q16DWSSIG QSPI 16Mbit
4.演示项目:pxp_reporter

我的问题可能导致这个问题是什么?谢谢

设备:
mt_dialog.
离线
最后一次露面:4个月1周前
职员
加入:2015-06-08 34
嗨auzzz,

嗨auzzz,

问题的描述是相当通用的,我不能看到的问题是由提供的信息,你将不得不附加调试器,以检查代码已经停止,这可以给我们一个线索发生了什么与您的自定义hw。

谢谢mt_dialog.

Auzzz.
离线
最后一次露面:5个月前
加入:2016-06-20十43
嗨MT_dialog,

嗨MT_dialog,
我们发现该问题是由串行端口引起的。DA14681 Devkit的默认电压电平USART1 TX是低电平。我们使用的USB到TTL芯片是CH340,其默认TX是高电平。
不同的电压等级可能导致系统崩溃,通过分离调试器的Tx,系统可以正常工作。
我的问题是为什么DA14681的Rx会导致坠机?我们是否必须找到与DA14681相同的默认电压水平的调试器?

Auzzz.
离线
最后一次露面:5个月前
加入:2016-06-20十43
我们用硬币电池作主电池

我们使用硬币电池作为主电源,同时调试器提供3.3V电压电平。不同的参考。电压可能导致问题。

kingwheat
离线
最后一次露面:1年1个月前
加入:2016-12-08 09:21
你好,

你好,
似乎我们遇到了同样的问题,我们也设计了我们自己的电路板,我下载了SDK 1.0.6的PXP报告者。在大约8秒后,它重置,然后在接下来的8个SCEOND再次重置。..

mt_dialog.
离线
最后一次露面:4个月1周前
职员
加入:2015-06-08 34
嗨auzzz kingwheat,

嗨auzzz kingwheat,

我不认为UART与您体验的内容有关,我相信其他事情是错误的,你所提到的是由另一个问题造成的副作用。一些信息,您使用的包装,您的焊接型材是什么,以及您的定制HW上的模板厚度是多少?

谢谢mt_dialog.

kingwheat
离线
最后一次露面:1年1个月前
加入:2016-12-08 09:21
嗨MT_dialog

嗨MT_dialog
我认为我的板有点问题,当我使用Demo Project PXP记者,我没有对它进行任何改变。它在开发套件中运作良好。当我下载到我自己的电路板时,并使用+ vbat和-vbat供应,它每8秒再次重置一次。但是当我向VBUS提供5V或仅在PM_Mode_active中保持系统的电源时,它运行良好。

SDK: DA1468x_SDK_BTLE_v_1.0.6.968
SmartSnippets Studio版本:1.2.3.588
测试项目:da1468x_sdk_btle_v_1.0.6.968 \ da1468x_sdk_btle_v_1.0.6.968 \ projects \ dk_apps \ demos \ pxp_reporter

Auzzz.
离线
最后一次露面:5个月前
加入:2016-06-20十43
嗨Kingwheat,

嗨Kingwheat,
你用UART调试了吗?

嗨MT_dialog,
我们使用AQFN包,请遵循DEV套件电路图。只有当CR2032是电源时,才能在DA14681-01A9DEVKT-B上再现此问题。

kingwheat
离线
最后一次露面:1年1个月前
加入:2016-12-08 09:21
嗨Auzzz,

嗨Auzzz,
我使用UART进行调试,并且只在任务中打印tf。如果printf在中断的回调中,我认为可能会引起一些问题。

Auzzz.
离线
最后一次露面:5个月前
加入:2016-06-20十43
试着在调试器中分离Tx

尝试在调试器中分离TX并检查重置是否消失。

mt_dialog.
离线
最后一次露面:4个月1周前
职员
加入:2015-06-08 34
嗨kingwheat auzzz,

嗨kingwheat auzzz,

据我所知,你的经验与您的自定义PCB的焊接有关。从8到10秒后,两种板都在延迟最大可能是因为DCDC被激活后立即启动并重置您的电路板。8秒后,系统从LDO更改为DCDC电源,当系统在LDO上运行时,获得BOD复位的唯一原因是通过具有实际电压下降,当系统在DCDC上运行BOD事件时可能会触发。特别是如果DCDC GND引脚或中央GND焊盘具有焊接问题。要检查此功能,可以通过#define dg_configuse_bod(0)禁用BOD,这将禁用重置(此问题仍然只是为了测试这是实际问题)。此外,您可以尝试在PCB上按SOC或重新加热焊料,以防您遇到的内容也将验证您具有焊接问题。

此外,为了检查这确实是您的问题,您可以执行以下操作来检查BOD_VREF。这应该准确到515mV,在任何情况下方差都小于50mV。

因此,在开始任何新任务将BOD_VREF导出到P1_7之前,在system_init()中添加以下代码

//将bof_ref导出到p1_7
REG_SETF(GPIO,test_ctrl5_reg,test_bod_vref_out,1);//将BOD参考缓冲区输出到TESTBUS
REG_SETF(Anamisc,ANA_TEST_REG,ACORE_TESTBUS_EN,1);//在acore中启用模拟 - testbus
REG_SETF(GPIO, TEST_CTRL2_REG, ANA_TESTMUX_CTRL, 0x3);//在PADs中选择analog-testbus
hw_gpio_set_pin_function(hw_gpio_port_1,hw_gpio_pin_7,hw_gpio_mode_output,hw_gpio_func_adc);//设置为p1.7至ADC /打开模式

保持BOD禁用,因此它不会通过在custom_config_qspi.h文件中添加#define db_configuse_bod(0)来启动并禁用睡眠模式。

为了在示波器上看到这一点,你必须隔离电源,以避免噪音,运行笔记本电脑的电池,以隔离它从设备,可以注入噪音通过地面,所以要非常小心。

关于您可以在基本套件上复制它的事实,我无法在我的设置上看到这样的内容,我下载了运行并使用了与1.0在CR2032电池上运行的Hylink演示的UART。.6 SDK。

谢谢mt_dialog.

kingwheat
离线
最后一次露面:1年1个月前
加入:2016-12-08 09:21
嗨,mt_dialog

嗨,mt_dialog
非常感谢你回答我们的问题。
在测试之前,项目的配置是#define dg_configUSE_BOD(1),并打开睡眠模式,它将重置
我有测试,
首先,#define dg_configuse_bod(0),然后关闭睡眠模式,运行良好。
其次,#define dg_configUSE_BOD(0),并打开睡眠模式,它将复位。
正如所示,我发现重置更多的是与电源模式管理有关。

当我使用Hardwear Iic时,我会遇到另一个问题。
我这样操作IIC写函数:ad_i2c_write();读取:ad_i2c_transact(dev, ®_addr, 1, reg_data, cnt);
如果我关闭ble堆栈,它工作得很好。否则,某些事件可能会干扰IIC接口。
我很困惑,因为我使用硬件iic,在我操作读或写函数后,我可以让我的cpu做另一件事,在那完成操作后,他们会给我回调…在这种情况下,这一事件对硬件有何影响?有时iic会错过回调,让我的任务留在Block..

mt_dialog.
离线
最后一次露面:4个月1周前
职员
加入:2015-06-08 34
嗨kingwheat,

嗨kingwheat,

请如果你发现之前的回答有帮助,标记为接受的答案,也请不要回应一个与线程的主题无关的附加问题的答案,如果你想问一个新的问题,你总是可以创建一个新的线程。

关于你的问题,我不确定我对此,我所理解的只是你缺少中断。通常,BLE中断与任何其他中断的优先级更高,但这并不意味着您将错过I2C中断。可能发生的是,当BLE将睡眠时,您的I2C中断与BLE关键部分同时发生,这具有一个关键部分,该部分禁用大约600us的中断,也许这是您的程序丢失的地方。

关于操作完成时所引用的回调,你提到你是使用同步函数ad_i2c_transact()和ad_i2c_write()而不是相对应的异步函数ad_i2c_async_transact()这样的函数作为参数的回调,不会等待操作完成和相应的操作结束时将调用回调。

Thansk mt_dialog.