嗨对话框,
我们为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.Peak: GPIO端口在进入main()函数时设置为HIGH(端口配置为input + pull-up),之后立即设置为LOW(端口配置为input + pull-down)。
2.峰值:进入VLPTIMARCLACKBORCHING时,GPIO端口设置为高(配置为输入+上拉的端口)。它被设置为低于我猜的Bor的一部分,因为我没有手动将其设置为低电平。
3.Peak:在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 pads是连接在芯片上的吗?
嗨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_ramp);
Dcdc -> dcdc_v18_0_reg &= ~ reg_msk (Dcdc, dcdc_v18_0_reg, dcdc_v18_fast_ramp);
Dcdc -> dcdc_v18p_0_reg &= ~ reg_msk (Dcdc, dcdc_v18p_0_reg, dcdc_v18p_fast_ramp);
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 =注册;
#万一
如果我编译用#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 =注册;
这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问题。