嗨对话框,
我们开发了一种基于基本devkit的最低DA14681系统的开发板。
我们在基本开发套件上正确运行的代码,只需定期打印“Hello World”到COM端口。
但是当我将图像下载到自己的设计板时,代码只运行短时间,10秒后,程序停止。我们建立了5个Dev板,所有这些都会显示相同的错误。
开发环境:
1.SmartSnippets Studio v1.2.3.588.
2. SDK DA1468x_sdk_btle_v_1.0.6.968
3.外部Flash Winbond W25Q16DWSSIG QSPI 16Mbit
4.演示项目:PXP_Reporter
我的问题可能导致这个问题是什么?谢谢
设备:
嗨Auzzz,
probelm的描述非常通用,我看不到问题是通过提供的信息,您必须附加调试器才能检查代码停止的位置,这可能会给我们一个发生的事情你的定制hw。
谢谢mt_dialog.
嗨mt_dialog,
我们发现该问题是由串行端口引起的。DA14681 Devkit的默认电压电平USART1 TX是低电平。我们使用的USB到TTL芯片是CH340,其默认TX是高电平。
不同的电压电平可能导致系统崩溃,通过拆下调试器的TX,系统可以正常运行。
我的问题是为什么DA14681的RX会导致崩溃?我们是否必须找到一个具有与DA14681相同的默认电压电平的调试器?
我们使用硬币电池作为主电源,同时调试器提供3.3V电压电平。不同的参考。电压可能导致问题。
你好,
似乎我们遇到了同样的问题,我们也设计了我们自己的电路板,我下载了SDK 1.0.6的PXP报告者。在大约8秒后,它重置,然后在接下来的8个SCEOND再次重置。..
嗨Auzzz,金麦,
我不认为UART与您体验的内容有关,我相信其他事情是错误的,你所提到的是由另一个问题造成的副作用。一些信息,您使用的包装,您的焊接型材是什么,以及您的定制HW上的模板厚度是多少?
谢谢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
嗨金麦,
你用UART调试了吗?
嗨mt_dialog,
我们使用AQFN包,请遵循DEV套件电路图。只有当CR2032是电源时,才能在DA14681-01A9DEVKT-B上再现此问题。
嗨Auzzz,
我使用UART调试,我只在任务中打印。如果打印在中断的回调中,可能会导致我认为的一些问题。
尝试在调试器中分离TX并检查重置是否消失。
Hi 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。
因此,在开始任何新任务之前,在system_init()中添加以下代码将BoD_VREF导出为P1_7
//将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);//选择焊盘中的模拟测试空间
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.
嗨,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,REG_ADDR,1,REG_DATA,CNT);
如果我关闭BLE堆栈,它会很好。如果没有,则某些事件可能会打扰IIC接口。
我很困惑,因为我用了硬件IIC,在我操作读取或写作功能后,我可以让我的CPU在完成迁移后做另一件事,因为他们会给我一个回调......在这种情况下,如何使用漏洞事件效果硬件IIC?有时iic会错过回调,让我的任务留在块中..
嗨金麦,
如果您发现以前的响应帮助,请将答案标记为已接受,请不要回复答案与线程的主题无关的额外问题,如果您想问一个新的问题,您可以始终创建一个新的线程。
关于你的问题,我不确定我对此,我所理解的只是你缺少中断。通常,BLE中断与任何其他中断的优先级更高,但这并不意味着您将错过I2C中断。可能发生的是,当BLE将睡眠时,您的I2C中断与BLE关键部分同时发生,这具有一个关键部分,该部分禁用大约600us的中断,也许这是您的程序丢失的地方。
还要对您所指的回调何时完成操作完成,您将提及使用同步函数AD_I2C_TRANSACT()和AD_I2C_WRITE()而不是异步相应的函数AD_I2C_ASYNC_TRANACT()这些功能将回调作为参数和不会等待完成操作,并且在操作结束时将调用相应的回调。
Thansk mt_dialog.