最新MSP430G2553学习笔记数据手册.docx

上传人:b****9 文档编号:26148614 上传时间:2023-06-17 格式:DOCX 页数:57 大小:3.54MB
下载 相关 举报
最新MSP430G2553学习笔记数据手册.docx_第1页
第1页 / 共57页
最新MSP430G2553学习笔记数据手册.docx_第2页
第2页 / 共57页
最新MSP430G2553学习笔记数据手册.docx_第3页
第3页 / 共57页
最新MSP430G2553学习笔记数据手册.docx_第4页
第4页 / 共57页
最新MSP430G2553学习笔记数据手册.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

最新MSP430G2553学习笔记数据手册.docx

《最新MSP430G2553学习笔记数据手册.docx》由会员分享,可在线阅读,更多相关《最新MSP430G2553学习笔记数据手册.docx(57页珍藏版)》请在冰豆网上搜索。

最新MSP430G2553学习笔记数据手册.docx

最新MSP430G2553学习笔记数据手册

 

MSP430G2553学习笔记(数据手册)

MSP430G2553学习笔记(数据手册)

MSP430G2553性能参数(DIP-20)

工作电压范围:

1.8~3.6V。

5种低功耗模式。

16位的RISC结构,62.5ns指令周期。

超低功耗:

运行模式-230µA;

待机模式-0.5µA;

关闭模式-0.1µA;

可以在不到1µs的时间里超快速地从待机模式唤醒。

基本时钟模块配置:

具有四种校准频率并高达16MHz的内部频率;

内部超低功耗LF振荡器;

32.768KHz晶体;

外部数字时钟源。

两个16位Timer_A,分别具有三个捕获/比较寄存器。

用于模拟信号比较功能或者斜率模数(A/D)转换的片载比较器。

带内部基准、采样与保持以及自动扫描功能的10位200-ksps模数(A/D)转换器。

16KB闪存,512B的RAM。

16个I/O口。

注意:

MSP430G2553无P3口!

MSP430G2553的时钟

基本时钟系统的寄存器

DCOCTL-DCO控制寄存器

DCOx

DCO频率选择控制1

MODx

DCO频率校正选择,通常令MODx=0

注意:

在MSP430G2553上电复位后,默认RSEL=7,DCO=3,通过数据手册查得DCO频率大概在0.8~1.5MHz之间。

BCSCTL1-基本时钟控制寄存器1

XT2OFF

不用管,因为MSP430G2553内部没有XT2提供的HF时钟

XTS

不用管,默认复位后的0值即可

DIVAx

设置ACLK的分频数

00/1

01/2

10/4

11/8

RSELx

DCO频率选择控制2

BCSCTL2-基本时钟控制寄存器2

SELMx

MCLK的选择控制位

00DCOCLK

01DCOCLK

10LFXT1CLK或者VLOCLK

11LFXT1CLK或者VLOCLK

DIVMx

设置MCLK的分频数

00/1

01/2

10/4

11/8

SELS

SMCLK的选择控制位

0DCOCLK

1LFXT1CLK或者VLOCLK

DIVSx

设置SMCLK的分频数

00/1

01/2

10/4

11/8

DCOR

DCO直流发生电阻选择,此位一般设0

0内部电阻

1外部电阻

BCSCTL3-基本时钟控制寄存器3

XT2Sx

不用管

LFXT1Sx

00LFXT1选为32.768KHz晶振

01保留

10VLOCLK

11外部数字时钟源

XCAPx

LFXT1晶振谐振电容选择

001pF

016pF

1010pF

1112.5pF

msp430g2553.h中基本时钟系统的内容

/************************************************************

*BasicClockModule

************************************************************/

#define__MSP430_HAS_BC2__/*DefinitiontoshowthatModuleisavailable*/

SFR_8BIT(DCOCTL);/*DCOClockFrequencyControl*/

SFR_8BIT(BCSCTL1);/*BasicClockSystemControl1*/

SFR_8BIT(BCSCTL2);/*BasicClockSystemControl2*/

SFR_8BIT(BCSCTL3);/*BasicClockSystemControl3*/

#defineMOD0(0x01)/*ModulationBit0*/

#defineMOD1(0x02)/*ModulationBit1*/

#defineMOD2(0x04)/*ModulationBit2*/

#defineMOD3(0x08)/*ModulationBit3*/

#defineMOD4(0x10)/*ModulationBit4*/

#defineDCO0(0x20)/*DCOSelectBit0*/

#defineDCO1(0x40)/*DCOSelectBit1*/

#defineDCO2(0x80)/*DCOSelectBit2*/

#defineRSEL0(0x01)/*RangeSelectBit0*/

#defineRSEL1(0x02)/*RangeSelectBit1*/

#defineRSEL2(0x04)/*RangeSelectBit2*/

#defineRSEL3(0x08)/*RangeSelectBit3*/

#defineDIVA0(0x10)/*ACLKDivider0*/

#defineDIVA1(0x20)/*ACLKDivider1*/

#defineXTS(0x40)/*LFXTCLK0:

LowFreq./1:

HighFreq.*/

#defineXT2OFF(0x80)/*EnableXT2CLK*/

#defineDIVA_0(0x00)/*ACLKDivider0:

/1*/

#defineDIVA_1(0x10)/*ACLKDivider1:

/2*/

#defineDIVA_2(0x20)/*ACLKDivider2:

/4*/

#defineDIVA_3(0x30)/*ACLKDivider3:

/8*/

#defineDIVS0(0x02)/*SMCLKDivider0*/

#defineDIVS1(0x04)/*SMCLKDivider1*/

#defineSELS(0x08)/*SMCLKSourceSelect0:

DCOCLK/1:

XT2CLK/LFXTCLK*/

#defineDIVM0(0x10)/*MCLKDivider0*/

#defineDIVM1(0x20)/*MCLKDivider1*/

#defineSELM0(0x40)/*MCLKSourceSelect0*/

#defineSELM1(0x80)/*MCLKSourceSelect1*/

#defineDIVS_0(0x00)/*SMCLKDivider0:

/1*/

#defineDIVS_1(0x02)/*SMCLKDivider1:

/2*/

#defineDIVS_2(0x04)/*SMCLKDivider2:

/4*/

#defineDIVS_3(0x06)/*SMCLKDivider3:

/8*/

#defineDIVM_0(0x00)/*MCLKDivider0:

/1*/

#defineDIVM_1(0x10)/*MCLKDivider1:

/2*/

#defineDIVM_2(0x20)/*MCLKDivider2:

/4*/

#defineDIVM_3(0x30)/*MCLKDivider3:

/8*/

#defineSELM_0(0x00)/*MCLKSourceSelect0:

DCOCLK*/

#defineSELM_1(0x40)/*MCLKSourceSelect1:

DCOCLK*/

#defineSELM_2(0x80)/*MCLKSourceSelect2:

XT2CLK/LFXTCLK*/

#defineSELM_3(0xC0)/*MCLKSourceSelect3:

LFXTCLK*/

#defineLFXT1OF(0x01)/*Low/highFrequencyOscillatorFaultFlag*/

#defineXT2OF(0x02)/*Highfrequencyoscillator2faultflag*/

#defineXCAP0(0x04)/*XIN/XOUTCap0*/

#defineXCAP1(0x08)/*XIN/XOUTCap1*/

#defineLFXT1S0(0x10)/*Mode0forLFXT1(XTS=0)*/

#defineLFXT1S1(0x20)/*Mode1forLFXT1(XTS=0)*/

#defineXT2S0(0x40)/*Mode0forXT2*/

#defineXT2S1(0x80)/*Mode1forXT2*/

#defineXCAP_0(0x00)/*XIN/XOUTCap:

0pF*/

#defineXCAP_1(0x04)/*XIN/XOUTCap:

6pF*/

#defineXCAP_2(0x08)/*XIN/XOUTCap:

10pF*/

#defineXCAP_3(0x0C)/*XIN/XOUTCap:

12.5pF*/

#defineLFXT1S_0(0x00)/*Mode0forLFXT1:

Normaloperation*/

#defineLFXT1S_1(0x10)/*Mode1forLFXT1:

Reserved*/

#defineLFXT1S_2(0x20)/*Mode2forLFXT1:

VLO*/

#defineLFXT1S_3(0x30)/*Mode3forLFXT1:

Digitalinputsignal*/

#defineXT2S_0(0x00)/*Mode0forXT2:

0.4-1MHz*/

#defineXT2S_1(0x40)/*Mode1forXT2:

1-4MHz*/

#defineXT2S_2(0x80)/*Mode2forXT2:

2-16MHz*/

#defineXT2S_3(0xC0)/*Mode3forXT2:

Digitalinputsignal*/

基本时钟系统例程(DCO)

MSP430G2553在上电之后默认CPU执行程序的时钟MCLK来自于DCO时钟。

TI提供的LaunchPad上,P1.0和P1.6分别接了红色和绿色的LED灯,下面写一个程序让它们交替闪烁;之后我们来改变DCO的频率,进而使软延时时间变化,可以看到LED闪烁间隔有变化。

#include"msp430g2553.h"

voidmain(void)

{

WDTCTL=WDTPW+WDTHOLD;

P1DIR|=BIT0+BIT6;

while

(1)

{

P1OUT^=BIT0+BIT6;

__delay_cycles(100000);

}

}

这段程序采用430上电后默认的DCO频率,假设是1MHz的话,则延时100000个DCO提供的MCLK大概是0.1s左右。

下面一段程序,将DCOx设置为1,RSELx设置为1,通过数据手册查得DCO频率大概在0.06~0.14MHz之间,所以明显MCLK要慢得多了,因此LED闪烁时间延长。

 

#include"msp430g2553.h"

voidmain(void)

{

WDTCTL=WDTPW+WDTHOLD;

DCOCTL|=DCO0;

DCOCTL&=~(DCO1+DCO2);

BCSCTL1|=RSEL0;

BCSCTL1&=~(RSEL1+RSEL2+RSEL3);

P1DIR|=BIT0+BIT6;

while

(1)

{

P1OUT^=BIT0+BIT6;

__delay_cycles(100000);

}

}

 

MSP430G2553的I/O口

MSP430G2553共有2组数字I/O口:

P1和P2,每组各有8个引脚,每个引脚都能够响应中断,接受外部输入的上升沿或者下降中断请求。

所有I/O口均与单片机内部外设的特殊功能引脚复用,当我们选用I/O功能时,要作为通用I/O口来使用,这需要相应的寄存器来进行控制。

I/O头文件内容

/************************************************************

*DIGITALI/OPort1/2Pullup/PulldownResistors

************************************************************/

#define__MSP430_HAS_PORT1_R__/*DefinitiontoshowthatModuleisavailable*/

#define__MSP430_HAS_PORT2_R__/*DefinitiontoshowthatModuleisavailable*/

SFR_8BIT(P1IN);/*Port1Input*/

SFR_8BIT(P1OUT);/*Port1Output*/

SFR_8BIT(P1DIR);/*Port1Direction*/

SFR_8BIT(P1IFG);/*Port1InterruptFlag*/

SFR_8BIT(P1IES);/*Port1InterruptEdgeSelect*/

SFR_8BIT(P1IE);/*Port1InterruptEnable*/

SFR_8BIT(P1SEL);/*Port1Selection*/

SFR_8BIT(P1SEL2);/*Port1Selection2*/

SFR_8BIT(P1REN);/*Port1ResistorEnable*/

SFR_8BIT(P2IN);/*Port2Input*/

SFR_8BIT(P2OUT);/*Port2Output*/

SFR_8BIT(P2DIR);/*Port2Direction*/

SFR_8BIT(P2IFG);/*Port2InterruptFlag*/

SFR_8BIT(P2IES);/*Port2InterruptEdgeSelect*/

SFR_8BIT(P2IE);/*Port2InterruptEnable*/

SFR_8BIT(P2SEL);/*Port2Selection*/

SFR_8BIT(P2SEL2);/*Port2Selection2*/

SFR_8BIT(P2REN);/*Port2ResistorEnable*/

 

P1口

P1.0、P1.1、P1.2

 

 

P1.3

 

 

P1.4

 

 

P1.5、P1.6、P1.7

 

 

P2.0、P2.1、P2.2、P2.3、P2.4、P2.5

 

 

P2.6

 

 

P2.7

 

 

P1DIR用来选择I/O口是输入还是输出,0为输入,1为输出。

P1IN为输入寄存器,外部的电平输入状态可从此寄存器相应的位读取。

P1OUT为输出寄存器,向外输出的电平状态可从此寄存器送出。

P1SEL和P1SEL2为引脚功能选择。

 

MSP430G2553的Timer_A

Timer_A的工作原理

MSP430G2553内部有两个Timer_A模块,分别是Timer0_A3和Timer1_A3。

“3”表示每个Timer_A模块有3组“捕获/比较”寄存器。

Timer_A的主要特性包括:

(1)具有16位定时/计数功能,3种计数模式可选

(2)16位定时计数器时钟源可选

(3)可在CPU不介入的情况下,产生PWM波

(4)计数器溢出可产生中断

Timer_A又两部分组成:

主计数器和比较捕获模块。

其中主计数器如下图。

TAR为16主计数器的当前计数值,可对TAR赋初值。

主计数器计数时钟有4种来源,通过TASSELx来进行选择。

IDx可对输入时钟进行分频,TACLR为主计数器的清零控制位,MCx用来选择主计数器的4种计数模式,TAIFG为主计数器中断标志位。

■TASSELx:

00=外部管脚时钟输入

01=ACLK

10=SMCLK

11=TACLK取反

■IDx:

00=不分频

01=2分频

10=4分频

11=8分频

■TACLR:

0=不清零1=清零

Timer_A一共有三种计数模式,分别是:

增计数、连续增计数和增减计数。

增计数模式下,每个时钟周期计数值TAR加1,当TAR值超过TACCR0时,TAR自动清零,并且置位TAIFG标志位。

而后TAR从0值重新开始加1。

改变TACCR0的值即可改变定时周期。

连续增计数模式下,TAR从零加1,加到溢出值0xFFFF为止,之后自动归零重新开始。

通常我们利用该计数模式进行信号的捕捉,利用TACCRx寄存器存储捕获发生的时刻。

增减计数模式下,TAR的值从零加到TACRR0,而后再减到零,如此循环。

通常我们利用该计数模式产生对称、可加死区延时的PWM波。

Timer_A的另一重要组成部分,是捕获/比较模块,每个Timer_A均有3个捕获/比较模块,它的作用主要有两方面。

一是在比较模式下,每个捕获/比较模块都拿自身捕获/比较寄存器TACCRx的值与主计数器TAR的值比较,一旦相等,就自动的改变某个引脚的输出电平,一共有8种电平变化规律可选,这样可以在无CPU干预的情况下产生PWM波;二是在捕获模式下,从某个指定引脚的输入电平跳变可以触发捕获电路,并将此时主计数器的数值自动保存到相应的捕获值寄存器TACCRx中,这个过程纯硬件实现,无CPU干预,可以用来测量频率、占空比等。

捕获/比较模块结构图如下:

CAP用来切换选择捕获/比较工作模式;CCISx选择捕获输入源;CMx选择捕获触发沿状态,COV为捕获溢出标志位,如果前一次的捕获值未被读取而新的捕获已经产生,则溢出标志位会置位;捕获引脚的电平状态可以实时的通过CCI读出;由于捕获信号可能与时钟信号不同步,从而产生数字电路竞争,我们可以置位SCS进行同步捕获,假设实际信号的发生时刻值为N,那么同步捕捉到的值将为N+1,建议均采用同步捕捉。

在比较模式下,我们可以通过程序填写TACCRx的值,硬件会自动的将该值与TAR的值进行比较,一旦相等,即产生EQU信号,则通过输出引脚产生电平变化,其中OUTMODEx可以选择电平变化的8种方式,这样就可以产生不同种类的PWM波。

OUT可以控制引脚的输出电平(高、低的选择)。

已Timer0_A3为例,其捕获/比较引脚均与I/O口复用,具体复用引脚参加数据手册。

在比较输出模式0下,输出引脚的状态由OUT位控制。

其余7种模式下,引脚电平的变化如下图:

增计数模式下

连续增计数模式下

增减计数模式下

Timer_A头文件内容

/************************************************************

*Timer0_A3

************************************************************/

#define__MSP430_HAS_TA3__/*DefinitiontoshowthatModuleisavailable*/

SFR_16BIT(TA0IV);/*Timer0_A3InterruptVectorWord*/

SFR_16BIT(TA0CTL);/*Timer0_A3Control*/

SFR_16BIT(TA0CCTL0);/*Timer0_A3Capture/CompareControl0*/

SFR_16BIT(TA0CCTL1);/*Timer0_A3Capture/CompareControl1*/

SFR_16BIT(TA0CCTL2);/*Timer0_A3Capture/CompareControl2*/

SFR_16BIT(TA0R);/*Timer0_A3*/

SFR_16BIT(TA0CCR0);/*Timer0_A3Capture/Compare0*/

SFR_16BIT(TA0CCR1);/*Timer0_A3Capture/Compare1*/

SFR_16BIT(TA0CCR2);/*Timer0_A3Capture/Compare2*/

/*Alternateregisternames*/

#defineTAIVTA0IV/*TimerAInterruptVectorWord*/

#defineTACTLTA0CTL/*TimerAControl*/

#defineTACCTL0TA0CCTL0/*TimerACapture/CompareControl0*/

#defineTACCTL1TA0CCTL1/*TimerACapture/CompareControl1*/

#defineTACCTL2TA0CCTL2/*TimerACapture/CompareControl2*/

#defineTARTA0R/*TimerA*/

#defineTACCR0TA0CCR0/*TimerACapture/Compare0*/

#defineTACCR1TA0CCR1/*TimerACapture/Compare1*/

#defineTACCR2TA0CCR2/*TimerACapture/Compare2*/

#defineTAIV_TA0IV_/*TimerAInterruptVectorWord*/

#defineTACTL_TA0CTL_/*TimerAControl*/

#defineTACCTL0_TA0CCTL0_/*TimerACaptu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1