STM32晶振匹配总结_第1页
STM32晶振匹配总结_第2页
STM32晶振匹配总结_第3页
STM32晶振匹配总结_第4页
STM32晶振匹配总结_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言客户反馈在批量生产阶段,发现部分产品的MCU的RTC在低温(0℃)下工作不正常,但是在常温下又是正常的,且其他正常的MCU的RTC在常温与低温下都是正常的。问题跟进与分析通过与客户邮件沟通,了解到客户使用的MCU型号是:STM32F030C6T6TR。在产品的主从结构中主要用作电源管理和时钟管理。通过客户的描述,似乎相同型号不同片子都存在较大的差异。由于时间紧急,在了解到初步信息后立即拜访客户,针对客户认为有问题的MCU 芯片做针对性试验。通过 STM32CubMx 生成测试工程,分别使用LSI(40K),LSE(32.768K),RTC工作时每秒通过 LED1(PB5)取反一次(通过LED1灯是否闪烁来指示 RTC是否工作正常),然后分别测量 OSC管脚与PA8脚(输出LSI或LSE),并对比ST官方的NUCLEO-F030板,最终测试结果如下:通过测试结果,我们得到如下信息:当使用LSI时,无论常温还是低温下都能正常工作。E(0℃C(停止闪烁),且PA8管脚无输出,但保持为高电平,且此时OSC管脚此时是存在32.768K的波形的。通过修改负载电容C1&C2的电容值从5.1pF修改到6.8pF时,原本低温下不工作的RTC又能恢复正常工作。对比ST官方的NUCLEO-F030板子,在常温与低温下均能正常工作。从测试结果来看,通过修改负载电容的方式能让原本不能正常工作的RTC恢复正常工作,这个似乎为客户的负载电容不能精准的匹配系统的原因所致。但客户对于这种解释是不接受的,理由是现在设计的负载电容5.1pF是通过测但客户对于这种解释是不接受的,理由是现在设计的负载电容5.1pF是通过测试后的值,精度可以达到6.5ppm,但如果改为6.8pF,那么精度将会变到大约试后的值,精度可以达到6.5ppm,但如果改为6.8pF,那么精度将会变到大约30ppm,这个会影响到 MCU30ppm,这个会影响到 MCU的RTC的时间精准度,系统在长时间运行后,时间必然会偏差很大,超出设计合理范围,这个是不允许的。时间必然会偏差很大,超出设计合理范围,这个是不允许的。如上图,图中的MR1010Mohm这个反馈电阻在实际电路中是没有加的,晶振使用的是TXC的,从晶振厂商提供的数据手册中得到相关参数如下:如上图,图中的MR1010Mohm这个反馈电阻在实际电路中是没有加的,晶振使用的是TXC的,从晶振厂商提供的数据手册中得到相关参数如下:再者,由于客户代码中使用的LSEdrive配置的是最高等级,从下图芯片对应的数据手册中可以找到对应的gm值为25uA/V,此时的驱动电流为1.6uA:3问题分析数是否准确,客户的LSE电路设计如下所示:上图有提到AN2867这个文档,于是我们打开这个文档,在3.4节,发现有这个要求:也就是要求gainmargin的值要求大于5,这样晶振才能正常起振,那么gainmargin又是如何计算的呢?接下来找到gainmargin的计算公式,如下:其中gm就是图4中从数据手册中提到的跨导值,STM32F030LSE的不同驱动等级对应着不同的gm值,由于我们的测试代码使用的是CubeMx自动生成的代码,其默认使用的是最高等级,且客户使用的也是最高等级,因此,这个得出的gm值为25uA/V,gm有了,那么上面公式中的gmcrit又该如何计算,我们接下来找到它的计算公式,如:通过晶振对应参数,我们可以得出:ESR=70KΩ,C0=1.0pF,CL=7.0pF,而F就是LSE的频率,为32.768KHz.于是:g_mcrit=4*7E4*POWER(2*PI()*32768,2)*POWER((1.0E-127.0E-12),2)=7.6E-07最终得到:gain_magin=gm/g_mcrit=2.5E-05/7.6E-07=32.89这个值是远大于5,因此,理论上不会存在晶振不起振是的问题,实际上当在低温下,之前在测试中也有发现晶振也是有起振,有波形输出的,只不过PA8脚没有波形输出,那个又是什么问题呢?提交给division,最终定位到LSE的驱动等级过高,在AN2867这个文档中,提交给division,最终定位到LSE的驱动等级过高,在AN2867这个文档中,有这样的描述:有这样的描述:也就是说,在STM32F0和STM32F3中,当使用最高驱动模式(gm_crit_max=5uA/V,见Figure9gm_crit_max)时,对应地应该只使用在CL=12.5pF的晶振上,以此避免振荡回路饱和,从而导致启动失败。若此时使用了一个较小的CL(如CL=6pF),那么会导致振荡频率不稳定和工作周期可能被扭曲。AN2867随后给出了一张表,列出了驱动等级与gm_min、gm_crit_max的关系,如下:如上图,对于STM32F0,当使用最高驱动模式High时,此时的gm_min=25uA/V,这个与数据手册中是一致的,另外gm_crit_max=5uA/V,正是上面所描述的。也就是说,在使用最高驱动模式下,此时与之对应的CL应该使用12.5pF,而客也就是说,在使用最高驱动模式下,此时与之对应的CL应该使用12.5pF,而客户所使用的CL是7pF,这个与手册AN2867的建议内容是不相符的。从图4户所使用的CL是7pF,这个与手册AN2867的建议内容是不相符的。从图4可以看出,在最高驱动等级模式下,此时驱动电流最大(1.6uA),但这里使用了可以看出,在最高驱动等级模式下,此时驱动电流最大(1.6uA),但这里使用了一个比较小的负载电容(CL=7pF),按AN2867所述,此时有可能导致振荡回路一个比较小的负载电容(CL=7pF),按AN2867所述,此时有可能导致振荡回路饱和,振荡不稳定,工作周期扭曲。饱和,振荡不稳定,工作周期扭曲。此时,应该对应地下调这个 LSE此时,应该对应地下调这个 LSE驱动等级,减小驱动电流,这里有 4档(见Figure。目前使用的是High,正是它出了问题,为保守起见,使用MediumHigh相对合适。打开STM32F030的参考手册,在7.4.9节中:如上图,将LSEDRV[1:0]这两个为修改为10即可,将原先低温下RTC有问题的MCU芯片修改后再次放到低温下进行验证,测试结果为正常。由于此问题是部分芯片有可能会出现的问题,客户需要对修改后的芯片进行持续跟踪,至今没有再反馈出现过此问题,由此,此问题基本算是解决。另外,从图1中所作的测试结果来看,实际上,在低温条件下,RTC出现问题另外,从图1中所作的测试结果来看,实际上,在低温条件下,RTC出现问题的时候,OSCpin还是能正常捕捉到波形,只不过,PA8脚这个MCO上没有的时候,OSCpin还是能正常捕捉到波形,只不过,PA8脚这个MCO上没有波形,只是维持在高电平。于是,对于驱动电流过大所导致的振荡回路饱和,振波形,只是维持在高电平。于是,对于驱动电流过大所导致的振荡回路饱和,振点,也就是MCO所表现的波形。4点,也就是MCO所表现的波形。4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论