1、晶振电源去耦非常重要,建议加磁珠,去耦电容选两到三个,容值递减。
2、时钟输出管脚加匹配,具体匹配阻值,可根据测试结果而定。
3、预留的电容C1,容值要小,构成了一级低通滤波,电阻、电容的选择,根据具体测试结果而定。
应该是LM1117给他供电的吧,STM32到没这么脆弱,通电后试试那个1117芯片热不热。因为STM32有时坏容易某个电源引脚直接短路,另外你下载成功能直接运行吗,不行看看有LED这类的接IO上的元件,先下个控制这个IO的判断是否在运行,然后在排查液晶部分。比如是不是上拉电阻断开了或是别的什么原因。
另外你的BOOT设置看看别错了。。
所谓串口的波特率自适应,如果你的键盘是发送固定格式的报文,那么需要进行波特率检测,就是把所有波特率全部试一遍,得到那个固定格式的报文的就是应该有的波特率。按照这个思路去写程序,不然你做不到波特率自适应。当然也许你会想到更好的算法。另外一个办法是让键盘发一个带有0和1的报文序列。这样通过判断脉冲宽度也可以得到波特率,不过这个办法复杂了点。
STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了。很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了”
更有阴谋论者提出让人啼笑皆非的解释——STM32的RTC晶振不起振是ST与晶振厂商串通后故意搞出来的,目的是提高某晶振厂商高端晶振的销量。
最近做的几块板子也用到了STM32的RTC,前后两版一共做了大概6片,幸运的是并未遇到晶振不起振的现象。而我采用的是3毛钱一个的普通晶振,并未选用传说中低负载高精度晶振。后来在另外一片实验性质的板子上首次遇到了晶振不起振的问题,而且做了2片都不起振,这才让我意识到这个问题的严重性。
从上述现象来看,我认为对RTC晶振起振影响最大的因素应该是PCB的布线。但是遇到问题时通常是PCB已做好,甚至已经做了几百块,没有回头路了。于是大家更关注的问题似乎就是“如何补救”了。在网上搜索一下,你就会发现世界是如此美好!每个人的经验和建议都不一样,甚至是完全相反的!这种现象告诉我们,除了PCB布线,对晶振起振影响最大的似乎不是电气参数,而是另外一种不可忽略的因素——人品!
各种相互矛盾的经验也告诉我们,导致晶振不起振的原因是多种多样的,也是因“人”而异的。也许,我们无法找到一个绝对有效的经验一举解决STM32的RTC晶振这个让人头疼的问题,但我们可以从各种经验中找到一些线索,为最终摸索到适合自己这块板子的解决方案提供一些帮助和提示。
如果晶振不起振,尤其是你已经使用了传说中的爱普生6pF晶振后还是不行,也许你应该尝试对以下几个方面排列组合,找到适合你这块板子的,更容易起振的方式。
下面就罗列一下可能影响RTC晶振起振的因素
1 晶振的品牌和负载电容
大家貌似都知道要用6pF的晶振,但我发现其实125pF的也可以用。大家都说KDS日本原装的好,我那个3毛钱的国产晶振貌似也没啥大问题。。。
2 晶振外接的匹配电容
有人说6pF的晶振要配6pF的电容。但有经验公式指出这个电容的值应该是晶振本身负载电容的两倍,6pF的晶振应该配10pF的匹配电容,当然125pF的就应该配20pF或者22pF的电容了~电容值不匹配可能造成晶振不起振。更神奇的是,有人指出去掉外接的匹配电容会使晶振起振!这似乎没啥道理,但在我的板子上,有且仅有这个方案是可行的!!!
3 晶振并联的反馈电阻
晶振可以并联一个高阻值的电阻,据说这样更容易起振。。。这个电阻的阻值有人说是1MΩ,有人说是5MΩ,也有人说是10MΩ,,,当然也有人说不能并联这个电阻,并联了反而不起振
4 XTALout到晶振间串联电阻
这种做法是官方的应用笔记指出的,而且给出了这个电阻的计算公式。对这个电阻的的必要性也是众说纷纭,同样存在两种矛盾的说法,即必须要有这电阻,否则不起振。还有一说不能有这个电阻,否则不起振。。。从官方的应用笔记来看,这个电阻的主要作用是保护晶振,以防晶振发热。由此看来这个这个电阻似乎并非影响晶振起振的主要因素,甚至可能让晶振更难起振。
5 晶振的外壳是否接地
这个就不用说了吧。晶振的外壳是金属的,做封装时可以把那个焊盘做成机械焊盘而悬空,也可以做成电气焊盘,然后连接到GND。对这个说法同样存在争议,有人说外壳必须接地,也有人说接地后反而不起振。
6 提高Vbat引脚的电源质量
这种说法是有一定道理的,因为RTC部分是由Vbat的来供电的。有人说Vbat引脚对电源质量要求比较高,如果纹波较大可能会影响晶振的起振。网上还有其他人验证过,直接上图(原贴链接:>
其实你引出的问题很好,就是在晶振坏了的情况下,如何知道HSI替换了HSE。这里,可以用jlink跟踪一下,进入void SetSysClockTo72(void)函数后,前几句有个while函数看是否能通过, 即HSEStatus这个状态。不过你这个情况(晶振焊错了),并不是配置出错或者硬件出错,应该不影响。
如果继续深究,那么我的问题就来了,HSE外部晶振坏了,或者说直接就没焊,但程序还是照常跑,那么程序是如何进入到HSI进行配置的呢?我真是没有找到
以上就是关于stm32用有源晶振如何设计全部的内容,包括:stm32用有源晶振如何设计、STM32不能运行程序,能下载,而且用示波器测过晶振有波形、如何使用STM32F0的晶振腿做GPIO口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)