嗨对话,
我们基于基本Devkit开发了最低DA14681系统的开发板。
我们在基本开发套件上正确运行的代码,它只是在定期打印“ Hello World”即可。
但是,当我将图像下载到拥有的板上时,该代码仅在10秒后短时间运行,该程序停止了。我们构建了5个开发板,所有这些都显示出相同的错误。
发展环境:
1.Martsnippets 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,
概率的描述非常通用,我看不到提供的信息在哪里,您将必须附加调试器才能检查代码的停止位置,这可以为我们提供有关发生的情况的线索您的自定义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秒后,它重置,然后再一次又一次地重置。..
嗨,auzzz,国王,
我认为UART与您的经历有关,我相信其他问题是其他问题是由另一个问题造成的副作用。一些信息,您正在使用的包装,您的焊接配置文件是什么?您的自定义HW上的模板厚度是多少?
谢谢mt_dialog
嗨,mt_dialog
我认为我的董事会有问题,当我使用演示项目PXP记者时,我对此没有任何更改。它在开发套件中效果很好。当我下载到自己的板上,并使用 +vbat和-vbat进行供应,它一次又一次地重置一次。但是,当我将5V提供给VBU时,它可以很好地工作,或者只是将系统的功率保留在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_btle_v_1.0.6.968 \ projects \ dk_apps \ demos \ demos \ demos \ pxp_reporter
嗨,国王,
您是否使用UART进行调试?
嗨mt_dialog,
我们使用AQFN软件包,遵循开发套件电路图。只有在CR2032是电源时,才可以在DA14681-01A9DEVKT-B上复制此问题。
嗨,auzzz,
我使用UART进行调试,并且仅在任务中printf。如果中断的回调中的printf可能会造成一些问题,我认为。
尝试在调试器中分离TX,并检查重置是否消失。
嗨,金韦,奥兹兹,
据我所知,您的经验是与自定义PCB上的接地焊接有关的。由于在8到10秒钟后,两个板的停滞很可能是因为Bod启动并在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中启用模拟测验
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/OPEN模式
保持BOD禁用,因此不会通过在custom_config_qspi.h文件中添加#Define DB_Configuse_bod(0)来启动它,并禁用睡眠模式。
为了在示波器上看到它,您必须隔离电源以避免噪音并在电池上运行笔记本电脑,以将其与可以通过地面注入噪音的设备隔离,因此请非常小心。
关于您可以在基本套件上复制它的事实,我无法在设置上看到类似的东西,我下载的运行并使用了与接近记者的UART,并且使用1.0的CR2032电池运行的Multilink Demo.6 SDK。
谢谢mt_dialog
嗨,mt_dialog
非常感谢您回答我们的问题。
在测试之前,项目的饱满是#define dg_configuse_bod(1),并打开睡眠模式,它将重置
我对此进行了测试,
首先,#Define DG_Configuse_bod(0),然后关闭睡眠模式,运行良好。
其次,#Define DG_Configuse_bod(0),然后打开睡眠模式,它将重置。
如前所述,我发现重置比电源模式管理更相对。
当我使用硬件IIC时,我遇到了另一个问题。
我像这样操作IIC写入函数:ad_i2c_write();读:ad_i2c_transact(dev,&reg_addr,1,reg_data,cnt);
如果我关闭BLE堆栈,它可以很好地工作。如果不是,有些事件可能会打扰IIC界面。
我感到困惑的是,由于我使用了硬件IIC,在操作读写功能后,我可以让我的CPU完成另一件事,之后完成了另一件事,他们会给我一个回调...在这种情况下,BLE事件的剂量如何影响硬件IIC?有时,IIC会错过回调,让我的任务留在街上。
嗨,国王,
如果您发现以前的响应有帮助,请标记答案是接受的,也请不要回答一个与线程主题无关的问题的答案,如果您想问一个新问题,您可以随时创建一个新线程。
关于您的问题,我不确定自己做对了,我了解的是您缺少中断。通常,BLE中断与其他任何中断相比具有更高的优先级,但这并不意味着您会错过I2C中断。可能发生的是,您的I2C中断与BLE关键部分相同发生,当BLE入睡时,它具有关键部分,可以禁用大约600US的中断,也许这就是您的程序停滞不前。
还关于操作完成后所引用的回调,您提到您正在使用同步函数AD_I2C_TRANSACT()和AD_I2C_WRITE()和AD_I2C_WRITE(),而不是asynchronous对应函数AD_I2C_ASYNC_ASYNC_STRANSACT()这些功能作为参数和参数为参数。将不会等待操作完成,并且在操作结束后将调用相应的回调。
thansk mt_dialog