code学习

MCU的最小系统那些事

作者:电源漫谈
大家好,我是公众号电源漫谈,使用MCU进行开发项目,首先要明确最小系统的电路是否正确,然后再进行复杂电路的设计,本文就针对MCU的最小电路连接做一个讨论,此处以dsPIC33CK系列芯片为例说明。

最小系统电路主要考虑哪些方面的因素?

最小电路主要包含如下方面,首先,如电源部分所有的数字逻辑及I/O的供电VDD,VSS等,以及所有的AVDD和AVSS部分,其中AVDD和AVSS一般作为ADC的参考电源及其它模拟信号电路供电,即使项目中不使用ADC功能,也要连接这两个pin到外部电容。

其次,是涉及到复位和编程功能的MCLR pin,及在线编程ICSP用到的PGCx,PGDx的pin。

另外,就是其中也非常重要的外部振荡器的pin,OSCI,OSCO,当需要外部晶振源时,需要连接这两个pin。

MCU的最小系统那些事

图1 MCU的最小系统外围连接图

MCU最小系统的电源部分

推荐的最小系统电路如图1所示。说到电源部分的pin,设计者需要在每一组VDD(数字电路及I/O部分供电),VSS,及AVDD(模拟模块供电)和AVSS pin上都使用去耦电容,当使用去耦电容时,一般会考虑一些标准,比如电容类型,耐压,及电容值。这里我们推荐0.1u的10-20V耐压的电容,需要它具有较低的ESR, 且谐振频率达到20M或者更高,一般选择陶瓷容。

板上不可避免地会有高频噪声,尤其MCU用在开关电源中时,当高频噪声超过几十M时,推荐增加另一个陶瓷电容并联在上述去耦电容上,这个电容地值一般选择1n-10n之间,这在高速电路中也很常见。

在电源电路的Layout中,一般先将走线从电源连接到去耦电容,再连接到器件pin上,这样可以确保去耦电容是电源走线上第一个器件,另外一件事情也很重要,那就是确保电容和器件电源pin之间尽可能的短距离,以便减小寄生走线电感。

作为一个可行的选择,不要直接连接VDD和AVDD pin,在二者之间连接一个电感或者磁珠,目的是去改善AVDD的噪声抑制性能,电感阻抗需要小于1ohm且大于10mA的额定电流。

这里有一个较为常见的情况,电源部分和MCU器件间距较大,例如超过了15cm以上,那么推荐一个BULK电容给到MCU,作为局部的电源,BULK电容的值取决于连接电源和MCU之间的走线阻抗,以及器件消耗的最大电流。通过BULK电容,就可以避免走线太长而导致器件pin上有较大的纹波,一般推荐的值是4.7u-47uF。

MCU的最小系统中的MCLR pin

一般来说,MCLR pin主要有两个功能,一个是外部复位功能,可以通过拉低这个pin让器件复位。另外一个功能就是编程和调试功能,值得注意的是当在编程和调试时,必须要考虑到加在这个pin上的电容和电阻,因为器件编程和调试器需要驱动这个pin。所以,需要满足的要求是,MCLR pin上的电压电平VIH,VIL不能受影响,其电平快速切换也不能受影响,所以需要注意外部电路连接。

MCU的最小系统那些事

图2 MCLR pin的典型连接

MCLR pin的典型的连接,如图2所示,这个pin对应的上拉电阻需要小于10k,以确保MCLR pin的电平等级VIH,VIL等,注意这个pin是作为输入pin功能的。

MCU的最小系统那些事

图3 典型器件pin的功能描述

假设由于ESD或者EOS击穿MCLR pin的话,需要限制从外部电容流进MCLR pin的电流,那么需要一个串联电阻限制这个电流,一般建议小于470ohm即可。

MCU的最小系统中的编程及调试pin

PGDx和PGCx的pin是用于ICSP在线编程和调试的功能,一般的推荐是,在ICSP的连接器和MCU器件的PGDx 和PGCx pin之间的距离尽可能的小,如果ICSP 端会面临ESD事件的话,可以在连线上串联电阻,具体取值几十ohm即可,不要超过100ohm,正确的连接如图5所示。

在外部电路连接上,一般来说,在PGDx和PGCx上对于上拉电阻,及串联二极管,放置电容等都是不推荐的,因为他们会影响编程器和器件之间的通信的功能。如果在实际电路中,由于电路功能复用,在PGDx和PGCx上连接了上述器件,那么确保在编程和调试时将其移除,如图4所示这些错误连接示意。

MCU的最小系统那些事

图4 ICSP编程器和器件编程pin之间不正确的连接示意图

具体来说,在PGDx,PGCx的上拉电阻会破坏pin的电压电平值,因为编程器中本身有下拉电阻。

在MCLR ,PGDx,PGCx上都不允许放置对地电容,这会减缓数据和时钟信号的速度而影响通信,或者减缓编程时间。

同时也不能在PGDx,PGCx上串联二极管,这会阻止编程器和器件之间的双向通信。

另外,可以在器件的FLASH编程规格书中,其参考其特性及相关的时间需求,电容负载限制,及电压VIH,VIL的要求等。

最后一点,需要注意,在编程通道选择上,由于dsPIC33具有多组PGDx和PGCx的pin供选择,编程进器件的PGDx,PGCx的pin需要和外部连接ICSP编程器的pin一致。

MCU的最小系统那些事

图5 ICSP编程器和器件编程pin之间的正确连接

MCU的最小系统那些事

图6 编程器内部电路及运行方式

在编程时,目标器件不需要提供时钟,只需要有供电即可,当编程时,编程器将编程电压放置在MCLR pin上,通过PGCx pin发送时钟信号,通过PGDx向MCU传递数据,为了验证是否进行了正确的编程,从PGDx中读回数据,这样一个时序就可以确保编程器和器件之间正确的通信。

MCU最小系统中外部振荡器的pin

当使用芯片内部的POSC电路用于和外部晶体振荡器电路连接时,需要特别小心设计,需要让POSC电路在终端使用环境中去测试以满足运行条件。

在晶体振荡器的规格书中的负载电容是一个初始选择的值,但是,由于电路上的寄生参数会影响连接到晶振pin上的电容,那么需要去调整这个初始电容值,去满足最终的启动和稳定运行。

一般来说,晶振电路较长的走线及其它物理干涉,会导致信号完整性问题。比如,信号频率变化,振荡信号幅度减小,波形畸变,较长的启动时间,这会在软件执行上产生不良后,如错误指令执行,或者非法指令获取等。

在实际运行中,需要等到振荡频率在幅度上,在频率上完全正确和稳定时,再开始执行软件代码。

在实际的PCB布局或者原理图绘制时,需要注意MCU的外部振荡器连接pin脚相邻的端口,或者临近的电路或者MCU pin上是否有高频信号及高频噪声对晶振电路的影响。

MCU最小系统电路中外部振荡器的Layout建议

尽可能地对外部晶振电路进行优化,以确保稳定地运行,一般来说,振荡器电路应该MCU器件放在同一面地PCB上,尽可能地将振荡器电路靠近MCU地振荡器连接pin。对于晶振电路的负载电容,应该尽可能靠近晶振本身,也和振荡器放在同一个PCB面。最终,使用一个接地铜皮去环绕振荡器电路和pin,以便和周边电路进行隔离。

对于接地铜皮的要求是,使得它接MCU的地,对于普通的PCB走线来说,不要在铜皮铺地电路中走任何信号线及功率线,参考示意图如图7所示。

MCU的最小系统那些事

图7 普通的外部晶振PCB layout建议

当使用两层板时,避免PCB走线在放置晶振电路的位置的背面去走线,如果不能完整的环绕MCU的振荡器pin和晶振电路,建议连接这些局部的地铺铜到另一面的地层,最终这些底线防护部分必须要回到MCU的地,如图8所示。

MCU的最小系统那些事

图8 小封装器件外部晶振PCB layout建议

未使用的MCU的pin

对于MCU上的未经使用的pin一般有两种选择,一种选择是软件配置为输出,且设为低电平,这种方式需要使用软件配置。另外一种方式,在MCU的不使用的pin上连接一个电阻到地,一般取值为1k-10kohm.

总结,以上基于dsPIC33C的MCU对其外部最小系统电路连接做了一个梳理和说明,特别是外部晶振电路部分的连接及PCB建议,希望能有一定的参考。

参考文献:

  1. dsPIC33CK256MP508 FAMILY datasheet
  2. MPLAB® PICkit™ 4 In-Circuit Debugger User's Guide