加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 301工作模式 时钟系统 数字IO

301工作模式 时钟系统 数字IO.pdf

301工作模式 时钟系统 数字IO

陈匡峰
2012-05-13 0人阅读 举报 0 0 暂无简介

简介:本文档为《301工作模式 时钟系统 数字IOpdf》,可适用于IT/计算机领域

MSPFMSPFMSPFMSPFMSPFMSPFMSPFMSPF学习仪培训学习仪培训学习仪培训学习仪培训学习仪培训学习仪培训学习仪培训学习仪培训精诚技术部MSPMSP单片机外围模块单片机外围模块系统复位、中断及工作模式系统复位、中断及工作模式基础时钟模块基础时钟模块数字数字IOIOIOIOIOIOIOIO口口硬件乘法器硬件乘法器FLASHFLASHFLASHFLASHFLASHFLASHFLASHFLASH存储器存储器十六位定时器十六位定时器TimerATimerATimerATimerATimerATimerATimerATimerA基本定时器基本定时器BasicTimerBasicTimerBasicTimerBasicTimerBasicTimerBasicTimerBasicTimerBasicTimerLCDLCDLCDLCDLCDLCDLCDLCDADCADCADCADCADCADCADCADC比较器比较器AAAAAAAAWDTWDTWDTWDTWDTWDTWDTWDTUSARTUSARTUSARTUSARTUSARTUSARTUSARTUSART通讯模块通讯模块系统复位、中断及工作模式POR(Poweronreset)POR(Poweronreset)POR(Poweronreset)POR(Poweronreset)的产生:上电RST出现低电平SVS产生复位动作PUC(Powerupclear)PUC(Powerupclear)PUC(Powerupclear)PUC(Powerupclear)的产生:POR信号WDT时间溢出看门狗密钥错误FLASH操作密钥错误BOR(BrownoutReset)BOR(BrownoutReset)BOR(BrownoutReset)BOR(BrownoutReset)的产生::::BOR模块产生BORVCCVtVB,ITVSTARTVCCMINPOR�RSTNMI为复位状态�IO口为输入状态�各模块和寄存器恢复为初始化的状态�状态寄存器SR复位�看门狗WDT为看门狗状态�FFFE的内容装入PC指针系统复位后的状态软件必须完成的工作�初始化堆栈指针SP,一般为RAM的顶端�根据应用的需要初始化WDT�根据应用的需要对模块初始化�特别注意:看门狗、FLASH写入失败都可以引起RESET复位电路的设计RESET脚直接通过电阻上拉不建议采用此方式RESET脚采用RC复位电路RESET脚采用电压监控芯片适用于MSP没有BOR电路的芯片可以确保用户控制器中满足所有的工作电压条件MCU才启动MSPFxx的RESET与SBW共用电容不要过大ADC,()DAC,()DMAADC,()DAC,()DMAADC,()DAC,()DMAADC,()DAC,()DMA����()USART,()USART,()USART,()USART,ICICICICA,BA,BA,BA,BkkkkkkkkFxFxFxFxUSART,ICUSART,ICUSART,ICUSART,IC()USART()USART()USART()USARTUSARTUSARTUSARTUSARTUSARTUSARTUSARTUSARTUSARTUSARTUSARTUSARTCommunicatiCommunicatiCommunicatiCommunicationonononPinsPinsPinsPinsADCADCADCADC����AAAAkkkkFxFxFxFxADCADCADCADCA,BA,BA,BA,BkkkkFxFxFxFxADC,MPYADC,MPYADC,MPYADC,MPYA,BA,BA,BA,BkkkkkkkkFxFxFxFxADC,()DAC,()DMAADC,()DAC,()DMAADC,()DAC,()DMAADC,()DAC,()DMA����A,BA,BA,BA,BkkkkkkkkFxFxFxFxFeaturesFeaturesFeaturesFeaturesBOBOBOBORRRRTimersTimersTimersTimersFlashRAFlashRAFlashRAFlashRAMMMMDeviceDeviceDeviceDeviceAlldevicesincludewatchdogtimer(WDT)andbasicclocksystem(BCS)Alldevicesincludewatchdogtimer(WDT)andbasicclocksystem(BCS)Alldevicesincludewatchdogtimer(WDT)andbasicclocksystem(BCS)Alldevicesincludewatchdogtimer(WDT)andbasicclocksystem(BCS)CompACompACompACompAAAAAkkkkFxFxFxFxADCADCADCADC����AAAAkkkkFxFxFxFxCompACompACompACompAAAAAkkkkFxFxFxFxMSP中断种类�系统复位�POR、PUC、BOR和SVS�非屏蔽中断�NMI�晶振失败�FLASH失败�DMA�可屏蔽中断�TA、BT、COMP、UART等中断矢量结构系统响应中断的过程进入中断需要个指令周期•当前运行的指令完成PC指向下一条指令•PC压栈•SR压栈•选择高优先级中断•单源中断标志清除多元中断需要软件清除•除SCG外SR被清除如果是低功耗退出低功耗GIE的清除关闭可屏蔽中断•装载PC指针中断前中断后特别注意:进入中断后SP指针指向堆栈中的SR可以在中断程序中修改(SP)内容改变中断返回后SR状态。中断返回执行RETI,需要个指令周期•弹出SR•弹出PC中断中中断返回后汇编语言程序例子ORG定义中断向量所在的地址DW放置中断矢量例子:ORGhProgramStartRESETmovw#Ah,SPInitializestackpointerInterruptVectorsORGFFFEhRESETVectorDWRESETC语言例子#pragmavector=TIMERAVECTORTIMERAVECTORTIMERAVECTORTIMERAVECTORinterruptvoidTimerA(void){POUT^=xTogglePCCR=AddOffsettoCCR}TIMERAVECTOR是TA的CCR中断矢量地址不同的中断服务程序有不同的地址详见:mspxxh库文件*******************************************************InterruptVectors(offsetfromxFFE)*******************************************************#defineBASICTIMERVECTOR(*u)#definePORTVECTOR(*u)#defineUSARTTXVECTOR(*u)#defineUSARTRXVECTOR(*u)#definePORTVECTOR(*u)#defineTIMERAVECTOR(*u)#defineTIMERAVECTORTIMERAVECTORTIMERAVECTORTIMERAVECTOR(*u)#defineADCVECTOR(*u)#defineUSARTTXVECTOR(*u)#defineUSARTRXVECTOR(*u)#defineWDTVECTOR(*u)#defineCOMPARATORAVECTOR(*u)#defineTIMERBVECTOR(*u)#defineTIMERBVECTOR(*u)#defineNMIVECTOR(*u)#defineRESETVECTOR(*u)MSP各种工作模式状态MCU工作模式SR寄存器各种工作模式汇编模式下工作模式的转换库文件定义:#defineLPM(CPUOFF)#defineLPM(SCGCPUOFF)#defineLPM(SCGCPUOFF)#defineLPM(SCGSCGCPUOFF)#defineLPM(SCGSCGOSCOFFCPUOFF)主程序进入模式:BIS#LPM,SR中断程序退出:BIC#LPM,(SP)为什么不用BIC#LPM,SR各种模式下的转换CPUCPUCPUCPU关闭DCODCODCODCO开启ACLKACLKACLKACLK开启uAuAuAuACPUCPUCPUCPU关闭DCODCODCODCO开启ACLKACLKACLKACLK开启uAuAuAuA活动DCODCODCODCO开启ACLKACLKACLKACLK开启uAuAuAuA活动DCODCODCODCO开启ACLKACLKACLKACLK开启uAuAuAuA<us<us<us<us待机DCODCODCODCO关闭ACLKACLKACLKACLK开启uAuAuAuA待机DCODCODCODCO关闭ACLKACLKACLKACLK开启uAuAuAuA<us<us<us<us关闭所有时钟关闭uAuAuAuA关闭所有时钟关闭uAuAuAuALPMLPMLPMLPM�RAMSFRRAMSFRRAMSFRRAMSFR保持C语言下工作模式的转换库文件定义:#defineLPMbits(CPUOFF)#defineLPMbits(CPUOFF)#defineLPMbits(CPUOFF)#defineLPMbits(CPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGCPUOFF)#defineLPMbits(SCGSCGCPUOFF)#defineLPMbits(SCGSCGCPUOFF)#defineLPMbits(SCGSCGCPUOFF)#defineLPMbits(SCGSCGCPUOFF)#defineLPMbits(SCGSCGOSCOFFCPUOFF#defineLPMbits(SCGSCGOSCOFFCPUOFF#defineLPMbits(SCGSCGOSCOFFCPUOFF#defineLPMbits(SCGSCGOSCOFFCPUOFF)C语言操作:#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMBISSR(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)#defineLPMEXITBICSRIRQ(LPMbits)进入模式:LPMLPMLPMLPM或BISSR(LPMbits)BISSR(LPMbits)BISSR(LPMbits)BISSR(LPMbits)或BISSR(LPMbitsGIE)BISSR(LPMbitsGIE)BISSR(LPMbitsGIE)BISSR(LPMbitsGIE)退出模式:LPMEXITLPMEXITLPMEXITLPMEXIT或BICSRIRQ(LPMbits)BICSRIRQ(LPMbits)BICSRIRQ(LPMbits)BICSRIRQ(LPMbits)低功耗转变为低功耗例:系统初始化完毕之后工作于低功耗模式中断事件触发到活动模式中断处理结束后进入到低功耗模式。主程序…初始化操作开始…………初始化完毕BIS#GIECPUOFFBIS#GIECPUOFFBIS#GIECPUOFFBIS#GIECPUOFFSRSRSRSR主程序中设置低功耗模式…程序在这里停止等待中断发生中断子程序……中断处理开始…………中断处理结束BIS#GIECPUOFFSCGSCGBIS#GIECPUOFFSCGSCGBIS#GIECPUOFFSCGSCGBIS#GIECPUOFFSCGSCG(SPSPSPSP)设置SRSRSRSR为低功耗模式RETI中断返回系统进入低功耗模式。……低功耗到活动状态转换主程序…初始化操作开始…………初始化完毕BIS#GIECPUOFFSR主程序中设置低功耗模式L操作L操作……中断子程序……中断处理开始…………中断处理结束BIC#CPUOFFBIC#CPUOFFBIC#CPUOFFBIC#CPUOFF(SP)设置SR为活动模式RETI中断返回系统进入活动模式。各种模式下的功耗*bitCPU*突发式模式切换*电流消耗小*唤醒快(<µs)MSPMSPMSPMSP*bitCPU*电流消耗大*唤醒慢IttI例:LPM,LPM,LPM,LPM,备用模式振荡器Hz活动,TimerA有效,ActiveActiveActiveActiveModeModeModeModeVcc=VVcc=VVcc=VVcc=Vµµµµsecsecsecsec周期IccIccIccIccµµµµAAAALPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMLPMIIIIAvrgAvrgAvrgAvrgIIIIAvrgAvrgAvrgAvrgmAmAmAmA<uA<uA<uA<uA低功耗模式下功耗的计算一般的设计考虑�总是开启�根据需要减小待机电流减少活动时间““““立即启动””””无其它中间过程,,,,数控晶振MhzMhzMhzMhzMCLKCPUMCLKCPUMCLKCPUMCLKCPU和外围模块ACLKACLKACLKACLK––––低功耗外围模块控制mAmAmAmAuAuAuAuAuAuAuAuA时间uAuAuAuAMSPMSPMSPMSP其它MCU一般的低功耗原则、最大化LPM的时间用KHz晶振作为ACLK时钟DCO用于CPU激活后的突发短暂运行、用接口模块代替软件驱动功能、用中断控制程序运行、在冗长的软件计算中使用单周期的CPU寄存器、避免频繁的子程序和函数调用、不论对于内核还是对于各外围模块选择尽可能低的运行频率如果不影响功能应设计自动关机、最大化LPM的时间用KHz晶振作为ACLK时钟DCO用于CPU激活后的突发短暂运行、用接口模块代替软件驱动功能、用中断控制程序运行、在冗长的软件计算中使用单周期的CPU寄存器、避免频繁的子程序和函数调用、不论对于内核还是对于各外围模块选择尽可能低的运行频率如果不影响功能应设计自动关机不用的引脚连接•AVccDVccAVssDVssVREFOPENVeREFDVssVREFVeREFDVssXINDVccXOUTOPENXTINDVssXTOUTOPENPxPxOPEN切换到端口功能输出方向RSTNMIDVcc上拉K电阻下拉nF电容RDVssCOMOPENTDOOPENTDIOPENTMSOPENTCKOPENSxxOPEN基础时钟模块MSP时钟模块•高速晶体振荡器•低速晶体振荡器•数字控制振荡器DCO•锁频环FLL以及锁频环增强版本FLLFx中的时钟系统MSPXXX时钟模块慢速外设慢速外设CPUCPUCPUCPUCPUCPUCPUCPU和系统和系统快速外设快速外设时钟输出信号时钟输出信号ACLKACLKACLKACLKACLKACLKACLKACLK辅助时钟辅助时钟ACLK,,,ACLK,,,ACLK,,,ACLK,,,ACLK,,,ACLK,,,ACLK,,,ACLK,,,MCLKMCLKMCLKMCLKMCLKMCLKMCLKMCLK主系统时钟主系统时钟SMCLKSMCLKSMCLKSMCLKSMCLKSMCLKSMCLKSMCLK子系统时钟子系统时钟时钟输入源:时钟输入源:LFXTCLKLFXTCLKLFXTCLKLFXTCLKLFXTCLKLFXTCLKLFXTCLKLFXTCLK低频时钟源低频时钟源XTCLKXTCLKXTCLKXTCLKXTCLKXTCLKXTCLKXTCLK高频时钟源高频时钟源DCOCLDCOCLDCOCLDCOCLDCOCLDCOCLDCOCLDCOCL数字控制数字控制RCRCRCRCRCRCRCRC振荡器振荡器DCO频率范围的控制DCO的频率DCO的启动时间InterruptInterruptInterruptInterruptSpeedStartup•以迅速稳定的时钟启动对事件作出反应FLL模块FLL工作模式在每在每个个DCOCLKDCOCLKDCOCLKDCOCLKDCOCLKDCOCLKDCOCLKDCOCLK时钟周期中时钟周期中调制器通过混合相邻两个调制器通过混合相邻两个DCOCLKDCOCLKDCOCLKDCOCLKDCOCLKDCOCLKDCOCLKDCOCLK周期周期可以克服周期累加的变化可以克服周期累加的变化晶振失败DCOFDCODCODCODCODCODCODCODCO振荡器失效振荡器失效LFOFLFXTLFXTLFXTLFXTLFXTLFXTLFXTLFXT振荡器在低频模式振荡器在低频模式(LF)(LF)(LF)(LF)(LF)(LF)(LF)(LF)下失效下失效XTOFLFXTLFXTLFXTLFXTLFXTLFXTLFXTLFXT振荡器在高频模式振荡器在高频模式(HF)(HF)(HF)(HF)(HF)(HF)(HF)(HF)下失效下失效XTOFXTXTXTXTXTXTXTXT振荡器失效振荡器失效晶振启动和失败后的恢复SR:OSCOFFFLLCTL:XTOFFHF:~usLF:~msFLL模块应用举例例设:ACLK=LFXT=Hz,令MCLK=SMCLK=DCOCLK=(n)×ACLK并将MCLK和ACLK分别通过P和P输出。程序代码如下#include"mspxxh"voidmain(void){WDTCTL=WDTPWWDTHOLD停止看门狗SCFI|=FNMhzsFLLCTL=XCAPPFSCFQCTL=()×=MhzPDIR=xPP输出PSEL=xPP输出MCLKACLKwhile()}内部DCO=MhzP>MCLK=MhzP>ACLK=khzMSP最小系统数字IO口MSP的IO口•类型丰富类型丰富类型丰富类型丰富•功能丰富功能丰富功能丰富功能丰富•寄存器丰富寄存器丰富寄存器丰富寄存器丰富数字输入输出端口使用特性、所有端口都可以单独进行编程、可以进行输入输出和中断条件的任意组合、对具有中断功能的引脚输入沿可进行选择、具有第功能选择以适合不同IO口操作、所有指令支持端口控制寄存器的读写操作IO口引脚MSP的引脚可以有多种功能:单一功能IO口与个功能口复用IO口与个功能口复用IO口与个功能口复用(比如MSPFX)IO口种类MSP有种IO口:具有中断功能:PP不具有中断功能:PPPPIO模块结构IO寄存器PPPIES:上升沿中断下降沿中断IO口中断问题中断有关的寄存器:PIES:上升沿中断下降沿中断PIFG:没有中断发生有中断发生PIE:禁止中断允许中断当进行PIES设置时,根据原来PIN的不同可能会引起中断端口的特性晶体管的导通电阻(RDSonRDSonRDSonRDSon)限制了源极或漏极的电流端口输出可作为晶体管的源极或漏极IO口的驱动能力空闲IO口的设置空闲IO口:设置成输出状态设置成输入状态外部接地(GND)联系我们联系我们联系我们联系我们联系我们联系我们联系我们联系我们精诚技术部QQ:联系方式:网址:wwwourjcdzcom官方博客:http:blogsinacomcnmicromcu

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/10

301工作模式 时钟系统 数字IO

仅供在线阅读

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利