你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

一个软件引起的 LSE 驱动不良的问题

[复制链接]
STMCU小助手 发布时间:2022-8-4 22:03
1. 引言1 p& Y4 c; G! r3 z$ g
现在大多数 STM32 系列都支持修改 LSE 的驱动能力以支持更多型号的 32.768kHz 晶体了。那么在设置 LSE 的驱动能力上,软件上是不是有需要注意的地方?# Q; N( F2 r. h( x: D
/ ~+ {0 Y" N+ A. l; Y0 n1 z! w2 b( d
+ i- m/ f0 f+ F1 q5 e
2. 问题描述
( N- i: e" x, l: Y6 ]" `( w' _某客户在其产品的设计中,使用了 STM32L051R8T6。之前已经建议客户注意根据AN2867 以及 LSE 晶体的规格书,计算一下增益裕量,以确保 LSE 晶体可以正常起振。, M4 s& T& l% H6 m6 e" l
但是,客户还是反馈小批量生产时,仍然发现少量的 LSE 晶体无法起振的问题。! m3 N6 O) d1 i9 ]( v! X" T- k
( C) Q& R/ G) |/ {0 m/ p
& n3 ?% X& F9 B5 E6 c- a
3. 问题分析与定位3 x+ S) p3 [4 X7 G/ q. k+ k3 L& r
3.1. 了解问题$ {7 s& D1 @. w. _8 g
客户听取之前的建议,学习了 AN2867,然后对他们所使用的晶体进行增益裕量计算。计算过后客户决定使用最大档的 LSE 驱动能力。但是看起来并没有解决 LSE 晶体无法起振的问题,此问题在少量电路板上仍然存在。客户分享了他们所使用晶体的规格书以及 LSE 驱动的代码。
- |  l) o+ `& v! Q0 g1 d0 B0 x+ V3 o4 v9 \9 d3 [
3.2. 分析问题
7 H3 n8 N: L' c阅读客户发来的晶体的规格书,电气特性如图 1 所示。+ i. U5 Z1 V( A1 X5 g: c
图1. 32.768K 晶体电气特性 0 Z5 `2 Y# s1 _7 @8 [
R}C7TUT]BBFVHR7[DA3(TAB.png
5 Y' V! D9 O+ p. T% O: q4 r " m- R/ Z$ n' c8 w
提取出三个重要参数:
; n! m$ o5 [" ^8 x+ t' h& HESR = 70k ohm
6 F, H5 c( {( Y7 `) gCL = 12.5pF# t2 ~, S# p% X( C3 _& s! [
C0 = 1.0 pF/ L1 \5 V7 K. Y- i7 z
根据这三个重要参数进行跨导的计算。
1 @9 W  F0 D! n
  L! o$ X7 x. q: i9 m( \8 u# x
O@]5S2YHQ{X5(ZR~83HKS.png ; C* S4 w9 l; f$ v8 v3 ]

3 A# T9 x; C+ }$ r查看 STM32L051 的数据手册中查看关于 LSE 的驱动能力,如图 2:! Z$ H* Q5 U' ?' T" K9 C

! `5 ^  y9 c# r4 S# j5 |, @
' d. x$ q4 b' V2 B+ b! @
CQYSMNQX2JJ2$VX9J5QSCA0.png 6 Z  r8 @4 ^  \  M

/ g. ~4 L# |! B3 G* K7 v3 U可以看到,这里所标注的跨导为 Gm,值为最大值,也就是说,并不需要去计算增益裕量,只需要计算出的 gmcrit满足这个最大值条件就可以了。从表格可以看到,STM32L051的 LSE 驱动能力在最低档位(LSEDRV=“00”)时,Gm最大值为 0.5uA/V;在最高档位 (LSEDRV=“11”)时,Gm最大值为 2.7uA/V。
  F. ?' F) w1 W( B" _所以,前面所计算出来的值为 2.163uA/V 的 gmcrit只能使用最高档位(LSEDRV=“11”)来驱动。" A6 F5 Z2 A4 G$ C
根据客户的反馈,他已经在程序里将 STM32L051 的 LSE 晶体设置到最高档位 LSEDRV=“11”了,按道理应该是可以正常驱动的。那为什么还是有驱动的问题呢?现在来检查一下客户的代码。2 K* x: K4 \0 I6 N- x4 V9 _# T; P
3 `% E+ I- @- u( A+ m
客户的代码中,LSE 的驱动程序是这样的:
  1. __HAL_RCC_PWR_CLK_ENABLE();: ^! O, @( _  _7 e4 }0 D3 r9 {
  2. HAL_PWR_EnableBkUpAccess();
    ) m1 T1 _2 M: L2 u7 o# b
  3. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
    : O) J1 H: B3 ]4 M% C+ l. {3 |
  4. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;7 D2 J/ O1 F9 x- X
  5. RCC_OscInitStruct.LSEState = RCC_LSE_ON;
    2 v7 k+ d& J3 }) @- i4 r
  6. if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK): _( ~4 |6 ~% }7 x3 k' P
  7. {
    # N& k' S8 K$ |
  8. Error_Handler();
    " g: k) \5 Y5 b8 @3 r3 ~
  9. }3 m+ B' U$ Q' K) T6 E5 \- Y1 H
  10. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;& X2 Y4 a- ]) R, [
  11. PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;1 j2 \  z3 x& z
  12. if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
    / L2 P3 N6 W+ d- x. S
  13. {
    - }  V3 G$ a) g! W  f
  14. Error_Handler();
    3 p+ ^# L5 Z' E- D: G- |0 E5 U- Q, b
  15. }$ t( q5 U/ O* D5 ~' i4 ~
  16. __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH);
复制代码
5 Y) o' Q: q$ S- J) C
; i% q; _- u, z( |
看了这段代码,大家是否发现了什么问题?
& D0 h; G" X( S这段代码的执行顺序是这样的:打开 PWR 时钟并使能访问后备域→启动 LSE→将RTC 时钟源选择为 LSE→修改 LSE 驱动能力为最高档位。; D- K! H! G: ?1 d# b- w/ ]
虽然说在参考手册里有这么一段话,如图 2:
( p* R4 q; V2 l) w! J
. [7 u3 X, U) \
& Z3 b9 r7 r4 `7 u8 l
JKQ9}G8JS3G_T`]]UXFB)FK.png 5 E$ [: p6 m& {5 r8 u
6 T; }4 L/ f, ]  i/ z6 }! I$ T

* y% S5 E3 u( d% M+ j  l+ r它的意思是允许在运行过程中随时修改 LSEDRV 的值。但是,我们也不能随心所欲,想怎么改就怎么改,想在哪里改就在哪里改。) p! F  @0 |+ Z. k& J
就比如现在这个问题,客户的代码是先启动 LSE,然后再去修改驱动能力为最高档的。也就是说,LSE 的启动是在最低档(默认 LSEDRV=“00”)时启动的,启动后才改的最高档。那么,刚才已经计算过,这个晶体在 LSE 最低档位驱动能力下并不能满足条件,所以不能起振的风险是很大的,而如果使用最高档位则没有问题。所以,代码选择在最低档位启动是存在风险的,如果起振没有成功,那么在下面代码
5 L% c  T! e0 ]4 [4 M5 z  p  ~
  1. if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)$ k, X$ j- `% E" M& D7 Y( G* B
  2. { / |' U1 W/ _( K8 ?
  3. Error_Handler();; N$ ]0 ?2 e8 D" D8 e! G
  4. }
复制代码

( h$ H( ~6 @0 Z: J8 M2 e. L9 S  ~  @$ P/ v. x! |
跑到了 Error_Handler()中去,并死在那里,根本不会跑到后面去把驱动能力设置为最高档位。所以,这个代码的顺序是有问题的。
, z2 P3 v( V2 {# j- T& p: f2 U( Q6 t1 R# A
1 x0 A( N- h% [+ d
完整版请查看:附件
& @7 h4 W9 `* Q$ W1 h* ]5 l
" ~+ t8 d0 R* E9 S2 {# ^- Y. J  a; l0 {+ x

LAT1043 一个软件引起的LSE驱动不良的问题_v1.0.pdf

下载

400.28 KB, 下载次数: 55

赞 1 收藏 评论0 发布时间:2022-8-4 22:03

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版