第三章 MSP430基本外设1(时钟系统)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章MSP基本外设2Copyright2009TexasInstrumentsAllRightsReserved•MSP430系列微控制器的片内资源非常丰富,外设模块通过数据总线、控制总线和地址总线与CPU相连。–系统时钟–低功耗模式–通用输入输出端口–定时器–DMA控制器–比较器A–模数转换器(ADC)–数模转换模块(DAC)–LCD液晶驱动模块–硬件乘法器–Flash编程基本外设本章主要内容•MSP430系列单片机片内基本外设的结构•原理及功能•外围设备的使用3.1系统时钟(UCS)UnifiedClockSystem本节内容•时钟系统模块设计要求•MSP430X5XX/6XX系列时钟系统模块•五个时钟输入源振荡器模块•DCO模块操作•外设模块请求时钟系统(低功耗运行模式下)•模块振荡器(MODOSC)•故障安全逻辑操作•时钟模块应用举例(MSP430F5XX/6XX)•时钟模块库函数时钟系统模块的概述单片机各部件能有条不紊自动工作,实际上是在其系统时钟作用下,控制器指挥芯片内各个部件自动协调工作,使内部逻辑硬件产生各种操作所需的脉冲信号而实现的。MSP430所有器件都有时钟模块,都能实现超低功耗应用。振荡器和系统时钟发生器的主要涉及目标是廉价和廉价,外接器件减缩到只有一个普通晶振。MSP430系列单片机的时钟模块由低频振荡器、高频振荡器、控制逻辑、数字控制振荡器(DCO)、锁频环(FLL)等模块构成。虽然不同系列器件包含的时钟模块可能不同,但各系列的基础时钟模块都输出3种时钟:辅助时钟(ACLK)、主系统时钟(MCLK)和子系统时钟(ZMCLK),分别送给不同需求的模块。时钟系统模块设计要求为适应系统和具体应用需求,单片机的系统时钟必须满足以下不同要求:高频率。用于对系统硬件需求和外部事件快速反应;低频率。用于降低电流消耗;稳定的频率。以满足定时应用,如实时时钟RTC;低Q值振荡器。用于保证开始及停止操作最小时间延迟。MSP430X5XX/6XX系列时钟系统模块(1/3)右图为MSP430X5XX/6XX系列单片机时钟模块结构:MSP430X5XX/6XX系列时钟系统模块(2/3)从上图可以看出,MSP430F5XX/6XX时钟模块有5个时钟输入源:XT1CLK低频或高频时钟源:可以使用标准晶振,振荡器或者外部时钟源输入4MHz~32MHz。XT1CLK可以作为内部FLL模块的参考时钟。XT2CLK高频时钟源:可以使用标准晶振,振荡器或者外部时钟源输入4MHz~32MHz。VLOCLK低功耗低频内部时钟源:典型值为10KHZ;REFOCLK低频修整内部参考时钟源:典型值为32768Hz,作为FLL基准时钟源;DCOCLK片内数字控制时钟源:通过FLL模块来稳定。MSP430X5XX/6XX系列时钟系统模块(3/3)基础时钟模块可提供3种时钟信号:ACLK辅助时钟:ACLK可由软件选择来自XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV、XT2CLK(由具体器件决定)这几个时钟源之一。然后经1、2、4、8、16、32分频得到。ACLK可由软件选作各个外设模块的时钟信号,一般用于低速外设模块。MCLK系统主时钟:MCLK可由软件选择来自上述5种时钟源,同样可经过分频得到。MCLK主要用于CPU和系统。SMCLK子系统时钟:可由软件选择来自上述5种时钟源,同样可经过分频得到。SMCLK可由软件选作各个外设模块的时钟信号,主要用于高速外设模块。五个时钟输入源振荡器模块(1/6)五个时钟输入源振荡器模块,包括:XT1振荡器XT2振荡器低功耗低频内部振荡器(VLO)低频修整内部参考振荡器(REFO)片内数字控制振荡器(DCO)五个时钟输入源振荡器模块(2/6)一、XT1振荡器XT1工作在低频(LF)模式时(XTS=0),提供支持32768HZ时钟的超低功耗模式。晶振只需经过XIN和XOUT两个引脚连接,不需要其他外部器件,所有保证工作稳定的元件和移相电容都集成在芯片中。在一些设备中当XT1选择高频(HF)模式时(XTS=1)也支持高频晶振或者振荡器。高频晶振或谐振器连接到XIN和XOUT引脚,需要在两个端口配置电容。五个时钟输入源振荡器模块(3/6)二、XT2振荡器一般称之为第二振荡器XT2,它产生时钟信号XT2CLK,它的工作特性与XTl振荡器工作在高频模式时类似。系统频率和系统的工作电压密切相关,某些应用需要较高的工作电压,所以也需要系统提供相应较高的频率。系统频率和系统工作电压之间的关系下图所示:五个时钟输入源振荡器模块(4/6)频率(MHz)频率和工作电压的关系在阴影中的数字表示所支持PMMCOREVx配置。电压(V)五个时钟输入源振荡器模块(5/6)三、低功耗低频内部振荡器(VLO)低频低功耗内部振荡器(VLO)能够提供典型10kHz的振荡频率(具体参数见数据手册),而不需要外接任何晶振。VLO可以对时钟精确要求不高的的应用提供低成本和超低功耗的时钟源。五个时钟输入源振荡器模块(6/6)四、低频修整内部参考振荡器(REFO)REFO可以产生一个比较稳定的频率,其典型值为32768Hz,它可以用作FLLREFCLK。低频修整内部参考振荡器(REFO)可以在没有外部晶振,对成本又比较敏感的场合得到很好的应用。五、片内数字控制振荡器(DCO)DCO振荡器是一个可数字控制的RC振荡器,它的频率随供电电压、环境温度变化而具有一定的不稳定性。DCO频率可以通过选择FLL的频率(FLLRENCLK/n)来增强振荡频率的稳定性。DCO模块操作(1/5)DCOCLK频率调整过程:设置DCORSELx这3位可以从8个DCO额定频率中选择一个频率。5位的DCO用来在DCORSEL的32个频率级别中选择,相邻两个的频率相差约8%。5位的MOD用于控制在DCO中的32个频率中选择切换两种频率。如果DCO=31,表示DCO已经选择最高频率,此时不能利用MOD进行频率调整。(如下图所示)其中,在锁频环工作的时候,这些DCO位和MOD位的值由硬件自动调节。DCO模块操作(2/5)DCO频率的调节DCO模块操作(3/5)锁频环(FLL)DCOCLK可用作ACLK、MCLK、SMCLK,但它的频率随供电电压、环境温度变化而具有一定的不稳定性,FLL通过频率积分器和调制器的自动调节使DCOCLK的频率趋于稳定。FLL通过在两个最相近的邻居频率之间进行切换,产生两个频率的加权频率,最终获得我们所需的频率。(如下图所示)DCO模块操作(4/5)DCO调制在32个时钟周期中,DCO调制器通过配置MOD位混合两个DCO频率,在fDCO和fDCO+1之间产生一个有效的混合频率,以克服周期累加的变化,并提高时钟驱动能力,减少电磁干扰。当MOD=0时,调制器关闭。当FLL模块使能时,调制器的设置和DCO由FLL硬件自动控制;如果FLL关闭,调制器的设置和DCO由软件配置。DCO模块操作(5/5)外设模块请求时钟系统(1/2)外设模块可以控制3个时钟请求信号中的一个来获得时钟ACLK_REQ、MCLK_REQ、SMCLK_REQ。不管在任何模式下,外设模块的正常操作都可以从标准时钟系统(UCS)请求时钟信号。例如:如果定时器选择了ACLK作为时钟源,只要定时器允许,ACLK_REQ信号就一直有效并向UCS申请时钟,而UCS则不管当前是在什么LPM低功耗模式都会输出ACLK信号。如下图所示,为外设模块请求时钟系统。外设模块请求时钟系统(2/2)外设模块请求时钟系统。模块振荡器(MODOSC)(1/1)UCS模块还有一个内部的振荡器(MODOSC)。它主要给FLASH模块控制器或其他任意需要的模块提供时钟。MODOSC产生时钟信号MODCLK。例:ADC12_A可以选择使用MODOSC作为转换时钟源,用户选择ADC12OSC作为转换时钟源时,ADC12OSC就来自MODOSC。故障安全逻辑操作(1/2)时钟系统模块包含有晶振故障保护的功能。这个功能可以检测XT1、XT2、DCO的振荡器故障。当晶体振荡器启用后,没有正常工作时,则相应的故障位XT1LFOFFG、XT1HFOFFG、XT2OFFG将被置位。如下图所示,可检测的故障有:XT1的LF模式下低频晶振故障(XT1LFOFFG)XT1的HF模式下高频晶振故障(XT1HFOFFG)XT2高频晶振故障(XT2OFFG)DCO故障标志(DCOFFG)故障安全逻辑操作(2/2)晶振故障逻辑时钟模块应用举例(MSP430F5XX/6XX)(1/2)P1.0MSP430F6638P3.4SMCLKACLK例1,MSP430x66xx演示例程:设ACLK=XT1=32768Hz,令SMCLK=XT2CLK,MCLK=DCO(默认)=32xACLK=1048576Hz,ACLK和SMCLK分别通过P1.0和P3.4输出。程序代码如下:#includemsp430f6638.hvoidmain(void){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P1DIR|=BIT0;//ACLK通过P1.0输出P1SEL|=BIT0;P3DIR|=BIT4;//SMCLK分别通过P3.4输出。P3SEL|=BIT4;while(BAKCTL&LOCKIO)//解锁XT1引脚BAKCTL&=~(LOCKIO);P7SEL|=BIT2+BIT3;//选择端口功能为XT2UCSCTL6&=~XT2OFF;//使能XT2UCSCTL6&=~(XT1OFF);//使能XT1UCSCTL6|=XCAP_3;//配置内接电容值,//若使输出为32.768KHz,则需要选择XCAP_3do{UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);//清零XT1、XT2、DCO故障标志位SFRIFG1&=~OFIFG;//清零SFR中的故障标志位}while(SFRIFG1&OFIFG);//检测振荡器故障标志位UCSCTL6&=~XT2DRIVE0;//根据预期的频率,减小XT2的驱动UCSCTL4|=SELA_0+SELS_5;//选择SMCLK和ACLK的时钟源while(1);//循环等待}时钟模块应用举例(MSP430F5XX/6XX)(2/2)◆时钟系统(UCS)常用配置和初始化的API函数UCS_clockSignalInit()UCS_initFLLSettle()UCS_enableClockRequest()UCS_disableClockRequest()UCS_SMCLKOff()UCS_SMCLKOn()时钟模块库函数(1/4)◆时钟系统(UCS)的API被分成三组函数:时钟系统(UCS)常用配置和初始化的API函数外部晶振特定的配置和初始化的API函数对状态和配置进行设置和询问的API函数◆API是应用程序编程接口,是一些预先定义的函数,用户不需要了解具体内部寄存器的操作,只需要了解该API函数实现的功能,用户只需调用该API函数即可。时钟模块库函数(2/4)◆外部晶振特定的配置和初始化的API函数UCS_setExternalClockSource()UCS_LFXT1Start()UCS_HFXT1Start()UCS_bypassXT1()UCS_LFXT1StartWithTimeout()UCS_HFXT1StartWithTimeout()UCS_bypassXT1WithTimeout()UCS_XT1Off()UCS_XT2Start()UCS_XT2Off()UCS_bypassXT2()UCS_XT2StartWithTimeout()UCS_bypassXT2WithTimeout()UCS_clearAllOscFlagsWithTimeout()时钟模块库函数(3/4)◆对状态和

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功