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

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

[复制链接]
STMCU小助手 发布时间:2022-8-4 22:03
1. 引言
5 l7 q1 H4 y2 d( M现在大多数 STM32 系列都支持修改 LSE 的驱动能力以支持更多型号的 32.768kHz 晶体了。那么在设置 LSE 的驱动能力上,软件上是不是有需要注意的地方?! }$ M  M1 a$ {
" `/ p' {2 }+ G/ T% G8 g4 [6 j

; D% R( C* \, ~/ U5 G7 {2. 问题描述
, Z7 x4 S5 ?8 Q" b6 E2 K某客户在其产品的设计中,使用了 STM32L051R8T6。之前已经建议客户注意根据AN2867 以及 LSE 晶体的规格书,计算一下增益裕量,以确保 LSE 晶体可以正常起振。1 H( X/ `$ q# ~
但是,客户还是反馈小批量生产时,仍然发现少量的 LSE 晶体无法起振的问题。
5 C3 y0 ?! c5 R& p2 B/ D3 A
$ W: G9 ^* A4 w' B, o; G. _

! A8 r: D7 X2 u/ @2 r) y3. 问题分析与定位' \5 J* a# V* K$ I  P1 K5 X
3.1. 了解问题* }( ~: o3 @6 B/ v( Z' w  q% ~6 A0 R
客户听取之前的建议,学习了 AN2867,然后对他们所使用的晶体进行增益裕量计算。计算过后客户决定使用最大档的 LSE 驱动能力。但是看起来并没有解决 LSE 晶体无法起振的问题,此问题在少量电路板上仍然存在。客户分享了他们所使用晶体的规格书以及 LSE 驱动的代码。* d8 w" A# g. x

! c4 B7 k/ o7 E# y2 {# J4 K3.2. 分析问题
/ ^, U$ @" M. I阅读客户发来的晶体的规格书,电气特性如图 1 所示。
/ ?; `6 x& f3 v: N7 F图1. 32.768K 晶体电气特性 ! C. G0 I* \2 U4 \- e) b
R}C7TUT]BBFVHR7[DA3(TAB.png % h  m/ _: ~2 V8 ^! z2 y

" M( x% l! h0 K- T& F7 T3 i提取出三个重要参数:
8 D/ B& M# K* w6 gESR = 70k ohm( s% t- }/ }; O. u1 w5 q
CL = 12.5pF
7 ~- [. e( O, MC0 = 1.0 pF1 H+ e9 R! D  c' L( \2 s
根据这三个重要参数进行跨导的计算。 9 a% E) I* ?5 {1 s
) V5 V; t/ |4 d, E+ C
O@]5S2YHQ{X5(ZR~83HKS.png : n9 {5 ?, e* n3 d# i. A7 l! W8 |

8 E& `4 z, J! u, q) t/ v查看 STM32L051 的数据手册中查看关于 LSE 的驱动能力,如图 2:0 Y- D: ]/ `6 a
9 O* G% v$ B4 A* o0 T: \
4 @  E' W1 m+ o, J0 i' t
CQYSMNQX2JJ2$VX9J5QSCA0.png 9 J" L& [6 ]( g  z1 l( F
/ c9 {9 t& q7 p* C8 S
可以看到,这里所标注的跨导为 Gm,值为最大值,也就是说,并不需要去计算增益裕量,只需要计算出的 gmcrit满足这个最大值条件就可以了。从表格可以看到,STM32L051的 LSE 驱动能力在最低档位(LSEDRV=“00”)时,Gm最大值为 0.5uA/V;在最高档位 (LSEDRV=“11”)时,Gm最大值为 2.7uA/V。$ J3 h* P% P. O
所以,前面所计算出来的值为 2.163uA/V 的 gmcrit只能使用最高档位(LSEDRV=“11”)来驱动。4 l+ R8 F1 o& ?9 Z" D9 K) z5 z
根据客户的反馈,他已经在程序里将 STM32L051 的 LSE 晶体设置到最高档位 LSEDRV=“11”了,按道理应该是可以正常驱动的。那为什么还是有驱动的问题呢?现在来检查一下客户的代码。
, m( {2 j+ M' `" ~1 \- p
& r+ g' u0 s9 r; J' X2 p& Z客户的代码中,LSE 的驱动程序是这样的:
  1. __HAL_RCC_PWR_CLK_ENABLE();
    ) h$ j+ G/ z- h) q6 _
  2. HAL_PWR_EnableBkUpAccess();
    ( h( f2 J! C2 u
  3. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
    0 u# z/ v. z1 T6 d# s
  4. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
    # R) x/ u( z# _- e% Q$ V% Z. V
  5. RCC_OscInitStruct.LSEState = RCC_LSE_ON;7 l. V. U, a. {1 v
  6. if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)0 J5 d  P1 R" q; s" y
  7. { - O- W- ^! L$ m+ ^/ l
  8. Error_Handler();4 b1 `9 ?5 A8 `/ ^0 t
  9. }
    " ~' L7 j* f' J; u* C* B% _
  10. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
    * j" C: F4 l- L- i6 @- c
  11. PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;9 ^/ E3 J; \  B; ~: S; Q
  12. if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
    : g5 d0 G4 {8 ]0 ?# e, Q
  13. {
    " n1 h% a$ a3 g1 @2 C
  14. Error_Handler();
    / |- d% R& ]2 V9 r8 r+ N
  15. }; s# x; \( h3 b' Y$ O$ w0 j# Z. ^) B
  16. __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH);
复制代码
' Y& _9 v, \5 }1 i

; n8 J4 `: ?2 g4 A% [* }( J* @( S看了这段代码,大家是否发现了什么问题?
* D  j7 j- s3 e  Z; D这段代码的执行顺序是这样的:打开 PWR 时钟并使能访问后备域→启动 LSE→将RTC 时钟源选择为 LSE→修改 LSE 驱动能力为最高档位。$ \* Y; [- }+ H. k
虽然说在参考手册里有这么一段话,如图 2:
2 p; Y/ \9 X/ G* Q2 P
, i- O6 b, A& X0 Q% ]

( ^% Z  @2 S& l, ~) n JKQ9}G8JS3G_T`]]UXFB)FK.png : Q3 W8 c( q! |- s3 ^

8 u( T3 \6 q6 Z: |1 I  j" S 3 F$ V5 X( |+ v* a3 W4 b$ G
它的意思是允许在运行过程中随时修改 LSEDRV 的值。但是,我们也不能随心所欲,想怎么改就怎么改,想在哪里改就在哪里改。
: q/ y* @" H: l% w就比如现在这个问题,客户的代码是先启动 LSE,然后再去修改驱动能力为最高档的。也就是说,LSE 的启动是在最低档(默认 LSEDRV=“00”)时启动的,启动后才改的最高档。那么,刚才已经计算过,这个晶体在 LSE 最低档位驱动能力下并不能满足条件,所以不能起振的风险是很大的,而如果使用最高档位则没有问题。所以,代码选择在最低档位启动是存在风险的,如果起振没有成功,那么在下面代码
( ^8 ~, j) Q' U) u7 Z2 w6 i
  1. if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)1 O  `2 C* s6 ]7 q: t* E/ x- H/ B' [; f
  2. { : a5 A9 c8 L$ j! L$ {0 e6 _
  3. Error_Handler();) H3 b. [0 S+ G+ ?3 n% I
  4. }
复制代码

* e/ v3 H2 D) E6 d4 ~# }
$ O" k3 v) W  |7 |跑到了 Error_Handler()中去,并死在那里,根本不会跑到后面去把驱动能力设置为最高档位。所以,这个代码的顺序是有问题的。
1 m# t% T& h3 H" H, u0 m7 p% i  f
5 t" K' _: w( h3 ]! u& n4 k
完整版请查看:附件" P) ~8 O. A* f/ ?0 n

3 ^1 q: R- Q3 ^0 k1 I# x
" t9 Z, r) k$ v& {, R+ w" }

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 手机版