STM32F103RET6外部8M晶振不起振原因及解决方法
这是初次做STM32F03RET6的方案设计,在原理图设计及PCB-LAYOUT完成后,就进行贴片电路板及硬件调试。在测试硬件电路时发现,供电电路正常为3.3V。STM32F03RET6外挂8M晶振不起振。
用万能表测量OSC_IN脚位的电压为0.9V;OSC_OUT脚位的电压为0.89V。二脚位的电压没有电压差。正常有1.5的电压差。用示波器测量也没有波型输出。细思良久找不到解决的办法。找找资料看看,于是在网上找了一些资料如下:STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了。很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了”
更有阴谋论者提出让人啼笑皆非的解释——STM32的RTC晶振不起振是ST与晶振厂商串通后故意搞出来的,目的是提高某晶振厂商高端晶振的销量。
在网上搜索一下,你就会发现世界是如此美好!每个人的经验和建议都不一样,甚至是完全相反的!
各种相互矛盾的经验也告诉我们,导致晶振不起振的原因是多种多样的,也是因“人”而异的。也许,我们无法找到一个绝对有效的经验一举解决STM32的RTC晶振这个让人头疼的问题,但我们可以从各种经验中找到一些线索,为最终摸索到适合自己这块板子的解决方案提供一些帮助和提示。
显然这些都是没有证据的推测。还是回来到面前的板子来想一想,外挂晶振,还有内部晶振。外挂晶振不起振是不是可以试试内部的晶振呢。查阅STM32的规格书。
从资料的描述可以得到:系统复位后HSI振荡器(内部晶振)被选为系统时钟。HSE时钟是外部时钟。HSE晶体可以通过设置时钟控制寄存器(RCC_CR)中的HSEON位被启动和关闭。也就是说外部晶振是否起振,在硬件电路正确的情况下,是可以通过内部的软件来控制的。
软件设置。HSEON=1,外部晶振开启。
用示波器测量,OSC_OUT有波型输出。问题完美解决。