CH32V307开机初始化卡死在:while(RESET == RCC_GetFlagStatus(RCC_FLAG_PLL3RDY));

CH32V307开机初始化,eth_driver.c里面ETH_SetClock()函数。


经常卡死在:while(RESET == RCC_GetFlagStatus(RCC_FLAG_PLL3RDY)); 


这一句上面。


下面是代码和运行LOG截图。


求问:原因和如何解决。

6c64a5c9044bf9db58cf372df8a01d9.png

您好,从log上看是外部晶振没起振导致,可以检查一下晶振,或看一下代码是否选中外部晶振时钟

image.png


我的电路如图所示。

image.png


代码如下图所示。

image.png



可是晶振还是经常不起振,10次通电有8次是不行的。只有偶尔2-3次是正常能启动的。


请问,晶振的选型有什么要求吗?


我用的晶振是:8MHZ  20pf  10ppm   smd3225  


是否需要重新换晶振,或者改晶振旁边的两个电容?


如何才能保证 晶振的可靠起振?


不起振如果原理图标准的话需要检查Layout 规范.

最近案子都是用HSI省了晶振,但之前的案子没有出现起振异常问题,用12Mhz的3225晶振.


您好,晶振8M应该是没问题的,负载电容以厂商建议为准,关于负载电容的计算方法,可参考一下下帖:

https://www.cnblogs.com/wchmcu/p/17478567.html

 


只有登录才能回复,可以选择微信账号登录