STMCU小助手
发布时间:2022-2-23 19:38
|
问题:' ^% J" H1 b1 i4 y& _( C 该问题由某客户提出,发生在 STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中,使用了STM32 的片上看门狗 IWDG 进行系统监控。在实测中发现,在软件中去掉喂狗代码之后,IWDG 并没有复位系统。1 @7 ~& b, _- k! j & c$ a; A9 s& P# Z: P( n 调研: 运行其测试程序,观察 STM32 的对外通信,确认现象如前所述。检查软件中对 IWDG 初始化的代码,未发现异常。使用编辑器的搜索功能,在整个软件工程中搜索具有喂狗特征的代码,没有可疑代码被搜到。检查原理图,其中 STM32 的复位电路部分如图(一)所示:) w1 |. E3 {( l! v4 @; Q
' |% s2 Q3 \* `% a% G, X 修改硬件,去掉电阻 R*。修改软件,将对 IWDG 初始化的代码移至 main 函数的最前端。紧跟其后,加入 while(1);语句,阻止其它代码被执行。运行程序后,用示波器观察 NRST 管脚步的波形,发现有如图(二)所示的复位脉冲送出。将软件改回到原测试程序并运行,观察到系统有复位动作产生。 7 ^1 W6 T2 V7 X9 m% n- z; j" b
查看该复位芯片的数据手册,证实其对外驱动类型为 CMOS 推拉型驱动。 结论: 所使用的复位芯片的驱动类型不恰当,与 STM32 对 NRST 管脚的驱动发生冲突,造成 STM32 内部产生的复位信号不能传递到 NRST 管脚上,进而导致 IWDG 失效。 8 g# w/ \- N8 O$ f+ y. `. f9 @% ] 处理:5 r" m1 `3 l4 l7 D9 _( s/ O. P9 _1 W 将图(一)中的 R*由 0Ω电阻改为 1K 电阻。& r% t) V1 }! a' ?9 R+ m y ; \+ L; W- B1 R$ R# z% c- k 建议: STM32 内部可以产生包括上电复位在内的多种复位信号,同时从专用的复位管脚 NRST 接收外部送来的复位信号,各路复位信号之间的关系如图(三)所示: 6 A9 Q% I# X% x# g( g( m
在这些复位信号中,无论哪个信号都要先作用于 NRST 管脚上,然后再分成两路,分别送给片外和片内。送给片内的一路最终形成 system reset,用于复位除后备域以外的用户电路。从图(三)可以看出,STM32 对 NRST 管脚采用了电阻负载型的驱动类型进行驱动,以便片内信号与片外片信号能形成线与逻辑。为此,片外电路对 NRST 管脚的驱动也要采用可以进行线与逻辑的驱动类型。常见的驱动类型有四种,见图(四):
(a) 电阻负载型驱动; (b) 恒流负载型驱动; (c) 开路负载型驱动; (d) 推拉型驱动 其中(a)、(b)、(c)三种类型都可以实现线与逻辑,而(d)则不能。当(d)型驱动电路与 STM32 的 NRST管脚连接时,会出现图(五)所示的由于强强竞争而产生的短路电流 I。而此时输出结点的逻辑值是不确定的,很可能由此引发一些逻辑信号被湮没而丢失。所以对(d)型驱动电路来说,需要通过隔离电路来驱动 STM32 的 NRST 管脚,而不能直接连接,如图(六)、图(七)所示: 0 m! d# C( V! K' `+ H
8 D, V% C8 p* [9 A 所以对(d)型驱动电路来说,需要通过隔离电路来驱动 STM32 的 NRST 管脚,而不能直接连接,如图(六)、图(七)所示:
: \$ }3 q; y$ k* D1 n* a! U! ] & F3 g4 s" Z3 H- @$ S5 u - t# O% C, `- ], K, K D: i N ' J3 ^) q: b0 }6 j1 c |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版