这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 浅谈嵌入式MCU硬件设计之MCU最小系统电路

共3条 1/1 1 跳转至

浅谈嵌入式MCU硬件设计之MCU最小系统电路

高工
2017-08-20 10:55:49     打赏
内容提要引言1. 电源电路硬件设计tips2. 复位电路硬件设计tips3. 时钟电路硬件设计tips4. 程序下载和调试接口电路4.1 BDM接口4.2 JTAG接口4.3 SWD接口硬件设计tips总结引言众所周知,人在世界上生存需要空气、水和食物。那么MCU正常工作需要的最基本电路,也就是最小系统电路是什么呢?答案是电源电路、复位电路和时钟电路以及程序下载调试接口电路。今天我就结合NXP/Freescale的汽车级MCU来给大家详细介绍一下。1. 电源电路电源电路是给MCU提供电源的电路,一般包括CPU内核电源(VDD/VCC)、模拟电路模块电源(VDDA)和数字逻辑外设、I/O接口电源(VDD)以及存储器(NVM-Flash--VDDF,DDR RAM--Vddr)电源等,具体根据不同的MCU和封装以及片上外设不同,其电源种类和数量也存在差异。硬件设计tips:a. 一般对于每一个电源管脚,都需要设计一个0.1uF的去耦(decouple)电容并就近放在在MCU电源管脚附近(越近越好),以保证电源供电的稳定性和提高系统的EMC性能。下图为某一S12(X)系列16位MCU的电源电路PCB Layout推荐:1.pngb. 某些MCU内部集成的POR上电复位电路对VDD/VCC的去耦电容(容值大小和温漂一致性)选择有一定的要求满足其POR上电爬升斜率(ramp slew rate)的要求。比如Freescale S08RN系列MCU对电源POR re-arm的要求:2.png

c. 对于MCU的电源芯片选择,不但要考虑其供电能力(对于汽车电子应用,一般根据datasheet计算出MCU最大工作电流,留2~3倍裕量,在500mA以内的选择LDO即可,大于500mA的一般选择DC-DC)和还要考虑其不同电源的上电时序(对于复杂MCU,比如Qorivva MPC57xx系列多核MCU),需要根据具体的MCU datasheet来选择和设计;


2. 复位电路MCU一般都有一个RESET复位管脚,一般为低电平有效,其在MCU工作过程中时一个内部弱上拉的双向I/O,即可用通过在该管脚输入一个低电平啦对MCU进行系统复位,同时,当有内部系统复位(POR--上电复位、LVR--低电压检查复位、Clock Mornitor/Lost Reset--时钟监测/丢失复位、Watchdog Timeout Reset--看门狗溢出复位和iligal Address/Instruction Reset--非法地址/指令复位等)产生时,其也将被拉低。所为复位电路就是接在RESET管脚上的外部电路,其要一般由一个上拉电阻(保证MCU正常工作时RESET管脚为高电平)和一个滤波电容(滤除外部干扰,增强MCU的抗干扰能力)组成,上拉电阻为4.7KΩ~10KΩ,电容为0.1uF~0.22uF.典型的MCU复位电路如下:3.jpg硬件设计tips:a. 关于复位电路的上拉电阻和滤波电容大小的选择,需要根据具体的MCU POR上电复位时序要求以及需要的滤波效果来确定;b. 当然,很多时候MCU的RESET管脚也与电源芯片的LVR输出管脚或者外部看门狗芯片的复位输出接在一些,这个时候就需要考虑:电源芯片的LVR阈值和MCU本身的LVR阈值是否阈值,如果电源芯片的LVR阈值高于MCU的LVR阈值,那么MCU就无法正常进入LVI中断;

MCU上电之后需要及时对外部看门狗芯片进行喂狗,以防止其溢出复位,保证MCU正常工作;


3. 时钟电路MCU的CPU内核和数组逻辑外设都是以触发器为基础的时序电路,需要是中华驱动才能正常工作,所以时钟电路对于MCU来说就像心脏之于人的作用,给MCU提供“心跳”驱动,是十分重要的。虽然大多数MCU内部都集成了内部RC时钟(IRC)可以作为系统时钟使用,但其精度一般做不高,只有10%~1%精度,不能够满足一些高精度的定时器工作需要和高速通信外设的要求,比如汽车电子应用中常用的CAN总线。如果外设需要高精度的定时或者通信参考/同步时钟,这个时候就需要使用外部时钟作为系统时钟源了。MCU复位之后,在外部时钟电路稳定之前,MCU默认使用内部时钟作为系统参考时钟源,直到用户通过软件配置将其切换为外部时钟源,外部时钟源电路才开始工作。外部时钟源,比如常见的无源晶振电路配合MCU内部的OSC电路一起工作,一般为正玄波信号,其频率高于内部参考时钟,所以其启动时间快,但相对功耗也高(mA级工作电流,内部参考时钟工作电流多为uA级),因此低功耗模式下,外部时钟源一般处于关闭状态,而内部时钟源用于唤醒源外设。以下为NXP/Freescale汽车MCU的时钟资源对比:
MCU系列内部时钟源/精度外部时钟源
S08系列32.768KHz IRC/±2%4~20MHz无源晶振
1KHz 低功耗LPO/~%

S12(X)系列1MHZ IRC/±1.3%4~16MHz无源晶振/有源时钟(仅S12X系列MCU)
10KHZ低功耗自主时钟ACLK/±5%

MagniV s12Z系列1MHZ IRC/±1.3%4~20MHz无源晶振
20KHZ低功耗自主时钟ACLK/±6%

Qorivva MPC56xx/57xx系列16MHz FIRC/±5%4~16MHz无源晶振/有源时钟和32~40KHz RTC晶振
128KHz SIRC/±10%

KEA系列32.768KHz IRC/±0.8%4~24MHz无源晶振(RANGE=0)或者31.25~39.0625KHz RTC晶振(RANGE=1)
1KHz 低功耗LPO/~%

S32K系列48MHz FIRC/±1%4~40MHz无源晶振/有源时钟
8MHz SIRC/±3%

128KHz SIRC/±10%32.768KHz RTC晶振
不同的MCU支持的外部时钟频率和类型有所差异,需要根据datasheet来选择和设计。典型的MCU外部无源晶振(crystal)时钟电路如下,Cx和Cy为负载(load)电容,也称为谐振电容,根据所选晶振频率的不同,一般在几pF~几十pF。RS和RF为时钟串联(serial)电阻和反馈(feedback)电阻,为可选期间。5.png硬件设计tips:a. MCU的时钟(Oscillator)参数不同,一般在其datasheet的电气参数中给出,不同的晶振频率对于不同的启动时间,频率越高启动时间越短,但对外的EMC就越差,所以一般选择中间频率,然后通过内部时钟倍频模块(比如PLL)倍频到较高的MCU工作内核频率和总线频率;6.pngb. 在外部时钟电路设计时,为了提高其抗干扰能力建议:在外部晶振电路应该靠近MCU时钟管脚,走线越近越好,且外围覆铜包地。在时钟电路附件减少其他信号走线,特别是高数数字信号走线应该远离时钟电路以避免相互干扰。如下是一个推荐的MCU外部晶振时钟电路推荐PCB Layout:7.pngC. 在内部IRC时钟精度可以满足系统设计要求的情况下,尽量不要使用外部时钟。因为IRC时钟源不但功耗低,其对外的电磁辐射小、可干扰能力强,EMC特性好,同时也可以节省外部时钟电路的成本。

d. 虽然MCU内部集成的PLL/FLL倍频单元可以将时钟倍频到datasheet规定的最大系统时钟和总线时钟频率,但在满足系统设计内核CPU计算速度和外设工作频率的情况下,尽量使用较低的系统时钟和总线时钟。一来可以降低对外的频率辐射,获得较好的EMC特性;二来可以降低MCU系统功耗(频率越高,时序逻辑电路的动态功耗也越大)。


4. 程序下载和调试接口电路MCU出厂之后默认的用户NVM--EEPROM和Flash中都是空白(全0xFF)的,包括其复位向量都是0xFF,必须要向NVM中下载应用程序,MCU才能正常工作。不同的MCU,其程序下载和调试电路有所差异,常见的NXP/Freescale汽车级MCU的程序下载和调试接口如下表:
MCU系列程序下载和调试接口
S08系列BDM
S12(X)系列BDM
MagniV s12Z系列BDM
Qorivva MPC56xx/57xx系列JTAG/NEXUS
KEA系列SWD
S32K系列JTAG
4.1. BDM接口BDM--Background Debug Module,背景调试接口是Freescale为其8位和16位MCU开的应用程序下载和调试接口。标准的BDM接口为6-pin,个管脚功能定义如下:
管脚(#)符号定义功能定义
1BKGDBDM协议同步信号和数据信号(双向通信)
2GND信号地
3NC/PDO悬空,不接/分析(Profiling)数据输出*
4RESET复位信号
5NC/PDOCLK悬空,不接/分析(Profiling)数据输出时钟*
6VDD目标MCU电源(输出--供电/输入--目标MCU上电检测)
*仅适用于MagniV S12Z系列MCU典型的BDM接口电路如下:10.jpg4.2. JTAG接口JTAG--Joint Test Action Group--联合测试工作组,是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA和32位MCU器件等。标准的JTAG接口4条JTAG功能信号线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线,具体定义如下表:
符号定义功能定义
TMS测试模式选择
TCK测试同步时钟
TDI测试数据输入(MCU-input, Debugger--output)
TDO测试数据输出(MCU-output, Debugger--input)
除了以上JTAG的标准功能信号线之外,其还需要配合电源VCC、地GND和复位信号RESET等才能组成完整的MCU程序下载和调试接口。在32位MCU中常用的 JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口,不同的系列/内核的MCU其定义稍有差异,以下列出NXP/Freescale 32位汽车级MCU典型的JTAG电路供大家参考:适用于 Qorivva MPC56xx/57xx系列MCU的14-pin JTAG接口典型电路如下:12.png适合于ARM Cortex M4F内核的S32K系列MCU和Cortex A5内核的MAC57D5xx(Halo)系列MCU的20-pin JTAG典型电路如下:13.png除此之外,常用的还有10-pin的JTAG接口,其典型电路如下:14.png4.3. SWD接口SWD--Single Wire Debug单线调试,是ARM推出针对其ARM Cortex M系列内核的调试协议,其相较于传统的JTAG调试协议,接口信号线只有2根--单线时钟SWCLK和单线数据输入输出SWDIO,占用MCU的I/O更少,不但设计更加简单,在同样的封装下可提供更多的用户I/O,同时其又与JTAG接口兼容复用,如下表;
JTAGSWD功能定义
TMSSWDIO单线数据输入输出,用于控制信息数据和调试数据接收以及程序下载串行传输
TCKSWCLK单线时钟,用户通信同步
TDI未使用
TDO未使用
适合于ARM Cortex M0+内核的KEA和ARM Cortex M4F内核的S32K系列MCU的10-pin SWD典型电路如下:16.png硬件设计tips:a. 下载和调试接口电路应该靠近MCU放置,避免过长走线;b. 尽快BKGD和TMS、TCK、TDI及TDO在MCU内部有弱上电,但还是建议设计下载和调试接口电路在外部加上4.7K~10KΩ的上拉电阻,以保证其工作稳定;

c. 建议在下载和调试接口电路的电源VDD/VCC管脚上加一个0.1uF的滤波电容,以保证电源的稳定;


总结基于以上介绍,在在遇到上电后MCU不工作(无功能)时,我们就有了查找原因的思路如下:首先,使用示波器查看MCU各电源是否稳定?然后,检查RESET复位管脚是否为稳定的高电平?接着,检查MCU时钟电路是否正常工作,外部晶振是否起振,频率和幅值是否满足datasheet要求?最后,检查是否下载了正确的应用程序,以及程序下载和调试接口电路是否正常?对于BDM接口,如果上电过程中,BKGD管脚为低电平,则S08/S12(X)MCU进入BDM调试模式,MCU是不会正常运行内部程序。

对于JTAG/SWD接口,TMS/SWDIO和TCK/SWCLK上的一系列脉冲信号也可能导致MCU进入debug模式,CPU内核和外设无法正常工作;


以上就是今天跟大家分享的内容。希望对大家有用。

        

        本微信公众号已经发布的个人原创精品----嵌套嵌入式系统技术文章链接如下,欢迎大家参考学习,并转发分享:

  •          汽车电子expert成长之路公众号系列文章列表

  •         浅谈嵌入式MCU开发中的三个常见误区

  •         浅谈嵌入式 MCU 软件开发之应用工程的堆与栈

  •         浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

  •         浅谈嵌入式MCU软件开发之代码风格与代码优化

  •         浅谈嵌入式MCU软件开发之startup过程详解(从复位向量到main函数之前的准备工作)

  •         浅谈嵌入式MCU软件开发之startup过程详解(在CodeWarrior 5.1 中实现RAM自定义初始化)

  •         浅谈嵌入式MCU软件开发之S12(X)系列MCU 中断ISR在CodeWarrior 5.1 IDE 中的三种写法

  •         浅谈嵌入式MCU硬件设计之MCU最小系统电路

  •         S12(X)系列MCU的片上存储器资源与分页访问机制详解(一)   

  •         S12(X)系列MCU的片上存储器资源与分页访问机制详解(二)

  •        使用 Cyclone 离线编程器对 S12(X)和 MagniV S12Z 系列 MCU 片上 NVM 编程

  •        Qorivva MPC56xx/57xx系列MCU的模式控制与切换(片上外设资源使能与功耗控制)

  •        S32DS 使用 tips--使用Flash from file下载S19或elf文件

  •        CodeWarrior IDE使用tips之map文件详解

  •                 CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数)



胡恩伟NXP汽车电子FAE





关键词: 汽车电子     MCU最小系统电路    

专家
2017-08-20 21:33:44     打赏
2楼

谢谢楼主分享。


菜鸟
2017-09-11 09:46:28     打赏
3楼

谢谢楼主分享。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]