嗨对话框,
我们为DA14680开发了一块定制板,并每8秒体验BOD重置。
BOR仅在DCDC上发生。
在BOR事件之后,CRG_TOP-> BOD_STATUS_REG寄存器读取十进制值19,有时21.它表示1V8或1V8P轨道的问题,但我找不到原因。
DA14680处于AQFN-60封装。
此外,我们使用BLE_Peripheral示例和Lates SDK的略微修改版本(SDK_1.0.14.1081)
请附上一系列BOR活动。
GPIO输出的高信号如下:
1.峰值:在进入main()函数时,GPIO端口设置为高(端口配置为输入+上拉),然后将后方设置为低电平(配置为输入+下拉的端口)。
2.峰值:进入VLPTIMARCLACKBORCHING时,GPIO端口设置为高(配置为输入+上拉的端口)。它被设置为低于我猜的Bor的一部分,因为我没有手动将其设置为低电平。
3.峰值:BOR事件后再次调用Main()函数。
如其他论坛帖子和硬件指南中所述,DCDC接地垫的正确连接很重要,并且良好的地面连接可能是原因。另一方面,您可以在QFN封装的底部看到所有接地焊盘互连。
在DA14681开发套件上没有问题,同一代码运行 - 基本。
你能给我额外的帮助吗?
设备:
嗨Martinfehre,
BOD问题的最可能原因是因为糟糕的接地。8秒后,芯片第一次睡觉,然后将开始使用DCDC。因此,当接地坏(BOD REF被提升)时,POR是引起的。请注意,680 QFN60封装需要实木的地板。强烈建议在接地垫中施加约9个通孔,并通过靠近DCDC降压接地销。该引脚是VBAT1,VBUS,VBAT2之间的地面。
谢谢,PM_DIALOG.
嗨pm_dialog,
请看看附带的PDF。它是我们顶层格柏文件的一部分。
接地垫中有16个通孔,其中一个靠近DCDC接地存根。你有什么建议?
您能否确认GND PAD在芯片上连接在一起?
嗨Martinfehre,
根据布局,680似乎焊接到中心垫。16个通孔到地面应该足够了。我们有专用地板为块减少噪音,因此并非所有接地焊盘都应该连接在芯片上。强烈建议在PCB上提供实心地面。
谢谢,PM_DIALOG.
嗨pm_dialog,
我仍在寻找BOR问题,迄今为止,该论坛的支持并不是有用。您基本上重复了在硬件设计指南中写的内容。
要仔细检查是否是我的PCB的布局问题,我的一位同事设计了第二个PCB - 结果是相同的。
我们还尝试使用不同的模板厚度和垫切口,以确保GND焊盘正确连接。焊接过程明显更好,但它没有解决鲍尔问题。
最终我开始怀疑鲍尔是由于差的接地。所以我潜入源代码。在阅读数据表之后,调试和测试我在HW_CPM_DCDC_CONFIG(void)中找到了此代码:
#if dg_configblack_orca_ic_rev == black_orca_ic_rev_a
dcdc-> dcdc_v14_0_reg&=〜(reg_msk(dcdc,dcdc_v14_0_reg,dcdc_v14_cur_lim_min)|
REG_MSK(DCDC,DCDC_V14_0_REG,DCDC_V14_FAST_RAMPING));
dcdc-> dcdc_v18_0_reg&=〜(reg_msk(dcdc,dcdc_v18_0_reg,dcdc_v18_cur_lim_min)|
REG_MSK(DCDC,DCDC_V18_0_REG,DCDC_V18_FAST_RAMPING);
dcdc-> dcdc_v18p_0_reg&=〜(reg_msk(dcdc,dcdc_v18p_0_reg,dcdc_v18p_cur_lim_min)|
REG_MSK(DCDC,DCDC_V18P_0_REG,DCDC_V18P_FAST_RAMPING));
dcdc-> dcdc_vdd_0_reg&=〜(reg_msk(dcdc,dcdc_vdd_0_reg,dcdc_vdd_cur_lim_min)|
REG_MSK(DCDC,DCDC_VDD_0_REG,DCDC_VDD_FAST_RAMPING));
#别的
dcdc-> dcdc_v14_0_reg&=〜reg_msk(dcdc,dcdc_v14_0_reg,dcdc_v14_fast_ramping);
dcdc-> dcdc_v18_0_reg&=〜reg_msk(dcdc,dcdc_v18_0_reg,dcdc_v18_fast_ramping);
dcdc-> dcdc_v18p_0_reg&= reg_msk(dcdc,dcdc_v18p_0_reg,dcdc_v18p_fast_ramping);
dcdc-> dcdc_vdd_0_reg&=〜reg_msk(dcdc,dcdc_vdd_0_reg,dcdc_vdd_fast_ramping);
reg = dcdc-> dcdc_ctrl_2_reg;
REG_SET_FIELD(DCDC,DCDC_CTRL_2_REG,DCDC_LSSUP_TRIM,REG,0);
REG_SET_FIELD(DCDC,DCDC_CTRL_2_REG,DCDC_HSGND_TRIM,REG,0);
dcdc-> dcdc_ctrl_2_reg = reg;
#万一
如果我编译在#else中写入的代码并将固件闪烁到DA14680,则不再发生BOR。
所以我看起来更接近并将整个东西缩小到4行:
reg = dcdc-> dcdc_ctrl_2_reg;
REG_SET_FIELD(DCDC,DCDC_CTRL_2_REG,DCDC_LSSUP_TRIM,REG,0);
REG_SET_FIELD(DCDC,DCDC_CTRL_2_REG,DCDC_HSGND_TRIM,REG,0);
dcdc-> dcdc_ctrl_2_reg = reg;
这4行防止微控制器重新启动。这些注册表设置应该是什么?
嗨Martinfehre,
您发布的代码与BOD问题无关。正如我在我以前的帖子原因中提到的,因为BOD问题是因为接地不好,所以它是您的自定义PCB上的问题。您是否尝试改善PCB的糟糕接地?
谢谢,PM_DIALOG.
我也有完全相同的问题。
我们现在已经制作了两个板,8秒后仍然仍然获得BOR。
嗨point85,
您可以查看您的定制董事会的接地吗?正如我在上一篇文章中提到的那样,BOD问题的最可能原因是因为接地差。
谢谢,PM_DIALOG.
是的,我看到第一板之后,所以我们做了一秒钟。仍然收到同样的问题。
我刚发现了470nh电感器不符合规格。这可能会造成同样的问题吗?
嗨point85,
在切换到4层设计后,我们摆脱了BOR。地层现在在顶层下面0.15毫米。在它是1.5毫米之前。
谢谢Martinfehre。不太确定在设计上的差异。
谢谢Martinfehre。不太确定在设计上的差异。
我已经尝试过两个板上的新电感,仍然存在相同的问题。真的坚持这个。
嗨point85,
答案由Martinfehre提供。4层板固定了我的BOR问题。