具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明提供的用于改善汽车电子控制系统电磁兼容特性的微控制器,同时采用以下两种改进方案对图1所示的现有汽车电子控制系统的微控制器进行改进,一种是针对多模式时钟产生模块(MCG)进行时钟门控的设计,保证在不同工作模式下进行内核与外设的两级时钟门控设置,将未用到的冗余功能模块的时钟关闭,对应的逻辑资源停止工作,从而降低由于这些额外部分带来的电磁干扰EMI;另一种是针对IO端口模块进行降低并有效控制电磁干扰(EMI)的设计,采用翻转速率和驱动强度控制的方法,有效地控制瞬态电流的变化强度,使得微控制器芯片对外的电磁干扰(EMI)强度降低,并且由于施密特触发器的引入也提高了电磁抗扰度(EMS)的能力。
如图2所示,图2是本发明提供的用于改善汽车电子控制系统电磁兼容特性的微控制器的结构示意图,该微控制器是对多模式时钟产生模块和IO端口模块进行改进,将时钟门控的方法应用于多模式时钟产生模块,采用翻转速率和驱动强度控制的方法对IO端口模块进行电磁兼容特性的加固,有效地改善了汽车电子控制系统电磁兼容特性。
在抗电磁干扰方面,基于Run、Idle、Stop、Debug四种工作模式,增加多模式时钟产生模块MCG,根据模式需求更好了利用门控技术,对系统时钟进行管理。此外,也对IO端口模块进行改进,加入一些控制寄存器,对电磁兼容特性上考虑,引入了翻转速率(slew rate)和驱动强度(drivestrength)控制寄存器,具体如图2所示。
在对多模式时钟产生模块进行设计时,采用时钟门控技术,可以在Run、Idle、Stop、Debug四种工作模式下,通过时钟使能信号对第一级的门控对象——内核和外设总开关进行时钟信号的打开或者关闭操作,第二级的门控对象为各个外设功能模块,可以根据工作模式需要对各自时钟信号进行打开或者关闭,也可以通过配置相应的寄存器对各个功能模块的时钟进行独立的使能操作。
在Run模式时,第一级的门控对象的时钟打开,第二级的门控对象的时钟根据使用需求可以灵活配置;在Idle模式时,内核时钟关闭,而外设总开关的时钟打开,可以单独设置各个外设模块的时钟使能信号;在Stop模式时,内核和外设总开关的时钟都关闭,除RTC、LVD、OPT、P1外部中断INT0-7以外所有外设时钟都关闭;在Debug模式时,关闭原来所有时钟输出,用TCK时钟取代,可以通过JTAG接口进行访问并对CPU内核进行调试。
在对IO端口进行设计时,采用了翻转速率和驱动强度控制的方法。由于翻转速率直接影响到瞬态电流的变化强度,通过对所有P口配置相应的翻转速率控制寄存器,在不影响功能要求时打开对应端口的翻转速率控制使能位,可以有效降低翻转的速率,进一步降低EMI电磁干扰的影响;由于驱动电流强度即决定着对外负载的大小,也对EMI电磁干扰造成影响,在能够满足外界负载驱动电流要求时(若不满足换成强驱动),通过配置各个端口的驱动强度控制寄存器,对相应引脚进行弱驱动的设置。
如图3所示,图3是图2中多模式时钟产生模块的结构示意图。多模式时钟产生模块管理片上时钟资源,从图2中看到多模式时钟产生模块可以对内核的时钟信号进行独立控制,也可以通过SFR总线对各个外设功能(如CAN、PWM等)进行单独门控。芯片中时钟产生模块支持多种模式的时钟选择,包括外部时钟旁路PLL、外部时钟PLL倍频、内部振荡器旁路PLL、内部振荡器PLL倍频以及具有时钟失锁检测特性,如图4所示。在完整全局时钟管理的同时,时钟产生模块需要根据系统的工作模式对各个模块的时钟进行门控管理,图5是MCG门控部分的结构图。
本发明将时钟门控的方法应用于多模式时钟产生模块,该多模式时钟产生模块包括时钟源选择子模块和时钟门控子模块,如图4和图5所示,时钟源选择子模块用于选择系统时钟信号,可由外部振荡器或者PLL倍频作为输入;时钟门控子模块根据系统工作模式的不同将内核和外设总开关的时钟使能信号enable_clk_core与enable_clk_peripheral进行第一级控制,外设中各个功能模块时钟使能信号(如图5,如enable_clk_can)进行第二级控制,保证在每一种工作模式下系统即满足功能要求又能改善EMC特性。
其中,时钟源选择子模块在系统上电复位后以外部振荡器时钟作为内部时钟,经过程序配置PLL寄存器,当振荡器稳定后,可将时钟切换为片内PLL时钟。片内PLL时钟可由片外高精度时钟振荡器输入时钟或由片内8MHz RC振荡器作为时钟输入源,经过PLL倍频后产生用于芯片工作的时钟信号。
通过设定四种工作模式,即Run Mode、Idle Mode、Stop Mode、DebugMode来实现时钟源选择子模块的功能配置:
(1)Run Mode模式:各个模块的时钟门控根据需要设置CPCG1和CPCG2寄存器打开,可以对CAN、PWM、RTC等模块进行单独门控;在Run Mode模式下,第一级时钟门控对象——微控制器MCU内核以及外设总开关的相应时钟使能有效,此时第二级时钟门控对象——各外设模块的时钟使能根据系统需求可以单独设置为打开或者关闭;
(2)Idle Mode模式:系统停止内核时钟,并禁止WDT的时钟;在Idle Mode模式下,第一级时钟门控对象中内核的时钟关闭,而外设总开关的时钟打开,此时各外设模块时钟使能可以进行单独设置;
(3)Stop Mode模式:系统停止内核时钟,禁止除RTC模块、低压检测模块、过温检测模块、P1外部中断模块以外所有外设时钟;在StopMode模式下,微控制器MCU内核和外设总开关的时钟都关闭,此时第二级时钟门控对象中除实时时钟模块RTC(Real Time Counter)、低压检测模块LVD(Low Voltage Detect)、过温检测模块OPT(Over TemperatureProtection)、P1外部中断模块INT0-7(Interrupt0-7)以外所有外设时钟都关闭;
(4)Debug Mode模式:系统处于调试模式,则禁止原来所有的时钟输出,原系统时钟将被TCK所取代;在Debug Mode模式下,禁止原来所有的时钟输出,原系统时钟将被TCK所取代,外部资源可以通过JTAG(Joint Test Action Group)接口访问内部存储器以及对CPU(CentralProcessing Unit)内核进行调试。
在具体应用中,图3所示的多模式时钟产生模块的硬件部分包含各个外设模块的门控时钟配置寄存器CPCG1和CPCG2,这两个寄存器涉及外设功能模块的时钟使能位,可以对每个外设模块的时钟使能位进行单独配置,从而将各自模块的时钟关闭或者打开,多模式时钟产生模块的寄存器列表详情,请参阅表1。
表1是多模式时钟产生模块的寄存器列表。
图6是图2中增强型IO端口模块的结构示意图。该增强型IO端口模块具有更多可配置的输入输出控制单元,它有P0,P1,P2,P3四个并行端口,其中P0、P1只用作数字端口,P2、P3可选择作为数字或者模拟端口,模拟端口用于多通路ADC的1-16路模拟输入,P1支持8路外部中断复用。在IO端口模块中,对性能改善最为重要的一点是具有可配置的驱动强度、翻转速率控制功能,可以有效改善EMI特性。
图6左侧结构为图2中右侧四个port单元,右侧为其每个port的内部结构图,从图中可以看出,除了配有上拉下拉选择、开漏、复用功能选择、方向寄存器外,更重要的是具有抗EMI的翻转速率和驱动强度控制寄存器,内核通过SFR总线去配置IO端口的翻转速率和驱动强度控制寄存器,可以分别对每一个引脚端口的翻转速率、驱动强度功能进行打开或者关闭操作,并将输出的数字控制信号对应工艺厂商提供的相应IO器件,可以更好的控制芯片的电磁干扰强度。
本发明采用翻转速率和驱动强度控制的方法对IO端口模块进行EMC特性的加固,对于每一组通用P口,都有对应的翻转速率和驱动强度控制寄存器,以P0为例,其对应的这两个寄存器如表2和表3所示,表2和表3是P0口翻转速率和驱动强度控制寄存器。该方法主要是针对降低并有效控制EMI电磁干扰,此外在GSMC0.18um工艺库支持下,还涉及了EMS电磁抗扰度方面的保护。
表2是P0口翻转速率控制寄存器
P0SR
P0口翻转速率控制寄存器基地址:0xD1+0x0003
表3是P0口驱动强度控制寄存器
P0DS
P0口驱动能力控制寄存器基地址:0xD1+0x0004
采用翻转速率寄存器配置的方法,可以在时钟信号不断翻转时,有效控制芯片IO管脚从0到1或者从1到0翻转变化的快慢,翻转速率的示意图请参阅图8;采用驱动强度寄存器配置的方法,可以在不驱动大负载的条件下有效控制对应引脚对外驱动电流强度的大小;在工艺库的支持下,采用施密特触发器可以有效地减少输入噪声信号等干扰。
表4是通用双向P口功能寄存器列表
在具体应用中,图6所示的增强型IO端口模块,其端口的硬件部分包含两类寄存器,分别是翻转速率使能寄存器Px_SR(x=0、1、2、3)和驱动能力控制寄存器Px_DS(x=0、1、2、3),它们可以对所有P1、P2、P3、P4口对应的引脚进行两类功能的设置。
通过引入多模式时钟产生模块和增强型IO端口模块,在时钟方面更加合理的进行门控操作,在IO上可以根据需要对端口的翻转速率和驱动强度进行控制,综合以上两点抗EMI设计,可以使微控制器的芯片(A8128芯片)的电磁兼容特性得到加强。
以下结合汽车电子项目组中第二款芯片A8128的设计环境,具体地阐述如何对多模式时钟产生模块和IO端口进行EMI抗干扰设计以及其他功能配置,并参照附图对本发明进一步详细说明。
以基于DW8051内核的汽车电子类微控制器实现为例,通过SFR(SFR:Special Function Register)BUS对时钟产生模块寄存器和IO端口寄存器进行相应配置,其中包括PLL参数m/n配置寄存器CPLLM/CPLLN、PLL模式控制寄存器CCTRL、PLL失锁复位寄存器CLOCK、外设门控时钟配置寄存器CPCG/CPCG1以及IO端口相关EMI控制寄存器和其他功能寄存器,详细信息请参阅表1和表4。
首先针对多模式时钟产生模块来讲,此功能在实现上划分成两个部分进行设计,分为时钟源选择和门控时钟子模块,请参阅图4和图5,下面来进一步介绍这两个部分的功能实现:
1、在A8128MCU多模式时钟产生模块的时钟源选择子模块中,系统上电复位后以外部振荡器时钟作为内部时钟,经过程序配置PLL寄存器,当振荡器稳定后,可将时钟切换为片内PLL时钟。片内PLL可由片外高精度时钟振荡器输入时钟或由片内8MHz振荡器输入时钟,经过PLL倍频后产生用于芯片工作的时钟信号,PLL模块结构请参阅说明书附图7。PLL已有验证好的IP,并具有以下特点:
1)输入时钟频率2MHz-50MHz
2)输出时钟频率12.5MHz-150MHz
3)工作电压1.62-1.98v
4)内置loop-filter
5)关闭模式(Power Down Mode)
6)带有Loss-of-Lock检测
在时钟源选择子模块中,可以根据芯片的整体工作模式调整PLL工作于以下的状态,包括:
1)外部时钟旁路PLL
系统直接使用外部输入的晶振时钟,此时钟旁路PLL后直接作为系统时钟输入,时钟频率范围可以是5MHz-20MHz。本模式需要设置CCTRL最高位CMODE为00。
2)外部时钟PLL倍频
系统使用外部输入的晶振时钟作为PLL的输入,经过倍频后作为系统时钟。本模式需要设置CPLLM和CPLLN寄存器,同时将CCTRL寄存器最高位CMODE设置为01。
3)内部振荡器旁路PLL
系统直接使用内部的振荡器时钟,时钟频率是8MHz。此时钟旁路PLL后直接作为系统时钟输入。本模式需要设置CCTRL最高位CMODE为10。
4)内部振荡器PLL倍频
系统使用8MHz的时钟作为PLL的输入,经过倍频后,该时钟作为系统时钟输出。本模式需要设置CCTRL最高位CMODE为11。
当系统使用PLL的输出作为时钟时,PLL输出时钟的稳定性至关重要,因此系统设计了检测PLL时钟失锁的电路,防止PLL时钟失锁后造成系统的功能失效。
该功能仅对使用PLL的输出作为系统时钟的情况有效,具体做法是采用PLL的输入时钟采样PLL输出的分频信号,输入时钟可以是外部晶振时钟或内部振荡器时钟,如果系统在规定时间周期内没有采样到上升沿,则系统自动复位,并产生连续20个周期的低电平信号。使用该模式时,需要设置CLOCK中的LDIV进行PLL输出的8分频或64分频,同时可以设置发生时钟失锁后是否进行复位,默认进行复位。
在实现PLL时钟失锁复位功能时,由于PLL输出时钟经过PLL内部逻辑后,与输入时钟相比较就变成异步时钟了,此时需要对输出时钟进行双寄存器同步处理,然后再用输入时钟采样输出时钟进行比较判断。
2、在时钟门控子模块中,需要根据系统的工作模式对各个模块的时钟进行门控管理,模块结构请参阅图5,下面为几种工作模式的介绍:
1)Run Mode:在时钟源选择子模块选择合适的系统时钟输出后,各个模块的时钟门控根据需要与否,通过设置CPCG1和CPCG2寄存器打开;
2)Idle Mode:系统停止内核时钟,并禁止WDT的时钟,CPCG1最低位sysm为0;
3)Stop Mode:系统停止内核时钟,并禁止除实时时钟模块RTC、低压检测模块LVD、过温检测模块TSEN、P1外部中断模块INT0-7以外所有外设时钟,CPCG1最低位sysm为1;
4)Debug Mode:系统处于调试模式,禁止原来所有的时钟输出,原系统时钟将被TCK所取代,外部资源可以通过JTAG接口访问内部存储器以及对CPU内核进行调试,CPCG1次低位为1。
在各种工作模式之间进行转换时,都需要从当前模式跳入到RunMode工作模式,并通过以下方式再进入到其他工作模式:
1)从Run Mode进入到Idle Mode,写寄存器PCON(IDLE=1)和CPCG1(最低位SYSM=0),且禁止WDT模块的时钟。
2)从Run Mode进入到Stop Mode,写寄存器PCON(IDLE=1)和CPCG1(最低位SYSM=1),此时仅有RTC、LVD、TSEN、INT0-7的时钟处于使能状态。
3)reset后若CPCG1(DEBUG=0),则进入到Debug Mode。
在Idle Mode情况下,有几种退出该模式的条件,如下所述:
(1)reset后系统自动退出并返回Run Mode;
(2)当任意中断发生后,系统首先将IDLE位清0,之后进入中断服务程序,当执行完RETI指令后,系统会返回到设置IDLE状态指令的下一条指令;
(3)JTAG发起Debug请求后,系统将恢复到正常工作模式。
在Stop Mode情况下,有几种退出该模式的条件,如下所述:
(1)reset后系统自动退出并返回Run Mode;
(2)当外部中断发生后,系统首先将STOP位清0,之后进入中断服务程序,当执行完RETI指令后,系统会返回到设置STOP状态指令的下一条指令;
(3)当RTC的中断发生后,系统首先将STOP位清0,之后进入中断服务程序,当执行完RETI指令后,系统会返回到设置STOP状态指令的下一条指令;
(4)当低电压检测单元的发生低压复位后,系统自动退出停止模式;
(5)当过温检测单元的过温解除中断发生,系统首先将STOP位清0,之后进入中断服务程序,当执行完RETI指令后,系统会返回到设置STOP状态指令的下一条指令。
在条件(4)和(5)中,有以下说明:低电压条件下,当实时电压低于设定值时,会有复位产生直到系统电压恢复到正常;过温检测条件下,当实时温度高于设定值时,会有中断信号产生,当检测到温度恢复到正常以后又会产生中断信号,系统恢复到正常工作模式。
在Debug Mode情况下,有几种退出该模式的条件,如下所述:
(1)reset后系统自动退出并返回Run Mode;
(2)检测到退出指令,这是通过读CPCG1(IDLE=0)来实现的;
针对IO端口模块来讲,有如下功能实现:
1、在A8128MCU的系统结构中有P0、P1、P2、P3四类通用并行双向端口,其中P0、P1只用作数字端口,P2、P3可选择作为数字或者模拟端口,模拟端口用于多通路ADC的1-16路模拟输入,P1支持8路外部中断复用,数字/模拟双向IO端口的基本结构请参阅图6。
2、在A8128MCU的四类IO端口中,所有的引脚都配置有EMI控制寄存器,由于SFR寄存器为8bit,每一位对应一个引脚,通过对该位的写入来改变这个引脚的翻转速率和驱动强度,故一共需要8个寄存器资源来进行配置。
以P0口为例,其翻转速率和驱动强度控制寄存器分别是P0_SR和P0_DS,寄存器说明请参阅表2和表3;
P0_SR和P0_DS控制寄存器寄存器进一步说明包括:
(1)P0_SR是翻转速率控制寄存器,其默认值为00,即P0端口所有引脚翻转速率的控制被禁止,当测得的电磁干扰强度过大时,可以打开此功能,将其翻转速率降下来,从而降低瞬间大电流的变化幅度来改善EMC特性;P0端口翻转速率使能后,对于配置为输入的P0端口管脚,这些控制位不会产生任何影响。
(2)P0_DS是驱动强度控制寄存器,其默认值为00,即P0端口引脚选择低输出驱动强度,进而保证驱动电流相对较低,以便降低由于大电流产生的电磁干扰现象。
如果由于外界负载所需的驱动电流比较高而不能满足系统正常需要时,可以将该控制寄存器对应位写入1,即将弱驱动改成强驱动,但同时也会影响到电磁干扰的强度;驱动强度的强如会直接影响到IO引脚的直流特性,同时其交流特性也会受到影响;对于配置为输入的P0端口管脚,这些位不会产生任何影响。
3、在A8128MCU的IO设计中,由于工艺支持施密特触发器结构,可以有效的地将输入信号进行平缓过度,将可能在信号上出现的波动以及毛刺等有效的消除;
4、在A8128MCU的IO端口其他功能设置中,涉及了开漏功能、上拉/下拉、数字/模拟端口复用、外部中断复用以及对应的每个端口的方向、数据选择寄存器等,请参阅表4。
以P0-P3端口对应寄存器为例,上述功能寄存器介绍如下:
(1)对于P0管脚,P0_PUDSEL寄存器的控制位使能相关P0管脚处于内部上拉状态还是下拉状态,默认值为上拉状态;
(2)对于P0管脚,P0_PUDEN寄存器的控制位决定引脚的上拉/下拉功能是否打开,默认值为上拉/下拉功能关闭;
(3)对于P0管脚,P0_OD寄存器的控制位决定引脚漏极开路模式,当等于0为正常模式,0和1可被有效输出,当等于1为漏极开路模式,只有0可被有效输出,默认值为1;
(4)对于P1管脚独有的P1_INT_FLAG寄存器为P1口中断管脚选择寄存器,当对应位等于0时,表示未检测到该对应引脚处的中断,当对应位等于1时,检测到对应引脚处的中断,默认值为0;
(5)对于P1管脚独有的P1_INT_TRI1/2寄存器为P1口中断触发状态选择寄存器,P1端口的每一个引脚的触发状态都是由两位来控制的,当为00、01、10、11时分别为上升沿触发(默认值)、下降沿触发、高电平触发、低电平触发,其中默认值为00;
(6)对于P2、P3管脚独有的P2_DASEL/P3_DASEL寄存器为P2/P3端口数字/模拟选择寄存器,配置寄存器的控制位来选择对应引脚用作数字或是模拟端口,当等于0时为数字输入输出端口,包括GPIO和其他数字复用功能,当等于1时为模拟输入端口,对应各自的模拟通道;
(7)MUX1/2/3/4寄存器为P口复用功能选择寄存器,其中包括PWM(PWM:Pulse-Width Modulation)脉冲宽度调制、CAN(CAN:ControllerArea Network)控制器局域网总线、LIN(LIN:Local Interconnect Network)本地互联网络总线、SPI(SPI:Serial Peripheral Interface)串行外围设备接口总线、I2C(I2C:Inter-Integrated Circuit)总线、ADC(Analog to DigitalConverter)模数转换器、TIMER0/1、ICOC(ICOC:Input Capture and OutputCompare)输入捕捉输出比较功能,当各自的功能选择控制位有效时,对应端口的复用功能打开,请参阅表5和表6。
表5是P口复用功能选择寄存器列表
表6是各个端口复用功能说明列表
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。