使用
STM32G030C8T6过程中,发现给
单片机供电的上电启动时间会影响单片机HSE的工作,上电时间长,HSE不工作,上电时间短时则HSE可以工作。
我的问题:
1、给STM32G030C8T6供电的上电启动时间会影响STM32G030C8T6的什么地方从而使HSE不能正常工作?真正的原因是什么?
2、有没有什么方法可以实现
电路板的小改动来解决目前的问题?
3、如果STM32G030的HSE工作真的会受启动时间影响,在选择供电芯片时应该注意哪些参数?
4、有没有什么其他影响HSE工作的因素?
具体描述如下:
1、我的原理图:
GND与DGND通过一个0R电阻连接
2、程序
程序用STM32CubeMX配置生成。
3、现象
当使用CUBE将PLL配置为HSI时,程序可以正常运行,但是将PLL配置为HSE时,程序会在执行SystemClock_Config();函数过程中卡在下图的223行。
进一步查看,程序卡在stm32g0xx_hal_rcc.c的第356行,如下图。
用示波器查看外部的有源晶振波形,显示波形正常。
将与单片机有连接的其他芯片全部拆除,只保留单片机最小系统,经过多次试验,发现与TPS5410的上电时间长有关系,将TPS5410替换为TPS54332之后,在
仿真时SystemClock_Config();函数可正常运行,TPS54332的电路图如下图,在试验时,已经将TPS54332的输出电压根据试验需要改为5.2V或6V。
原电路图TPS5410上电启动波形如下图:
原电路图LM1117 3.3V上电启动波形如下图:
TPS54332上电启动波形(图中黄色波形):
将TPS5410替换成TPS54332后,LM1117 3.3V的上电启动波形:
4、进一步的试验:
为了排除LM1117 LDO的影响因素,将LM1117替换为同封装不同型号的其他3.3V固定输出芯片,共替换了5片,现场均与上述描述一致,HSE不工作。
为了排除LP38692 LDO的影响因素,将TPS5410电路更改为输出5.2V,直接用TPS5410给LM1117供电,现象与上述描述一致,HSE不工作。
用TPS54332给TPS73701供电,再用TPS73701给STM32G030供电,HSE可正常工作。
…………类似试验得出的结论是:只要用到TPS5410 HSE就不能正常工作,猜测与上电启动时间长有关。
为了验证是否真的与上电时长有关,用TPS54332直接给LM1117供电来试验。通过更改TPS54332的4脚SS处连接的电容容值来更改TPS54332启动时长。原来的原理图中用的电容是8.2nF,根据下图公式得出启动时间是3.28ms,实际测得的约4ms。
电容值为8.2nF时(HSE工作正常):
TPS54332启动波形(图中黄色线):
LM1117启动波形(图中黄色线):
将电容改为22nf(HSE工作不正常):
TPS54332启动波形(图中黄色线):
LM1117启动波形(图中黄色线):
将电容改为6.8nf(HSE工作正常):
TPS54332启动波形(图中黄色线):
LM1117启动波形(图中黄色线):
此外,还将容值改为了15nf(HSE工作不正常)、10nf(HSE工作不正常)、5.6nf(HSE工作正常)、3.3nf(HSE工作正常),还试验了其他LDO。
结论:LDO的上电启动时间小于2ms时,STM32G030的HSE可正常配置,可正常工作。