写在前面
本文以STM32F401RCT6为例,讲解最小微控制器系统的设计方法以及一些相关原理。
上图所示为单片机的最小系统电路。 我们将其分为三个部分,分别是电源电路、复位电路和时钟电路。在了解最小电路之前,我们先来看以下问题
在设计最小系统电路时,常常在芯片的VDD和VSS之间接一个104电容。 为什么这些电容器应放置在距离引脚足够近的位置? VDD 和 AVDD 有什么区别? VSS 和 AVSS 有什么区别? 也是接地的,为什么会有AGND和GND呢? 为什么又出现了VCC和AVCC呢? 针对这些不同的电源和接地设计PCB时应采取哪些预防措施? 为什么标有 OSC 的两个引脚都需要连接到晶振? 这两个引脚有什么区别吗? 晶振的作用是什么? 复位电路是如何实现复位的? 单片机复位的具体原理是什么? 为什么VCAP引脚需要接2.2uF电容? 这和芯片的供电有关系吗?
如果这些问题不困扰你,那么你就不需要再阅读本文的内容了。 如果您感到困惑,那么我们将一一解决这些问题。
旁路电容和电源滤波
细心的朋友应该也发现了,放置的100nF电容的数量和VDD、VSS引脚的数量是完全一样的。 因此,在PCB设计时,这些电容需要放置得足够靠近芯片引脚。 这些电容器也称为旁路电容器。
我们都知道电容的一个非常重要的功能就是滤波。 因此,在电源电路中,常常放置电容来滤除噪声,使高电平电压值更加稳定。 因此,旁路电容的作用就是滤波。 如果这些旁路电容距离单片机的VSS和VDD引脚太远,可能会导致滤波后的电平在传输过程中产生噪声,导致单片机的输入输出电压基准不准确。
同样的原因,AVCC和AGND之间的电容需要放置在AVDD和AVSS之间,所以这就需要模拟信号和数字信号的电路划分问题。
为了防止串扰,我们在设计PCB时常常将模拟信号电路和数字信号电路分开,只用一根铜线将它们连接到地。 这里也是如此。 理论上AVCC和VCC的电平是一样的,但只能单独供电,因为模拟信号是连续的,连接在一起会干扰数字信号的电平参考。
为什么AGND和GND需要用铜线连接?
因为整个板子需要共用地。 我们需要清楚地了解的是,电流从高电平流向低电平,最终会流回GND。 模拟信号有不同的电平,而数字信号只有高电平和低电平之间。 因此,如果将整个板的GND连接在一起,就会导致错误的回流焊。 例如,我们的外围电路中有一个ADC,采样采集2V的电压。 如果此时的高电平参考为3.3V,那么就需要阻止2V高电平流过的电流流入VSS引脚,而只允许其流入AVSS引脚。 其实我们需要保证GND和AGND的电平一致,所以我们采用这种多点接地的方式。
时钟电路
设计单片机的时钟电路,首先要了解单片机时钟信号的产生机制。 《STM32F4xx参考手册》中有这样的时钟树
相信使用过STM32CubeMX进行工程配置的朋友一定不会感到陌生。 STM32可以使用三种不同的时钟源来驱动系统时钟(SYSCLK),即HSI振荡器时钟、HSE振荡器时钟和主PLL时钟。 每个时钟源在不使用时可以单独打开或关闭,以降低功耗。
在这个时钟树中,我们可以看到下图红框中的四个引脚,它们对应于我们时钟电路的引脚。 可以看到,OSC32_IN和OSC32_OUT两个引脚内部,标号为LSEOSC 32.768kHz,OSC_OUT和OSC_IN内部,标号为4-26MHz HSE OSC。
细心的朋友应该发现了,OSC32引脚连接的晶振恰好是32.768kHz,而OSC引脚连接的晶振是8MHz,正好在4-26MHz之间。这里我们说一下HSE时钟和LSE时钟微控制器的。
HSE 时钟
HSE是高速外部时钟信号(High-speed external Clock),有两个时钟源
外部用户时钟
外部用户时钟通过外部时钟信号(方波、正弦波或三角波)驱动 OSC_IN 引脚,外部输入占空比约为 50%,而 OSC_OUT 引脚保持高阻抗状态。 该方法适用于有外部时钟源或其他可以提供信号的信号发生器的情况。
外部晶体/陶瓷谐振器
这也是我们设计电路时经常使用的方法,其特点是精度高。
外部晶振的频率范围为4MHz~26MHz。 本系统采用8MHz石英晶体作为系统的外部时钟源。 该高速外部时钟可直接用作系统时钟或PLL 输入。
你可能会好奇,为什么这里要在晶振两端并联一个1MΩ的电阻呢?
在无源晶体振荡器应用中,两个外部电容器可以微调晶体振荡器生成的时钟频率。 并联1MΩ电阻可以帮助晶振起振。 因此,当程序启动缓慢或不运行时,可以在晶振上并联一个1MΩ的电阻。 这个1MΩ的电阻可以增加电路中的负阻抗,缩短晶振的启动时间,达到让晶振更容易起振的目的。
假设电路中没有干扰信号,晶振就不可能起振。 由于一般电路都有干扰信号,所以很多反相门电路不加这个电阻。 但有些反相门电路如果不加这个电阻就无法起振,因为干扰信号不够强。 同时并联一个1MΩ的电阻也可以增加振荡电路的稳定性。 有时还会在晶振上串联一个100Ω的电阻,以减少晶振的频率偏差。
这里需要注意的是,晶振的并联电阻不能太小,串联电阻不能太大。 否则温度低时不易振动。
伦敦经济学院时钟
LSE晶体振荡器是32.768kHz低速外部时钟晶体振荡器或陶瓷谐振器。 它可以作为实时时钟外设(RTC)的时钟源,提供时钟/日历或其他计时功能。 其功耗低、精度高。 优势。
与HSE时钟类似,可以使用方波、三角波等信号驱动OUC32_IN引脚来实现外部时钟源。 同样,32.768 kHz 晶体振荡器也可用于生成时钟信号。 电路设计方法与HSE类似。
复位电路
在STM32中,复位分为三种类型,分别是系统复位、电源复位和备份域复位。 这三种复位的方式有很多种,比如向NRST引脚输入低电平、结束窗口看门狗计数、结束独立看门狗计数等。这里我们需要设计的电路就是NRST引脚低电平输入电路。
有人可能会想,有没有什么好的办法设计NRST输入低电平的电路呢?
确实没什么可设计的。 这里我们采用的是按钮复位的方法。 我们只需在按下按钮后将 NRST 引脚拉低即可。 唯一需要提及的是按钮的硬件去抖功能。 我这里用来减少抖动的方法是电容滤波。 同时,NRST引脚需要经过一个上拉电阻,保证松开按钮时为高电平。
由于我使用的芯片封装是LQFP64,即芯片只有64个裸露引脚,所以没有电源监控开关控制引脚,即PDR_ON。 这里需要注意的是,在具有该引脚的芯片中,当PDR_ON连接到+3.3V时,功率监视器打开,当PDR_ON连接到GND时,功率监视器关闭。 只有当PDR_ON接高电平+3.3V时,系统上电复位电路才会正常工作,实现上电复位功能。
嵌入式线性稳压器
嵌入式线性稳压器为除备份域和备用电路之外的所有数字电路供电。 稳压器输出电压约为 1.2V。该稳压器需要两个连接到专用引脚 VCAP_1 和 VCAP_2 的外部电容器,所有封装均提供这些引脚。 要激活或停用稳压器,必须将特定引脚连接到 VSS 或 VDD。 具体引脚与封装有关。 我们这里选择的封装是LQFP64,它只有一个VCAP引脚,因此只需要连接一个电容。
查阅《STM32F4xx参考手册》就知道VCAP需要接一个2.2uF电容接地,如图
终于
本文是我个人PCB设计的总结,希望对大家有所帮助。 由于个人能力有限,如有错误,请直接指出,谢谢!
当然,如果还有什么不明白的地方,欢迎大家评论交流问题!