MSP430F5529时钟源

MSP430F5529时钟源
MSP430F5529时钟源

***************************************************************还有一个模块时钟源:MODOSC,产生MODCLK时钟源信号,一般只为闪存控制模块和ADC12模块提供服务。

该模块不被使用时自动关闭,任何模块对该时钟源提出使用要求时,MODOSC无需被使能即可响应该请求。430F5529中MODCLK为5MHZ。

***************************************************************

MSP430F5529有多个时钟源,而且很多模块其时钟源都是可以自由选择的。此外,由于一般情况下,系统功耗是和工作频率成正比的,因此有些时候通过选择较低频率的时钟源,在满足正常工作条件下,是可以有效降低功耗的。虽然函数库HAL_UCS.c/h,有完整的各个控制函数,但我觉得对于这一章还是对寄存器直接操作比较简单,因为函数太短、太多了。

3.1统一时钟系统(UCS)的简介

Unified Clock System,UCS。合理的配置时钟,可以达到平衡系统且降低功耗的目的。

MSPF5529时钟系统包含5个时钟源:

①LFXT1外部低频振荡源,32.768KHZ,可以用作FLL的参

照源;

②XT2外部高频振荡源,4MHZ;

③VLO(Internal very low)内部低耗低频振荡源,典型为10KHZ,精度一般;

④REFO内部低频参照源,32.768KHZ,常被用作锁相环FLL的基准频率,精度很高,不使

用时不消耗电源,其设置往往要参考LPM模式的的设置;

⑤DCO(Internal digitally-controlled)内部数字控制振荡源,一般通过FLL来设置;

(很有用,很重要,之后会详细讲)

通常使用3种时钟信号,它们都来自于上述5个信号源:

①ACLK(Auxiliary clock)辅助时钟,其时钟源可由软件控制从XT1、REFOC、VLO、DCO、

DCOCLKDIV、XT2里面选取。其中DCOCLKDIV是由DCO经1、2、4、8、16或者32分频得到。注意,ACLK同样可以再次被1、2、4、8、16或者32分频。

②MCLK(Master clock)主时钟,其特性与ACLK一模一样。

③SMCLK(Subsystem master clock)子系统时钟,其特性与ACLK一模一样。

3.2 UCS的操作说明

开机上电时默认的时钟情况为(必须记清楚!!!!):

ACLK:XT1(无效时,低频模式切换为REFO,其他情况切换为DCO)

MCLK:DCOCLKDIV

SMCLK:DCOCLKDIV

此外,FLL的参照源默认XT1;

如果连接XT1和XT2的引脚不进行PXSEL的设置,那么这两个时钟源都是无效的;

REFOCLK、VLOCLK、DCOCLK默认状态下是可用的;

系统稳定后,DCOCLK默认为2.097152MHZ,FLL默认2分频,则MCLK和SMCLK的频率都为1.048576MHZ。(实验三会提到如何计算)

另外,系统复位、系统工作模式LPM 的选择都会对UCS有一定影响,这里限制太多,具体可参考TI官方资料UCS部分。LPM以及系统复位下章将会讲到。

关于操作说明的简单总结:(下面基本都是废话,了解即可)

①VLO的选择是最简单的,不需要顾及其它情况;

②REFO的选用,需要参考不同的工作模式,有多种限制;

③XT1和XT2特点相同。使用的时候,不仅要配置与其相连的引脚,还要配置电容,还要注意其本身工作在低频还是高频模式。而且,在不同工作模式下也有不同的要求;

④DCO作为数控振荡器,其频率的调节不仅可以通过自身设定,也可以通过FLL锁相环设定;

⑤FLL锁相环,是变换频率的灵活选择。它既可以设置基准频率,也可以选择分频数,还可以被直接关闭来实现降低功耗等目的;

⑥UCS系统带有时钟信号错误保护机制;

⑦对有严格时序要求的地方,要选择精度高的时钟源,并且做好FLL和DCO部分的调制设置;

⑧不同模式下(有些时钟源是禁止的)的时钟控制图:(只需用到的时候注意一下即可,查表)

3.3 UCS寄存器控制操作

共有10组16位读写寄存器,为UCSCTL0-UCSCTL9。同样支持字和字节操作,即UCSCTL0包括UCSCTL0_H和UCSCTL0_L。

注:凡是标记“Reserved”的位,如果没有特意声明,则读回时都按0处理。

UCSCTL0

DCO :DCO频拍选择。选择DCO的频拍并在FLL运行期间(因MOD位的变化)自动调整。。DCO 的5个控制位把由DCORSELx选择的DCO频率分为32等份,间隔大约8% 。

MOD:调制位计数器。选择调制类型,所有的MOD位在FLL运行期间自动调整,无需用户干预。UCSCTL1

DCORSEL:DCO频率范围选择

DISMOD:调制器禁止使能位。0—使能调制器;1—禁止调制器。

UCSCTL2

分频)。000-1分频,001-2分频,010-4分频,

FLLD:预分频器(即f

DCO

011-8分频,100-16分频,101-32分频,

110以及111都是备用的,默认为32分频。

FLLN:倍频系数。设置倍频值N,N必须大于0,如果FLLN=0,则N被自动设置为1。

UCSCTL3

SELREF:FLL参考时钟选择。

000-XT1,001-待用,默认为XT1,010-REFO,

101-XT2,其余均为待用,默认为REFO。

FLLREFDIV:FLL参考时钟分频器。000-1分频,001-2分频,010-4分频,

011-8分频,100-12分频,101-16分频,

110以及111都是备用的,默认为16分频。

UCSCTL4

SELA:ACLK时钟源选择。

000-XT1,001-VLO,010-REFO,011-DCO,100-DCOCLKDIV,101 -XT2有效时为XT2,否则为DCOCLKDIV

110 、111保留以备后来使用。当XT2有效时默认为XT2CLK,否则默认

为DCOCLKDIV

SELS:SMCLK时钟源选择。设置同SELA

SELM:MCLK时钟源选择。设置同SELA

UCSCTL5

DIVPA:ACLK外部有效输出分频000-1分频,001-2分频,010-4分频,

011-8分频,100-16分频,101-32分频,

110以及111都是备用的,默认为32分频。

DIVA:ACLK时钟源分频,设置同DIVPA

DIVS:SMCLK时钟源分频,设置同DIVPA

DIVM:MCLK时钟源分频,设置同DIVPA

UCSCTL6

XT2DRIVE:XT2振荡器电流驱动能力调整

00 最低电流消耗。XT2振荡器工作在4MHz到8MHz …

XT2BYPASS:XT2旁路选择0-XT2来源于内部时钟(使用外部晶

振)

1-XT2来源于外部引脚输入(旁路模式)

XT2OFF:关闭XT2振荡器

0 -当XT2引脚被设置为XT2功能且没有被设置位旁路模式时,XT2被打开;

1 -当XT2没有被用作时钟源以及没有用作FLL参考时钟时,XT2被关闭。XTS:XT1工作模式选择

0-低频模式(XCAP定义XIN和XOUT引脚间的电容)

1-高频模式(XCAP位没有被使用)

XCAP:振荡器负载电容选择

SMCLKOFF:SMCLK关闭控制位0-SMCLK开1-SMCLK关闭

XT1OFF:同XT2OFF

UCSCTL7

XT2OFFG:XT2出错时置位,同时OFFIFG也会置位,需要软件清零。

XT1HFOFFG:高频工作模式下XT1出错时置位,同时OFFIFG也会置位,需要软件清零。

XT1LFOFFG:低频工作模式下XT1出错时置位,同时OFFIFG也会置位,需要软件清零。

DCOOFFG:DCO出错时置位,但当DCO=1或31时,也会置位,同时OFFIFG也会置位,需要软件清零。

UCSCTL8

信号请求使能:

0-相应的信号请求禁止1-相应的信号请求允许

UCSCTL9

XT1、XT2旁路模式输入摇摆电平(范围)必须被设置

0-输入范围0~DV

CC

1-输入范围0~DV

IO

深入了解HCS08的内部时钟源 (ICS)

飞思卡尔半导体 AN3041 应用笔记 第0版, 10/2005 深入了解HCS08的内部时钟源(ICS)模块 作者:Scott Pape 飞思卡尔微控制器部系统工程部 在本文中,我们将较为深入地了解一下某些型号的HCS08系列微控制器(MCU)所具有的内部时钟源模块(ICS)。ICS是HCS08 MCU所采用的一种非常灵活的时钟源,然而它十分的经济高效,适用于HCS08系列中体积较小、成本较低的类型的MCU。 ICS中包含锁频环、内部时钟参考信号、外部振荡器和时钟选择子模块。这些子模块组合起来能提供各种时钟模式和频率,从而几乎能满足任何应用的需要。ICS有7种工作模式,后文中将详细讨论。 同时,我们将把ICS模块与用在其他HCS08 MCU中的内部时钟发生器(ICG)模块进行比较。此外,我们还会介绍ICS模块从HCS08的各种低功耗模式恢复时的工作过程。在结论部分,我们将介绍内部时钟参考信号的校准。 目录页1 ICS功能介绍 (2) 1.1 结构框图 (2) 1.2 ICS模式:关断 (4) 1.3 ICS模式:FEI (4) 1.4 ICS模式:FEE (4) 1.5 ICS模式:FBI和FBILP (5) 1.6 ICS模式:FBE和FBELP (5) 1.7 ICS与ICG (6) 1.8 附加应用功能 (6) 2 低功耗模式中的ICS (7) 2.1 停止1和停止2模式 (7) 2.2 停止3模式 (7) 2.3 等待模式 (8) 3 校准IRC (8) 3.1 如何校准— AN2496 (8) 3.2 不调整的运行 (8) 3.3 校准IRC (9)

1 ICS 功能介绍 深入了解HCS08的内部时钟源(ICS)模块 飞思卡尔半导体 General Business Information 3 FLL 的输出频率为参考时钟频率的512倍。FLL 包括三个主要部分: ·参考频率选择 ·数字控制振荡器(DCO ) ·用于比较这两个部分输出的滤波器 FLL 的工作原理与锁相环(PLL )非常相似。不同之处在于PLL 是根据参考时钟与DCO 时钟的相位差来调节输出的,而FLL 则是通过比较DCO 时钟与参考时钟的频率来工作的。FLL 对一个参考时钟周期内的DCO 时钟脉冲边沿数进行计数。因此,对于512倍的倍频器,FLL 应该在参考时钟的每两个上升沿之间得到512个DCO 输出的上升沿。FLL 的实现大多借助数字逻辑电路,因而不需要PLL 通常必须采用的外部滤波器件。 时钟选择逻辑只是简单地选择FLL 、外部参考时钟或内部参考时钟作为ICS 模块的输出。此外,还采用了一个时钟分频器电路,可以对输出进行1倍、2倍、4倍或8倍分频,用以降低输出时钟的频率。 内部参考时钟(IRC )是一个可调整的内部参考时钟信号,既可用作FLL 的参考时钟,也可直接用作CPU 和总线时钟的时钟源。这个内部参考时钟不需要诸如调整电容或电阻等的外部器件。IRC 由ICS 寄存器中的一个9位数值进行调整,解析度典型值能达到未调整IRC 频率的0.1%。与许多其他的内部参考时钟不同,这个IRC 可将频率在一定的范围内进行调整,从31.25kHz 变到39.06kHz 。当用作FLL 的参考时钟时,这将允许用户用0.1%的解析度,把总线频率设定在8MHz 至10MHz 间的任意值。调整之后,对调整频率的偏差典型值仅为 +0.5% 至 -1%,最大值也只不过是±2%。 外部振荡器参考时钟(OSC )实际上把三个外部时钟源合并在一个里面。它有一个采用32kHz 至38.4kHz 晶体或谐振器的低频振荡器,还有一个采用1MHz 至16MHz 晶体或谐振器的高频振荡器。这两个振荡器需要两个引脚即XTAL 和EXTAL 来生成时钟信号。OSC 还有一种外部时钟模式,该模式简单地把一个外部时钟信号引入MCU 。在此模式中,只需要EXTAL 脚,而XTAL 脚可用作通用I/O 。输入频率可以是0Hz 至20MHz 之间的任意值。由于引脚的限制,有些MCU 可能没有外部振荡器。 ICS 的子模块是否启动取决于采用哪种ICS 时钟模式。ICS 具有7种工作模式: ·关断 ·FLL 启用、内部参考时钟(FEI ) ·FLL 启用、外部参考时钟(FEE ) ·FLL 旁路、内部参考时钟(FBI ) ·FLL 旁路、内部参考时钟、低功耗(FBILP ) ·FLL 旁路、外部参考时钟(FBE ) ·FLL 旁路、外部参考时钟、低功耗(FBELP )

内部时钟源

内部时钟源 1、内部时钟源结构介绍 该单片机的内部时钟源模块(ICS,The internal clock source)是比较有特色的,除了一般单片机所具有的外部时钟配置(时钟或低成本晶体振荡器)、可编程内部时钟参考(32kHz)之外,还有一个锁频环(FLL, frequency-locked loop),锁频环的输入信号可以来自外部,也可以来自内部参考,锁频环的输出与外部时钟和内部参考时钟三者之一通过一个可编程分频器(BDIV , reduced bus divider)最终得到内部时钟源模块的最主要输出ICSOUT,总线时钟为ICSOUT的二分频。时钟源模块内部结构以及输出时钟的应用情况参考图1和图2。

对时钟源模块的控制与配置离不开特殊功能寄存器,需要用到的寄存器中的一些位(bits)在图中也已经标出来了,通过这些控制位的选择,时钟模块的输出可以来自外部、内部参考或者锁频环的输出。即使时钟源的输出不经过锁频环FLL,锁频环既可以使能,也可以关闭(省电),种种情况归纳起来,时钟源模块有7种工作模式: FEI:FLL engaged internal mode; FEE:FLL engaged external mode; FBI:FLL bypassed internal mode; FBILP:FLL bypassed internal low power mode; FBE:FLL bypassed external mode FBELP:FLL bypassed external low power mode stop: 这7种工作模式中,前两个字母FE或者FB表示最终ICSOUT是否来自于锁频环,FE表示是,而FB表示FLL被跳过去了,ICSOUT可能来自外部也可能来自内部参考,取决于第三个字母是I(内部)还是E(外部)。有的模式中包含LP表示低功耗,也就是带LP的模式下锁频环被禁止,此时可以给BDC模块供电的,来自于FLL二分频输出的ICSLCLK不再存在。 2、内部时钟源控制寄存器介绍 对内部时钟源的控制与配置是通过2个控制寄存器、一个内部参考时钟调节寄存器以及一个状态与控制寄存器来实现的,对这些控制位的定义建议参考上述内部时钟源结构图。 1 (ICSC1) 内部时钟源控制寄存器

时钟源及定时器计算方法

时钟源及定时器计算方法示例一.时钟源 Fin=8MHz ●时钟源定义 规则: Fpllo必须大于20MHZ且少于66MHZ Fpllo * 2s必须少于170MHZ Fin/p推荐为1MHZ 或大于,但小于2MHZ 例:设晶振工作频率fin=8MHz,要求产生主时钟频率MCLK==64MHz m = (MDIV + 8),p = (PDIV + 2),s = SDIV 由于Fpllo * 2s<170MHZ →2s <170MHz/64 MHz = 2.65 →s=1=SDIV Fin/p推荐为1MHZ 或大于,但小于2MHZ, 1MHz<=Fin/p<2M Fin /2M<=P< Fin/1M →4<=P<8 p = (PDIV + 2) →2<=PDIV<6

Fpllo = (m * Fin)/(p * 2s) 注:答案不唯一 ●SDIV=1 (0x01) PLLCON[1:0] 2位0~3 ●取PDIV=2 (0x02) PLLCON[9:4] 6位0~63 ●MDIV=?(0x38) PLLCON[19:12] 8位0~255 由 Fpllo=MCLK=( MDIV +8)*8M/( PDIV +2)*2SDIV =( MDIV +8)*8M/((2+2)*21)= 64MHz →( MDIV +8)*8M/8= 64MHz →MDIV +8=64 →MDIV=56 PLLCON:MDIV[19:12],PDIV[9:4],SDIV[1:0] 0x38 0x2 0x1 ●对PLLCON赋值方法一: PLLCON=0b0011 1000 0000 0010 0001或PLLCON=0x380201 ●对PLLCON赋值方法二: PLLCON= ((MDIV<<12)| (PDIV<<4)|( SDIV<<0)) 二.定时器定义 定时器输入时钟频率f in=MCLK/{预分频值+1}/{再分频值}= MCLK/{ prescaler +1}/{DIV},其中预分频值为0~255,再分频DIV为2,4,8,16,32 例:设系统输入主时钟频率为MCLK=64MHz,要求定时器Time0输出脉冲时间间隔T=5s,占空比为20%。 注:答案不唯一。 ●由定时器输出频率要求可知:f out=1/T=1/5=0.2Hz ●设取DIV= 32 Prescaler=199 Prescaler:0~255 ●由f in= MCLK/{ prescaler +1}/DIV=64MHz/200/32=10KHz 尽量保持整除 ●TCNTBn = f in / f out=10KHz/0.2=50K=50000 TCNTBn寄存器为16位:0~65535 ●占空比20%,可得TCMPBn= TCNTBn*20%=50000*20%=10000,即定时器从50000递 减计数至10000时(即TCMPBn= TCNTBn),Tout输出高电平 定时器配置及启动!

STM8的C语言编程(11)-- 切换时钟源

STM8的C语言编程(11)--切换时钟源 STM8单片机的时钟源非常丰富,芯片内部既有16MHZ的高速RC振荡器,也有128KHZ的低速RC振荡器,外部还可以接一个高速的晶体振荡器。在系统运行过程中,可以根据需要,自由地切换。单片机复位后,首先采用的是内部的高速RC振荡器,且分频系数为8,因此CPU的上电运行的时钟频率为2MHZ。切换时钟源,主要涉及到的寄存器有:主时钟切换寄存器CLK_SWR和切换控制寄存器CLK_SWCR。 主时钟切换寄存器的复位值为0xe1,表示切换到内部的高速RC振荡器上。当往该寄存器写入0xb4时,表示切换到外部的高速晶体振荡器上。 在实际切换过程中,应该先将切换控制寄存器中的SWEN(第1位)设置成1,然后设置CLK_SWCR的值,最后要判断切换控制寄存器中的SWIF标志是否切换成功。 下面的实验程序首先将主时钟源切换到外部的晶体振荡器上,振荡频率为8MH Z,然后,然后快速闪烁LED指示灯。接着,将主时钟源又切换到内部的振荡器上,振荡频率为2MHZ,然后再慢速闪烁LED指示灯。通过观察LED指示灯的闪烁频率,可以看到,同样的循环代码,由于主时钟源的改变的改变,闪烁频率和时间长短都发生了变化。 同样还是利用ST的开发工具,生成一个C语言程序的框架,然后修改其中的m ain.c,修改后的代码如下。 // 程序描述:通过切换CPU的主时钟源,来改变CPU的运行速度 #include "STM8S207C_S.h" // 函数功能:延时函数 // 输入参数:ms -- 要延时的毫秒数,这里假设CPU的主频为2MHZ // 输出参数:无 // 返回值:无 // 备注:无 void DelayMS(unsigned int ms) { unsigned char i; while(ms != 0) { for(i=0;i<250;i++) { }

国网电力通信【时钟源】题库

时钟源题库 一、选择题 1.描述同步网性能的三个重要指标是(B)。 A、漂动、抖动、位移 B、漂动、抖动、滑动 C、漂移、抖动、位移 D、漂动、振动、滑动 2.基准时钟一般采用(B)。 A、GPS B、铯原子钟 C、铷原子钟 D、晶体钟 3.基准主时钟(PRC),由G.811建议规范,频率准确度达到(A)。 A、1×10-11 B、1×10-10 C、1×10-9 D、1×10-8 4.在2.048kbit/s复帧结构中的(A)时隙作为传递SSM的信息通道。 A、TS0 B、TS1 C、TS16 D、TS30 5.在SDH中,SSM是通过MSOH中(A)字节来传递的。 A、S1 B、A1 C、B2 D、C2 6.如果没有稳定的基准时钟信号源,光同步传送网无法进行(C)传输指标的测量。 A、误码 B、抖动 C、漂移 D、保护切换 7.在SDH网络中传送定时要通过的接口种类有:2048kHz接口、2048kbit/s接口和(C)接口3种。 A、34Mbit/s B、8Mbit/s C、STM-N D、STM-0 8.通信网中,从时钟的正常工作状态不应包括(D)。 A、自由运行(Free Running) B、保持(Hold Over) C、锁定(Locked) D、跟踪(Trace) 9.在SDH网络中,其全程漂动总量不超过(B)微秒。 A、10 B、18 C、20 D、25 10.SDH同步网定时基准传输链上, SDH设备时钟总个数不能超过(C)个。 A、10 B、20 C、60 D、99 11.SDH同步网定时基准传输链上,在两个转接局SSU之间的SDH设备时钟数目不宜超过(B)个。 A、10 B、20 C、60 D、99 12.由于时钟内部操作而引起的基准时钟输出接口(2048kHz或2048kbit/s)相位不连续性都不应超过(D)。 A、1UI B、1/2UI C、1/4UI D、1/8UI 13.对输入定时信号的规定:当以电缆连接BITS输出至业务设备的同步输入时,BITS输出至业务设备输入间的传输衰减为:对2048kb/s信号在1024kHz频率点不应大于( );对2048kHz信号在2048kHz频率点不应大于( )。(B) A、5dB, 5dB B、6dB, 6dB C、7dB, 7dB D、8dB, 8Db 二、多项选择题 1.以下关于时钟源说法正确的是:(ABD)。 A、PRC、LPR都是一级基准时钟 B、PRC包括Cs原子钟 C、BITS只能配置Rb钟

MSP430之时钟源的选择

MSP430之时钟源的选择 学51的朋友刚转学MSP430时会感觉很多的不适应,这是理所当然的,因为MSP430的。 资源要比51丰富的多了,而且是16位。今天刚系统学完MSP430时钟源部分,在此写下,忘大家指正。 首先,MSP430不像51只有有一个外部晶振作为时钟源,MSP430又有3到4个时钟源!外部可接两个晶振,一个高频晶振XT2CLK(0.4M~16M),一个低平晶振LFXT1CLK(32768HZ).。内部有一个数字振荡器DCO。MSP430中规定了3种时钟信号:ACLK,MACLK,SMCLK。ACLK(辅助时钟信号),LFXT1CLK是该时钟信号的时钟源,ACLK主要用作一些低频模块。MACLK(主时钟信号),XT2CLK,LFXT1CLK,DCO都可以是该时钟信号的时钟源,MACLK主要给CPU和系统提供时钟信号。SMCLK(子时钟信号),XT2CLK,LFXT1CLK,DCO都可以是该时钟信号的时钟源,SMCLK主要用作一些低频模块。看到这里,看到有点乱了,别着急,慢慢理清思路。下面的图片帮大家理解一下 下面对与时钟源有关的寄存器进行分析 1:DCOCTL

DCOX(BIT7~BIT5):这三位与下面提到的RSELX共同来决定DCO的频率范围。RSELX选择的是大范围,DCOX选择的是小范围。例如RSELX先将范围限定在1000~2000,DCOX则决定1000~2000之间的某个范围。 MOD(BIT4~BIT0):这5位不重要,可以不管他。 2:BCSCTL1 XT2OFF(bit7):改为置1的话关闭高频晶振。 XTS(bit6):LFXT1CLK模式选择,置1的话选择外部接高频晶振,置0的话这接32768HZ的晶振。 DIVX(bit5~bit4):ACLk分频。ACLK可以经1/2/4/8/分频后供给相应模块。 RSELX:前面已经提到,与DCOX同来决定DCO的频率范围。 3:BCSCTL2 SELMX(BIT7~BIT6):MCLK时钟来源选择位。00:选择DCO作为MCLK的时钟源。01:选择DCO作为MCLK的时钟源。10:选择高频晶振作为MCLK的时钟源。11:选择低频晶振作为MCLK的时钟源。 DIVMX(BIT5~BIT4):MCLk分频. SELS(BIT3):SCLK时钟源选择位。0:选择DCO作为SCLK的时钟源.1:选择高频晶振作为SCLK的时钟源,若高频晶振不存在,则选择低频晶振作为SCLK的时钟源。 DIVSX:SCLK分频。 DCOR:该位不重要 4:BCSCTL3 XT2SX(BIT7~BIT6):高频晶振频率范围选择。 00:0.4M~1M.01:1M~3M.10:3~16M. LFXT1SX(BIT5~BIT4):低频晶振范围选择。 XCAPX:当XTS=0时,LFX1CLK选择的是低频模式时,需要用改为选择内部电容来帮助晶振起振。00:1pf01:6pf10:10pf11:12pf. 当XTS=1时,LFX1CLK选择高频模式,需要要外部接电容来起振,所以XCAPX必须置0.

系统时钟源的选择

/****************************************** ******************************************* ********************* * 文件名:iic.C * 功能:实验二 GPIO控制实验 * 该实验采用CC2530的I/O口(P1.0和P1.1)模拟IIC总线的SCL和SDA,然后通过IIC 总线形式控制GPIO扩展芯片 * PCA9554,最后通过扩展的IO来控制LED的亮灭。 * * 硬件连接:将OURS的CC2530RF模块插入到普通电池板或智能电池板上。 * * P1.0 ------ SCL * P1.1 ------ SDA * * 版本:V1.0 * 作者:WUXIANHAI * 日期:2011.1.18 * 奥尔斯电子主页:https://www.360docs.net/doc/f712713857.html, ******************************************* ******************************************* ************************/ #include "ioCC2530.h" #include "hal_mcu.h" #define SCL P1_0 //IIC时钟线#define SDA P1_1 //IIC数据线 //定义IO方向控制函数 #define IO_DIR_PORT_PIN(port, pin, dir) \ do { \ if (dir == IO_OUT) \ P##port##DIR |= (0x01<<(pin)); \ else \ P##port##DIR &= ~(0x01<<(pin)); \ }while(0) #define OSC_32KHZ 0x00 //使用外部32K晶体振荡器//时钟设置函数 #define HAL_BOARD_INIT() \ { \ uint16 i; \ \ SLEEPCMD &= ~OSC_PD; /* 开启 16MHz RC 和32MHz XOSC */ \ while (!(SLEEPSTA & XOSC_STB)); /* 等待 32MHz XOSC 稳定 */ \ asm("NOP"); \ for (i=0; i<504; i++) asm("NOP"); /* 延时63us*/ \ CLKCONCMD = (CLKCONCMD_32MHZ | OSC_32KHZ); /* 设置 32MHz XOSC 和 32K 时钟 */ \ while (CLKCONSTA != (CLKCONCMD_32MHZ | OSC_32KHZ)); /* 等待时钟生效*/ \ SLEEPCMD |= OSC_PD; /* 关闭 16MHz RC */ \ } #define IO_IN 0 //输入 #define IO_OUT 1 //输出 uint8 ack; //应答标志位 uint8 PCA9554ledstate = 0; //所有LED当前状 态 /****************************************** ************************************ * 函数名称:QWait * * 功能描述:1us的延时 * * 参数:无 * * 返回值:无 *******************************************

时钟源及定时器计算方法

Fin=8MHz ●时钟源定义 规则:Fpllo = (m * Fin)/(p * 2s) Fpllo必须大于20MHZ且少于66MHZ Fpllo * 2s必须少于170MHZ Fin/p推荐为1MHZ 或大于,但小于2MHZ 例1. 设晶振工作频率fin=8MHz,要求产生主时钟频率MCLK==64MHz 由于Fpllo * 2s<170MHZ ->2s <170MHz/64 MHz = 2.65 -> s=1=SDIV Fin/p推荐为1MHZ 或大于,但小于2MHZ, 1MHz<=Fin/p<2M Fin /2M<=P< Fin/1M -> 4<=P<8 p = (PDIV + 2) -> 2<=PDIV<4 Fpllo = (m * Fin)/(p * 2s) m = (MDIV + 8),p = (PDIV + 2),s = SDIV MDIV=56 (0x38) 0~255 PDIV=2 (0x02) 0~63 SDIV=1 (0x01) 0~3 验证: Fpllo=MCLK=( MDIV +8)*8M/( PDIV +2)*2SDIV =(56+8)*8M/((2+2)*21)= 64MHz PLLCON:MDIV[19:12],PDIV[9:4],SDIV[1:0] 0x38 0x3 0x1 PLLCON=0b0011 1000 0000 0010 0001=0x380201 代码: PLLCON|= ((MDIV<<12)| (PDIV<<4)|( SDIV<<0))

定时器定义 定时器输入时钟频率=MCLK/{预分频值+1}/{再分频值}= MCLK/{ prescaler +1}/{DIV} 其中预分频值为0~255 再分频DIV为2,4,8,16,32 例1.MCLK=64MHz,时间间隔T=5s 定时器输出频率fout=1/T=1/5=0.2Hz DIV= 32 Prescaler=199 Prescaler:0~255 Fin= MCLK/{ prescaler +1}/DIV 尽量保持整除 =64MHz/200/32=10KHz TCNTBn = Fin / fout=10KHz/0.2=50K=50000 TCNTBn:0~65535 ARM7的定时器配置及启动! 第一步:配置定时器配置寄存器0(TCFG0)以设置定时器的预分频值prescaler 第二步:配置定时器配置寄存器1(TCFG1)以设置定时器的再分频值DIV 第三步:设置定时器初值TCNTn,TCNTBn及比较寄存器TCMPn,TCMPBn 第四步:配置定时器控制寄存器TCON的定时器自动重载位,翻转位,手动更新位,及启动定时器位。注:启动定时器的同时应清除手动更新位。 第五步:如果要产生定时器输出,则应配置GPIO端口E为功能2, 第六步:若定时器要产生中断,则应将定时器中断屏蔽位使能

在STM32中,有五个时钟源

、HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 其中40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外, 实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。RTC的时钟源通过RTCSEL[1:0]来选择。 STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取,可以选择为1.5分频或者1分频,也就是,当需要使用USB 模块时,PLL必须使能,并且时钟频率配置为48MHz或72MHz。 另外,STM32还可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。 系统时钟SYSCLK,它是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为PLL输出、HSI或者HSE。系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、8、16、64、128、256、512分频。其中AHB分频器输出的时钟送给5大模块使用: ①、送给AHB总线、内核、内存和DMA使用的HCLK时钟。 ②、通过8分频后送给Cortex的系统定时器时钟。 ③、直接送给Cortex的空闲运行时钟FCLK。 ④、送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer)2、3、4倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2、3、4使用。 ⑤、送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer)1倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。 在以上的时钟输出中,有很多是带使能控制的,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。 需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2。 连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4。注意USB模块虽然需要一个单独的48MHz时钟信号,但它应该不是供USB模块工作的时钟,而只是提供给串行接口引擎(SIE)使用的时钟。USB模块工作的时钟应该是由APB1提供的。 连接在APB2(高速外设)上的设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。深圳专业STM32技术学习郭老师QQ754634522 使用HSE时钟,程序设置时钟参数流程: 1、将RCC寄存器重新设置为默认值 RCC_DeInit; 2、打开外部高速时钟晶振HSE RCC_HSEConfig(RCC_HSE_ON); 3、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();

gps 时间标准时钟源

西安时间同步和时钟同步gps 时间标准时钟源 产品概述 SYN4503型标准同步时钟接收GPS(全球定位系统)卫星信号和IRIG-B码信号,优先选择GPS信号,使用GPS定时信号对本机进行时间同步,产生交直流IRIG-B码信号、可编程脉冲信号、NTP网络授时,串行口时间信息和1PPS(秒信号)同步脉冲信号,是电力系统建立时间尺度、实现时间统一同步的实用电子仪器。 产品功能 1) GPS接收、B码接收自动二选一且优选接收GPS; 2) 输出B时间码-光纤直流B码5路(多模/单模可选),4路(或8路可选)B(DC)码电接口,4路B(AC)码; 3) 4个RS232串口; 4) 4路1PPS/1PPM可设置; 5) NTP网络授时功能; 6) GPS/北斗双时间源冗余系统; 7) 交流直流电源供电自适应,双电源供电。 产品特点 a)时间同步输出接口信号种类齐全,支持光纤或者电缆的连接; b)gps 时间高精密,全自动,无人值守,免维护; c)标准时钟源功耗小,可靠性高; d)时间同步可长期连续稳定工作。 技术指标 时间同步输出信号 IRIG—B002(直流DC)码 路数 5路

电平 光纤 物理接口 凤凰端子 同步精度 ≤±200ns IRIG—B002(直流DC)码路数 4路 电平 RS422 物理接口 凤凰端子 同步精度 ≤±200ns IRIG—B122(交流AC)码路数 4路 电平 600Ω平衡输出 物理接口 凤凰端子 同步精度 ≤10μs 串口输出 路数 2路 电平 RS232 物理接口 凤凰端子

脉冲输出 路数 4路 电平 空接点 频率 1PPS/1PPM可设置 NTP授时 路数 1路 物理接口 RJ45 授时精度 ≤10ms 输入信号 IRIG—B002(直流DC)码 路数 1路 电平 RS422 物理接口 凤凰端子 GPS接收机 通道 并行12路 定时精度 优于100ns 捕获时间 小于2分钟 标准时钟源供电电源 交流220V±10%,50Hz±5%(可选交直流双电源供电)

MSP430F5529时钟源

***************************************************************还有一个模块时钟源:MODOSC,产生MODCLK时钟源信号,一般只为闪存控制模块和ADC12模块提供服务。 该模块不被使用时自动关闭,任何模块对该时钟源提出使用要求时,MODOSC无需被使能即可响应该请求。430F5529中MODCLK为5MHZ。 *************************************************************** MSP430F5529有多个时钟源,而且很多模块其时钟源都是可以自由选择的。此外,由于一般情况下,系统功耗是和工作频率成正比的,因此有些时候通过选择较低频率的时钟源,在满足正常工作条件下,是可以有效降低功耗的。虽然函数库HAL_UCS.c/h,有完整的各个控制函数,但我觉得对于这一章还是对寄存器直接操作比较简单,因为函数太短、太多了。 3.1统一时钟系统(UCS)的简介 Unified Clock System,UCS。合理的配置时钟,可以达到平衡系统且降低功耗的目的。 MSPF5529时钟系统包含5个时钟源: ①LFXT1外部低频振荡源,32.768KHZ,可以用作FLL的参 照源; ②XT2外部高频振荡源,4MHZ; ③VLO(Internal very low)内部低耗低频振荡源,典型为10KHZ,精度一般; ④REFO内部低频参照源,32.768KHZ,常被用作锁相环FLL的基准频率,精度很高,不使 用时不消耗电源,其设置往往要参考LPM模式的的设置; ⑤DCO(Internal digitally-controlled)内部数字控制振荡源,一般通过FLL来设置; (很有用,很重要,之后会详细讲) 通常使用3种时钟信号,它们都来自于上述5个信号源: ①ACLK(Auxiliary clock)辅助时钟,其时钟源可由软件控制从XT1、REFOC、VLO、DCO、 DCOCLKDIV、XT2里面选取。其中DCOCLKDIV是由DCO经1、2、4、8、16或者32分频得到。注意,ACLK同样可以再次被1、2、4、8、16或者32分频。 ②MCLK(Master clock)主时钟,其特性与ACLK一模一样。 ③SMCLK(Subsystem master clock)子系统时钟,其特性与ACLK一模一样。 3.2 UCS的操作说明 开机上电时默认的时钟情况为(必须记清楚!!!!): ACLK:XT1(无效时,低频模式切换为REFO,其他情况切换为DCO) MCLK:DCOCLKDIV SMCLK:DCOCLKDIV 此外,FLL的参照源默认XT1; 如果连接XT1和XT2的引脚不进行PXSEL的设置,那么这两个时钟源都是无效的; REFOCLK、VLOCLK、DCOCLK默认状态下是可用的;

时钟源及定时器计算方法2

●时钟源选择 ●时钟源定义 例1. 设晶振工作频率fin=8MHz,要求产生主时钟频率MCLK==64MHz P 219页 PLLCON|= ((MDIV<<12)| (PDIV<<4)|( SDIV<<0)) ●定时器定义 定时器输入时钟频率=MCLK/{预分频值+1}/{再分频值}= MCLK/{ prescaler +1}/{DIV} 其中预分频值为0~255 再分频DIV为2,4,8,16,32 例1.MCLK=64MHz,时间间隔T=5s 定时器输出频率fout=1/T=1/5=0.2Hz DIV= 32 Prescaler=199 Prescaler:0~255 Fin= MCLK/{ prescaler +1}/DIV 尽量保持整除 =64MHz/200/32=10KHz TCNTBn = Fin / fout=10KHz/0.2=50K=50000 TCNTBn:0~65535 ARM7的定时器配置及启动! 第一步:配置定时器配置寄存器0(TCFG0)以设置定时器的预分频值prescaler 第二步:配置定时器配置寄存器1(TCFG1)以设置定时器的再分频值DIV 第三步:设置定时器初值TCNTn,TCNTBn及比较寄存器TCMPn,TCMPBn rTCNTB0 = 792; rTCMPB0 = 396; 第四步:配置定时器控制寄存器TCON的定时器自动重载位,翻转位,手动更新位,及启动定时器位。注:启动定时器的同时应清除手动更新位。 rTCON |= (1<<10)|(1<<9)|(1<<2)|(1<<1); // 手动更新 delay(10); rTCON &= ~((1<<9)|(1<<1)); // 自动加载 delay(10); rTCON |= (1<<11)|(1<<3)|(1<<8)|1; // 启动定时器,自动加载 第五步:如果要产生定时器输出,则应配置GPIO端口E为功能2, rPCONE |=0x200;// set GPE[9:8]=10 :TOUT1 第六步:若定时器要产生中断,则应将定时器中断屏蔽位使能 pISR_TIMER0=(unsigned)timer0_int; ClearPending(BIT_TIMER0); rINTMSK &=~(BIT_GLOBAL|BIT_TIMER0);

相关主题
相关文档
最新文档