一、STM32的NRST管脚异常复位问题
这个问题是客户对开发的平台做EMS 浪涌测试的时候发生的,平台上使用了一个STM32G474 RCT6 MCU 。在某个等级的EMS 测试中, 客户发现MCU有时候会异常复位而影响平台的稳定工作。
MCU 异常复位问题的通常解决思路:
我们知道, 导致MCU异常复位的原因有很多, 比如外部复位电路被干扰, MCU 电源的异常跌落, 看门狗不能正常喂狗导致的复位等等。
STM32 MCU 的复位标志位寄存器可以帮助我们发现导致异常复位的线索。
复位标志位的相关信息可以在STM32 MCU 的Reference Manual 中找到。在RCC 节的RCC_CSR 寄存器中,我们可以看到:
图中红色围住的部分就是复位标志相关的寄存器。
LPWRRSTF:低功耗模式复位标志位, 被置1 表示发生了非法的STOP, SLEEP 或SHUTDOWN 等低功耗模式进入。
WWDGRSTF: 窗口看门狗复位标志。
IWDGRSTF: 独立看门狗复位标志。
SFTRWTF: 软件复位标志位。
BORRSTF: 欠压复位标志位。
PINRSTF: 从NRST引脚输入产生的复位的标志位。
OBLRSTF: 加载选项字节产生的复位的标志位。
以上的标志位被置1 表示发生了相关的复位。
这些被置1的标志位可以通过向RMVF 位写1清除。
在一次正常的MCU上电过程中, 电压的上升和 PDR 电路的工作必然会导致BORRSTF 和PINRSTF 被置位1, 因此在做EMS实验前, 需要先通过向RMVF 写1将所有复位标志位清除, 然后观察在EMS 测试导致的复位后, 哪些复位标志位被置位了。
例如,当观察到BORRSTF 被置1表示发生了欠压复位, 需要重点检查MCU供电电路包括滤波/退耦电容的设计和布局等等。
PINRSTF 位被置1表示MCU 的NRST 管脚接收到了能够触发复位的异常低电平, 需要检查NRST 的外围电路是如何被干扰的, 或设法增加滤波电路滤除干扰。
WWDGRSTF 或 IWDGRSTF 被置1表示喂狗不正常导致了复位,一般是由程序在 EMS测试中运行不正常进入死循环导致,MCU 被EMS干扰影响的途径相对难以判断,可能是地或某个/些GPIO管脚被EMS 干扰侵入而影响了MCU 的正常运行。
通过观察异常复位发生后的复位标志位,可以使我们避免解决问题时在不相关的电路上浪费时间, 比如如果只有BORRSTF 被置位, 我们需要重点关注供电电路, 而不需要在复位管脚相关电路做无用的调整。
在客户开发平台上的排查:
根据上面描述的思路,我们在客户的平台上排查发生异常复位的原因, 通过检查STM32G4 的复位标志位,发现复位发生后PINRSTF 被置 1 了。
这似乎是个简单的NRST 复位管脚被干扰的问题。
但是观察客户的设计, NRST 管脚并没有外接比较长走线的外部电路, 只是在管脚放置了一颗0.1UF 的电容。按常理这样的电路一般不会将干扰引入NRST 管脚。
为了避免是0.1UF 电容将地噪声引入管脚, 拆除这颗电容后再做浪涌实验, 结果PINRSTF 还是被置位。
STM32G4有一个新功能, NRST 管脚可以被复用为一个GPIO PG10, 当这个管脚被定义为PG10后, 加在这个管脚的低电平干扰将不会再导致MCU 复位。但是奇怪的事情发生了,STM32G474第7脚由NRST 改定义成PG10后(Option byte中修改),浪涌实验中依然发生了PINRSTF 被置位的现象。
这时候看来不能只局限于NRST 管脚的探查了,干扰是不是从其它GPIO 窜入MCU 并进一步通过耦合影响了复位电路的工作呢?
在LQFP的封装中,由于MCU 内部并行的较长的bonding线的存在, 相邻的GPIO之间 最可能产生耦合干扰, 所以我们从第7脚相邻的第6和8脚开始排查。分别将它们的外部信号断开。通过排查, 第8脚信号断开没有解决问题。
但是当将第6脚相连的晶振和电容断开,并改用内部HSI 时钟源后, 异常复位问题消失了, PINRSTF 不再被置位。看来干扰是从第7脚进入的。观察客户的PCB 设计, 发现晶振的LOAD 电容接地并不是直接接地平面, 而是经过一根细长的地走线后才由一个过孔连接到地平面,很明显这根细长的地走线在浪涌测试中作为天线接收了干扰并经电容传递到了MCU 内部。
总结
MCU 内部是远比 MCU 外部电路更复杂的微电子电路,内部线路间距小,不同功能间可能只是由电子开关或多路复用器做选择,当高频干扰进入MCU 后,干扰可以在看似不直接相连的电路间耦合而影响MCU 的正常工作。
重要的是避免干扰进入MCU。在排查干扰传递的路径时,不要将目光局限于直接相连的电路或管脚。
二、EMC整改流程及常见问题
首先我们来从EMC测试项目构成说起,EMC主要包含两大项:EMI(干扰)和EMS(抗干扰和敏感度)。这两大项中又包括许多小项目,如下图:
EMC整改意见
1.首先需要双方的沟通相关信息,如验收的标准、摸底的报告、PCB图等信息;为什么要确定这么多信息呢?举例标准方面在车载行业,如五等级跟二等级那差距就大了去了。在提供相关资料和沟通后,我们会给出初步的整改建议,定位好EMC整改计划。
2.定位手段,对于这里小编觉得主要可以分为两点。
第一:经验判断,根据双方沟通情况,根据工程师的经验结合数据及测试情况来进行判断。
第二:比较测试,根据再次测试仪器所提供的数据来进行分析问题。Tip:我们有自己的实验室,可以方便各位亲测试哟
EMC整改流程
1.RE超标整改流程
2.电源电缆导致辐射超标定位子流程:
3.信号电缆导致辐射超标定位子流程:
4.屏蔽体泄漏整改流程:
EMC整改的一些小建议 1.电容的滤波作用
即频率f越大,电容的阻抗Z越小。当低频时,电容C由于阻抗Z比较大,有用信号可以顺利通过;当高频时,电容C由于阻抗Z已经很小了,相当于把高频噪声短路到GND上去了。2.电容滤波在何时会失效整改中常常会使用电容这种元器件进行滤波,往往有“大电容滤低频,小电容滤高频”的说法。以常见的表贴式MLCC陶瓷电容为例,进行等效模型如下:
容值10nF,封装0603的X7R陶瓷的模型参数如下:
由于等效模型中既有电容C,也有电感L,组成了二阶系统,就存在不稳定性。对电路回路来说,就是会发生谐振,谐振点在如下频率处:
下图是谐振曲线的示例:
即常说的在谐振点前是电容,谐振点之后就不再是电容了。3.LC滤波何时使用如果串联电感L,再并联组成C,就形成了LC滤波:
单独一个电容C是一阶系统,单独一个电感L也是一阶系统,在幅值衰减斜率是-20dB。但LC组成的二阶系统,幅值衰减斜率是-40dB,更靠近理想的“立陡”的截止频率的效果,即滤波效果更好。
4.PWM频率到底是多少往往提到PWM,比如会说用20kHz PWM驱动电机等。
但实际上,这个20kHz仅代表PWM的脉冲周期是50us
对于阶跃信号来说,由于上升时间tr无穷小,则频率f无穷大。当频率高了之后,寄生参数则不能在忽略,会引发很多谐振的问题。从信号上来看,就是很陡峭的阶跃信号会有过冲和振荡的问题。简单来说就是频率f越大,则噪声所占的频率就会越宽泛,即EMC特性就会越差。
5.如何将原理图和PCB对应起来由于细分工种的问题,原理图和PCB被割裂开来,由两组人进行分工作业:
例如在原理图上有如下的电路:
其隐含一个问题就是在PCB上其实V1的负极和C1的负极是有一条线(PCB layout工具软件中用的词比较准确,Trace,踪迹/轨迹)。往往在设计阶段A->B->C是都会关注的。如果EMC出现问题,除了要在原理图上查找电路参数的问题,还需要特别关注C->D,即回流路径。
如果回流路径不顺畅,会造成信号的畸变。
比如在EMC试验时,MCU的ADC采集到的信号被干扰到了,则除了在原理图上分析外,在PCB上讲该信号高亮出来,然后再耐心寻找该信号的回流路径是否有不顺畅的地方:对着信号线头脑中想象回流路径,有点意识流的感觉。
总结
三、用MOS管还是三极管
三极管
三极管,全称应为半导体三极管,也称双极型晶体管、晶体三极管,是一种控制电流的半导体器件,其作用是把微弱信号放大成幅度值较大的电信号, 也用作无触点开关。
晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。三极管是在一块半导体基片上制作两个相距很近的PN结,两个PN结把整块半导体分成三部分,中间部分是基区,两侧部分是发射区和集电区,可分为PNP和NPN两种。
场效应晶体管
场效应晶体管(Field Effect Transistor缩写(FET))简称场效应管。
主要有JFET、MOSFET两种类型:
结型场效应管(junction FET—JFET)和金属 - 氧化物半导体场效应管(metal-oxide semiconductor FET,简称MOS-FET)。由多数载流子参与导电,也称为单极型晶体管。
它属于电压控制型半导体器件。具有输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象、安全工作区域宽等优点,现已成为双极型晶体管和功率晶体管的强大竞争者。
场效应管(FET)是利用控制输入回路的电场效应来控制输出回路电流的一种半导体器件,并以此命名。由于它仅靠半导体中的多数载流子导电,又称单极型晶体管。
选用MOS管还是三极管?
成本考量
在满足工程需求的条件下,成本是在二者之间选择的关键。而成本又分为元器件价格与元器件自身功耗两方面。
价格方面,三极管价格便宜,场效应晶体管贵。
功耗方面,三极管损耗大,场效应晶体管损耗较小。
特性区别
1、场效应管是电压控制元件,而三极管是电流控制元件。在只允许从信号源取较少电流的情况下,应选用场效应管;而在信号电压较低,又允许从信号源取较多电流的条件下,应选用三极管。
2、场效应管是利用多数载流子导电,所以称之为单极型器件,而三极管是即有多数载流子,也利用少数载流子导电。被称之为双极型器件。
3、有些场效应管的源极和漏极可以互换使用,栅压也可正可负,灵活性比三极管好。
4、场效应管能在很小电流和很低电压的条件下工作,而且它的制造工艺可以很方便地把很多场效应管集成在一块硅片上,因此场效应管在大规模集成电路中得到了广泛的应用。
5、场效应晶体管具有较高输入阻抗和低噪声等优点,因而也被广泛应用于各种电子设备中。尤其用场效管做整个电子设备的输入级,可以获得一般三极管很难达到的性能。
6、场效应晶体管常用来电源开关,以及大电流地方开关电路。MOS管用于高频高速电路,大电流场合,以及对基极或漏极控制电流比较敏感的地方。
四、ADC,内部原理
STM32包括ADC模块。ADC(Analog-to-Digital Converter)即模拟信号转换为数字信号的装置,是数字系统必不可少的组成部分。在STM32中,ADC模块分为多个硬件单元,可以通用于多种模拟输入信号。
1. ADC硬件结构
STM32的ADC模块通常包括多个单元,其中核心单元为ADCx(其中x表示数字)。每个ADC单元都可以转换多个模拟采样通道,并支持多路通道转换,其中ADC1/ADC2最多支持16通道,而ADC3最多支持18通道。而每个通道对应着一个和该通道关联的模拟输入引脚,这些引脚是由芯片的管脚引出。
ADC单元由以下几个部分组成:
①模拟参考电压:模拟输入信号的参考电压通常由最大模拟值(Vref+)和最小模拟值(Vref-)的差值所得。在STM32中,参考电压可以从内部的参考电路或外部引脚输入。
②采样保持电路:采样保持电路旨在在转换之前保持输入电平稳定。STM32采取了先进的可编程采样保持电路,可以实现各种采样时间和采样保持电压的组合。
③ADC时钟:ADC单元需要一个时钟来控制转换速率。时钟的频率由ADC预分频器控制,可以将外部时钟频率分频至合适的转换速率。
④转换器:ADC单元的核心部分是ADC转换器。在转换过程中,模拟输入信号被转换为数字信号,通过DMA通道传输到内存中,并在转换完成后触发中断。
2. ADC工作流程
ADC模块的工作流程可以分为以下几个步骤:
①初始化ADC单元:包括配置时钟、参考电压源、采样保持时间等。
②配置模拟输入通道和采样时间:确定要读取的模拟输入通道,以及采样保持时间。
③校准ADC单元:ADC单元需要在每次启动前进行校准。校准过程将自动调整内部参考电压,以保证准确的转换。
④启动ADC单元:在转换之前,通过软件启动ADC单元,开始进行转换。
⑤读取转换结果:当转换完成后,ADC单元会触发转换完成中断,并将转换结果存储在寄存器中。此时,可以使用DMA通道将转换结果传输到内存中,也可以直接读取寄存器中的值。
如果要对每个通道进行连续转换,可以使用扫描模式。扫描模式允许一次启动多个转换,并允许设置转换顺序。
用了这么久ADC,从没细看过ADC的内部原理和如何获得最佳精度,今天看到一篇ST的官方文档讲的不错,这里整理分享给大家
SAR ADC内部结构
STM32微控制器中内置的ADC使用SAR(逐次逼近)原则,分多步执行转换。转换步骤数等 于ADC转换器中的位数。每个步骤均由ADC时钟驱动。每个ADC时钟从结果到输出产生一 位。ADC的内部设计基于切换电容技术。
下面的图介绍了ADC的工作原理。下面的示例仅显示了逼近的前面几步,但是该过程会持续到LSB为止
SAR切换电容ADC的基本原理(10位ADC示例)
带数字输出的ADC基本原理图
采样状态 采样状态:电容充电至电压VIN。Sa切换至VIN,采样期间Sb开关闭合
保持状态 保持状态:输入断开,电容保持输入电压。Sb开关打开,然后S1-S11切换至接地且Sa切换至VREF。
逐次逼近 1、第一个逼近步骤。S1切换至VREF。VIN与VREF/2比较
2、如果MSB = 0,则与¼VREF进行比较,S1切换回接地。S2切换至VREF。
3、如果MSB = 1,则与¾VREF进行比较,S1保持接地。S2切换至VREF。
重复如上步骤,直到LSB为止。可以简单理解为二分法逐次进行输入电压与参考电压的比较。首次于VREF/2比较,下次比较根据上次比较结果决定,如果MSB=1则与¾VREF比较。如果MSB=0则与¼VREF比较。后面决定与1/8VREF 3/8VREF、 5/8VREF、 7/8VREF之一做比较。循环直到输出LSB为止。
五、MOS管驱动电路
MOS管因为其导通内阻低,开关速度快,因此被广泛应用在开关电源上。而用好一个MOS管,其驱动电路的设计就很关键。下面分享几种常用的驱动电路。
1 电源IC直接驱动
电源IC直接驱动是最简单的驱动方式,应该注意几个参数以及这些参数的影响。
①查看电源IC手册的最大驱动峰值电流,因为不同芯片,驱动能力很多时候是不一样的。
②了解MOS管的寄生电容,如图C1、C2的值,这个寄生电容越小越好。如果C1、C2的值比较大,MOS管导通的需要的能量就比较大,如果电源IC没有比较大的驱动峰值电流,那么管子导通的速度就比较慢,就达不到想要的效果。
2 推挽驱动
当电源IC驱动能力不足时,可用推挽驱动。
这种驱动电路好处是提升电流提供能力,迅速完成对于栅极输入电容电荷的充电过程。这种拓扑增加了导通所需要的时间,但是减少了关断时间,开关管能快速开通且避免上升沿的高频振荡。
3 加速关断驱动
MOS管一般都是慢开快关。在关断瞬间驱动电路能提供一个尽可能低阻抗的通路供MOSFET栅源极间电容电压快速泄放,保证开关管能快速关断。
为使栅源极间电容电压的快速泄放,常在驱动电阻上并联一个电阻和一个二极管,如上图所示,其中D1常用的是快恢复二极管。这使关断时间减小,同时减小关断时的损耗。Rg2是防止关断的时电流过大,把电源IC给烧掉。
如上图,是我之前用的一个电路,量产至少上万台,推荐使用。
用三极管来泄放栅源极间电容电压是比较常见的。如果Q1的发射极没有电阻,当PNP三极管导通时,栅源极间电容短接,达到最短时间内把电荷放完,最大限度减小关断时的交叉损耗。
还有一个好处,就是栅源极间电容上的电荷泄放时电流不经过电源IC,提高了可靠性。
4 隔离驱动
为了满足高端MOS管的驱动,经常会采用变压器驱动。其中R1目的是抑制PCB板上寄生的电感与C1形成LC振荡,C1的目的是隔开直流,通过交流,同时也能防止磁芯饱和。