MSP430系列单片机原理与应用_第1页
MSP430系列单片机原理与应用_第2页
MSP430系列单片机原理与应用_第3页
MSP430系列单片机原理与应用_第4页
MSP430系列单片机原理与应用_第5页
已阅读5页,还剩206页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MSP430系列单片机

原理与应用赵来定参考书:

1.谢兴红等著,MSP430单片机根底与实践北京航空航天大学出版社,20212.沈建华等著,MSP430系列16位超低功耗单片机原理与应用清华大学出版社,2005一.MSP430单片机简介二.MSP430F149单片机结构三.MSP430单片机片内外围模块及应用一.MSP430单片机简介1.MSP430系列单片机历史MSP430系列是一个16位的、具有精简指令集的、超低功耗的混合型单片机,在1996年问世,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为众多单片机系列中一颗耀眼的新星。回忆MSP430系列单片机的开展过程,可以看出有这样三个阶段:开始阶段从1996年推出MSP430系列开始到2000年初,这个阶段首先推出有33X、32X、31X等几个系列,而后于2000年初又推出了llX、llX1系列。MSP430的33X、32X、31X等系列具有LCD驱动模块,对提高系统的集成度较有利。每一系列有ROM型(C)、OTP型(P)、和EPROM型(E)等芯片。EPROM型的价格昂贵,运行环境温度范围窄,主要用于样机升发。这也说明了这几个系列的升发模式,即:用户可以用EPROM型开发样机;用OTP型进行小批量生产;而ROM型适应大批量生产的产品。2000年推出了1lX/1lXl系列。这个系列采用20脚封装,内存容量、片上功能和I/O引脚数比较少,但是价格比较低廉。这个时期的MSP430已经显露出了它的特低功耗等的一系列技术特点,但也有不尽如人意之处。它的许多重要特性,如:片内串行通信接口、硬件乘法器、足够的I/O引脚等,只有33X系列才具备。33X系列价格较高,比较适合于较为复杂的应用系统。当用户设计需要更多考虑本钱时,33X并不一定是最适合的。而片内高精度A/D转换器又只有32X系列才有。寻找突破,引入Flash技术随着Flash技术的迅速开展,TI公司也将这一技术引入MSP430系列中。在2000年7月推出Fl3X/F14X系列,在2001年7月到2002年又相继推出F41X、F43X、F44X这些全部是Flash型单片机。F41X单片机是目前应用比较广的单片机,它有48个I/O口,96段LCD驱动。F43X、F44X系列是在13X、14X的根底上,增加了液晶驱动器,将驱动LCD的段数由3XX系列的最多120段增加到160段。并且相应地调整了显示存储器在存储区内的地址,为以后的开展拓展了空间。MSP430系列由于具有Flash存储器,在系统设计、开发调试及实际应用上都表现出较明显的优点。这是TI公司推出具有Flash型存储器及JTAG边界扫描技术的廉价开发工具MSP—FET430X110,将国际上先进的JTAG技术和Flash在线编程技术引入MSP430。这种以Flash技术与FET开发工具组合的开发方式,具有方便、廉价、实用等优点,给用户提供了一个较为理想的样机开发方式。另外,2001年TI公司又公布了BOOTSTRAP技术,利用它可在烧断熔丝以后只要几根线就可更改并运行内部的程序。这为系统软件的升级提供了又一方便的手段。BOOTSTRAP具有很高的保密性,口令可到达32个字节的长度。蓬勃开展阶段在前一阶段,引进新技术和内部进行调整之后,为MSP430的功能扩展打下了良好的根底。于是TI公司在2002年底和2003年期间又陆续推出了F15X和F16X系列的产品。在这一新的系列中,有了两个方面的开展。一是从存储器方面来说,将RAM容量大大增加,如F16l1的RAM容量增加到了l0KB。这样一来,希望将实时操作系统(RTOS)引入MSP430的,就不会因RAM不够而发愁了。二是从外围模块来说,增加了I2C、DMA、DAC12和SVS等模块。在2003年中,TI公司还推出了专门用于电量计量的MSP430FE42X和用于水表、气表、热表上的具有无磁传感模块的MSP430FW42X单片机。我们相信由于MSP430的开放性的根本架构和新技术的应用,新的MSP430的产品品种必将会不断出现。MSP430系列单片机的迅速开展和应用范围的不断扩大,主要取决于以下的特点。

a.强大的处理能力:MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的存放器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在8MHz晶体驱动下指令周期为125ns。这些特点保证了可编制出高效率的源程序。2、MSP430单片机的特点b.在运算速度方面,MSP430系列单片机能在8MHz晶体的驱动下,实现125ns的指令周期。16位的数据宽度、125ns的指令周期以及多功能的硬件乘法器(能实现乘加)相配合,能实现数字信号处理的某些算法(如FFT等)。c.MSP430系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。当系统处于省电的备用状态时,用中断请求将它唤醒只用6us。d.超低功耗MSP430单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。首先,MSP430系列单片机的电源电压采用的是电压。因而可使其在lMHz的时钟条件下运行时,芯片的电流会在200~400uA左右,时钟关断模式的最低功耗只有0.1uA。其次,独特的时钟系统设计。在MSP430系列中有两个不同的系统时钟系统:根本时钟系统和锁频环(FLL和FLL+)时钟系统或DCO数字振荡器时钟系统。有的使用一个晶体振荡器(32768Hz),有的使用两个晶体振荡器)。由系统时钟系统产生CP[J和各功能所需的时钟。并且这些时钟可以在指令的控制下,翻开和关闭,从而实现对总体功耗的控制。由于系统运行时翻开的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPMO~LPM4)。在等待方式下,耗电为,在节电方式下,最低可达。e.系统工作稳定上电复位后,首先由DCOCLK启动CPU,以保证程序从正确的位置开始执行,保证晶体振荡器有足够的起振及稳定时间。然后软件可设置适当的存放器的控制位来确定最后的系统时钟频率。如果晶体振荡器在用做CPU时钟MCLK时发生故障,DCO会自动启动,以保证系统正常工作;如果程序跑飞,可用看门狗将其复位。f.丰富的片上外围模块MSP430系列单片机的各成员都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A(TimerA)、定时器B(TimerB)、串口0、1(USART0、1)、硬件乘法器、液晶驱动器、l0位/l2位ADC、I2C、总线直接数据存取(DMA)、端口0(P0)、端口1~6(P1~P6)、根本定时器(BasicTimer)等的一些外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出A/D转换器:16位定时器(Timer_A和Timer_B)具有捕获/比较功能,大量的捕获/比较存放器,可用于事件计数、时序发生、PWM等;有的器件更具有可实现异步、同步及多址访问串行通信接U可方便的实现多机通信等应用:具有较多的I/O端口,最多达6*8条I/O口线:PO、P1、P2端口能够接收外部上升沿或下降沿的中断输入;12/14位硬件A/D转换器有较高的转换速率,最高可达200kbps,能够满足大多数数据采集应用:能直接驱动液晶多达160段:实现两路的12位D/A转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用直接数据传输(DMA)模块。MSP430系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。g.方便高效的开发环境目前MSP430系列有OPT型、FLASH型和ROM型三种类型的器件,这些器件的开发手段不同。对于OPT型和ROM型的器件是使用仿真器开发成功之后在烧写或掩膜芯片;对于FLASH型那么有十分方便的开发调试环境,因为器件片内有JTAG调试接口,还有可电擦写的FLASH存储器,因此采用先下载程序到FLASH内,再在器件内通过软件控制程序的运行,由JTAG接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台PC机和一个JTAG调试器,而不需要仿真器和编程器。开发语言有汇编语言和C语言。MSP430单片机目前主要以FLASH型为主。h.适应工业级运行环境MSP430系列器件均为工业级的,运行环境温度为一40~+85摄氏度,所设计的产品适合用于工业环境下。我国的多数读者对89C51系列的单片机是很熟悉的,为了加深对MSP430系列单片机的认识,我们不妨将两者进行一下比较。首先,89C51单片机是8位单片机。其指令是采用的被称为“CISC〞的复杂指令集,共具有111条指令。而MSP430单片机是16位的单片机,采用了精简指令集(RISC)结构,只有简洁的27条指令,大量的指令那么是模拟指令,众多的存放器以及片内数据存储器都可参加多种运算。这些内核指令均为单周期指令,功能强,运行的速度快。3、MSP430系列与89C5l系列的比较再者,89C51系列单片机由于其内部总线是8位的,其内部功能模块根本上都是8位的虽然经过各种努力其内部功能模块有了显著增加,但是受其结构本身的限制很大,尤其模拟功能部件的增加更显困难。MSP430系列其根本架构是16位的,同时在其内部的数据总线经过转换还存在8位的总线,在加上本身就是混合型的结构,因而对它这样的开放型的架构来说,无论扩展8位的功能模块,还是16位的功能模块,即使扩展模/数转换或数/模转换这类的功能模块也是很方便的。这也就是为什么MSP430系列产品和其中功能部件迅速增加的原因。最后,就是在开发工具上面。对于89C51来说,由于它是最早进入中国的单片机,人们对它在熟悉不过了,再加上我国各方人士的努力,创造了不少适合我们使用的开发工具。但是如何实现在线编程还是一个很大的问题。对于MSP430系列而言,由于引进了Flash型程序存储器和JTAG技术,不仅使丌发工具变得简便,而且价格也相对低廉,并且还可以实现在线编程。其次,89C5l单片机本身的电源电压是5伏,有两种低功耗方式:待机方式和掉电方式。正常情况下消耗的电流为24mA,在掉电状态下,其耗电电流仍为3mA;即使在掉电方式下,电源电压可以下降到2V,但是为了保存内部RAM中的数据,还需要提供约50uA的电流。而MSP430系列单片机在低功耗方而的优越之处,那么是89C5l系列不可比较的。正因为如此,MSP430更适合应用于使用电池供电的仪器、仪表类产品中。4.MSP430系列单片机命名规那么端口较容易损坏。外部输入中断优先级顺序不能编程。不能采用过多的浮点运算(所有处理器的特点)。5、MSP430单片机的其它特点

二.MSP430F149单片机结构MSP430X14X系列

MSP430CPU的16个存放器简写功能

R0程序计数器PC

R1堆栈指针SP,指向堆栈的栈顶

R2状态寄存器SR/常数发生器CG1

R3常数发生器CG2

R4通用寄存器R4………

R15通用寄存器R15状态存放器SR/R2/常数发生器1状态标志:控制标志

C:进位标志GIE:中断标志位Z:零标志CPUOFF:CPU控制位N:负标志OscOFF:晶振控制位V:溢出标志SCG0,SCG1:时钟控制位

MSP430存储器结构和地址空间

MSP430的低功耗模式MSP430的低功耗模式

MSP430的低功耗模式系统响应中断的过程

硬件自动中断效劳执行中断处理子程序执行RETI指令〔中断返回〕PC入栈SR入栈中断向量赋给PCGIT、CPUOFF、OSCOFF和SCG1去除IFG标志位去除〔单源中断标志〕SR出栈〔恢复原来的标志〕PC出栈三.MSP430单片机片内外围模块1.MSP430时钟模块2.MSP430的端口3.定时器4.USART模块5.FLASH存储器模块6.A/D及D/A7.比较器A8.SPI9.I2C10.MSP430液晶驱动模块11.DMA控制器1.MSP430时钟模块高速晶体振荡器低速晶体振荡器数字控制振荡器DCO锁频环FLL以及锁频环增强版本FLL+

MSP430X1XX时钟模块

时钟输入源:LFXT1CLK低频时钟源

XT2CLK高频时钟源DCOCL数字控制RC振荡器

时钟输出信号ACLK辅助时钟MCLK主系统时钟SMCLK子系统时钟慢速外设CPU和系统快速外设振荡器控制逻辑LFXT1振荡器控制逻辑XT2振荡器控制逻辑DCO振荡器控制逻辑DCO频率的调节

DCO频率的调节

DCO频率的调节

时钟模块存放器1-----------DCOCTL时钟模块存放器2-----------BCSCTL1时钟模块存放器3-----------BCSCTL2时钟模块存放器4-----------IE1时钟模块存放器5-----------IFG1根底时钟模块工作方式和相关存放器设置例1设MCLK=XT2,SMCLK=DCOCLK,将MCLK由输出。〔MSP430X14X中引脚和MCLK复用〕。实现上述功能的程序如下:#include<msp430x14x.h>voidmain(void){unsignedinti;WDTCTL=WDTPW+WDTHOLD;//停止看门狗P5DIR|=0x10;//P5.4输出P5SEL|=0x10;//P5.4用作MCLK输出BCSCTL1&=~XT2OFF;//XT2有效do{IFG1&=~OFIFG;//去除振荡器失效标志for(i=0xFF;i>0;i--);//稳定时间}while((IFG1&OFIFG)!=0);//如果振荡器失效标志存在BCSCTL2|=SELM1;//MCLK=XT2for(;;);}例:voidclock_set(void){IFG2=0;IFG1=0;_DINT();_BIC_SR(OSCOFF);BCSCTL1&=~XTOFF;//LFXT2关闭

BCSCTL1|=RSEL1+RSEL0+XTS;BCSCTL1&=~RSEL2;waiting(6000);IFG1&=~OFIFG;BCSCTL2|=SELM1+SELM0;waiting(500);}MSP430F4XX系列时钟模块

FLL+模块应用举例

例1设:ACLK=LFXT1=32768Hz,令MCLK=SMCLK=DCOCLK=(n+1)×ACLK,并将MCLK和ACLK分别通过和输出。程序代码如下#include"msp430x44x.h"voidmain(void){WDTCTL=WDTPW+WDTHOLD;//停止看门狗SCFI0|=FN_2;//设置锁相环频率调整范围FLL_CTL0=XCAP18PF;//设置锁相环频率控制存放器SCFQCTL=74;//(74+1)×P1DIR=0x22;//P1.1&P1.5输出输出MCLK&ACLKwhile(1);}

内部DCO=,,P1.5-->ACLK=32khz低功耗使用内部时钟发生器〔DCO〕无需外接任何元件选择外接晶体或陶瓷谐振器,可以获得最低频率和功耗采用外部时钟信号源瞬间响应特性

为了充分利用CPU低功耗性能,可以让CPU工作于突发状态。在通常情况下,根据需要使用软件将CPU设定到某一种低功耗工作模式下,在需要时使用中断将CPU从休眠状态中唤醒,完成工作之后又可以进入相应的休眠状态。

例:系统初始化完毕之后工作于低功耗模式0,中断事件触发到活动模式,中断处理结束后进入到低功耗模式3。;主程序…..;初始化操作开始……;……;初始化完毕BIS#GIE+CPUOFF,SR;主程序中设置低功耗模式0;…...;程序在这里停止;;中断子程序……;中断处理开始…………;中断处理结束BIS#GIE+CPUOFF+SCG1+SCG0,0〔SP〕;设置SR为低功耗模式3RETI;中断返回;系统进入低功耗模式3。……低功耗0转变为低功耗3;主程序…..;初始化操作开始……;……;初始化完毕BIS#GIE+CPUOFF,SR;主程序中设置低功耗模式0L1操作1L2操作2……;;中断子程序……;中断处理开始…………;中断处理结束BIC#CPUOFF,0〔SP〕;设置SR为活动模式RETI;中断返回,系统进入活动模式。低功耗到活动状态转换低功耗原那么一般的低功耗原那么:

设计外设时的常规原那么:

最大化LPM3的时间,用32KHz晶振作为ACLK时钟,DCO用于CPU激活后的突发短暂运行用接口模块代替软件驱动功能。用中断控制程序运行用可计算的分支代替标志位测试产生的分支用快速查表代替冗长的软件计算在冗长的软件计算中使用单周期的CPU存放器防止频繁的子程序和函数调用尽可能直接用电池供电将不用的输入端连接到VSSJTAG端口TMS、TCK和TDI不要连接到VSSCMOS输入端不能有浮空节点,将所有输入端接适当的电平不管对于内核还是对于各外围模块,选择尽可能低的运行频率,如果不影响功能应设计自动关机2.MSP430的端口类型丰富

功能丰富

存放器丰富

P1,P2,P3,P4,P5,P6,S和COM

I/O中断能力其他片内外设功能驱动液晶P1与P2各有7个存放器P3、P4、P5、P6有四个存放器不能使用不存在的资源,使用端口的时候要和具体的器件相关******************************************/#include<msp430x44x.h>/******************************************/voidmain(void){unsignedlongtmp;

WDTCTL=WDTHOLD+WDTPW;//关闭看门狗

P5OUT=0x02;//设置输出为1

while(1){//循环

P5DIR=0x02;//使能为输出

P5OUT^=0x02;//对输出置反

for(tmp=0;tmp<67500;tmp++);//延时}

}端口数据输出特性

低电平输出特性

高电平输出特性

3.定时器看门狗定时器根本定时器定时器A定时器B看门狗定时器写:5AH读:69HWDTCNT不能直接通过软件存取,必须通过看门狗定时器的控制存放器WDTCTL来控制看门狗定时器启、停控制看门狗模式定时器模式看门狗定时器看门狗定时器看门狗定时器看门狗定时器看门狗定时器应用举例#include<msp430x14x.h>voidmain(void){WDTCTL=WDT_MDLY_32;//定时周期为32msIE1|=WDTIE;//使能WDT中断输出_EINT();//系统中断允许for(;;){_BIS_SR(CPUOFF);//进入LPM0_NOP();}}//看门狗中断效劳子程序#pragmavector=WDT_VECTOR__interruptvoidwatchdog_timer(void){取反}中断允许WDTIE位于IE1.0,初始状态为复位

两种中断,两个级别,两种处理/***********************************************************文件名称:**文件说明:*程序用于对看门狗的两种工作模式进行测试*当setWDT〔0〕时,程序测试看门狗的看门狗模式*当setWDT〔1〕时,程序测试看门狗的定时器模式*************************************************************/#include<msp430x44x.h>/************************************************************设置看门狗的两种模式*在系统加电后,默认的子系统频率是1M,设置WDT延迟为250ms*那么系统执行0x1ffff条指令后系统如果没有重新设置WDT,*WDT将导致系统复位*************************************************************/voidsetWDT(intmode){unsignedinttmp;if(mode==1){//定时器模式

WDTCTL=WDT_ADLY_250;//250ms中断间隔

IE1|=WDTIE;//使能WDT中断

P5DIR|=0x02;//P5.1outputmode_EINT();//开中断}elseif(mode==0){//看门狗模式

WDTCTL=WDT_ARST_250;//设置看门狗时间间隔为250ms//在系统加电后,默认子系统时钟频率是1Mfor(tmp=0x7fff;tmp>0;tmp--);//延迟

P5DIR|=0x02;//P5.1outputmodeP5OUT|=0x02;//lightLED4for(tmp=0x7fff;tmp>0;tmp--);//延迟,执行一次tmp--至少要用2个指令}}/***********************************************************函数说明:*WDT中断函数*************************************************************/#pragmavector=WDT_VECTOR__interruptvoidWDT_Interrupt(void){P5OUT^=0x02;}/************************************************************main()函数*************************************************************/voidmain(void){

setWDT(0);//设置程序运行在看门狗模式}根本定时器根本定时器定时器A结构定时器A功能模块计数器局部:输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4或8分频作为计数频率,Timer_A可以通过选择4种工作模式灵活的完成定时/计数功能捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O端口处理事务的能力和速度。不同的MSP430单片机,Timer_A模块中所含有的捕获/比较器的数量不一样,每个捕获/比较器的结构完全相同,输入和输出都决定于各自所带的控制存放器的控制字,捕获/比较器相互之间工作完全独立。输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号。支持PWM全部关于定时器及其操作的控制位都包含在定时器控制存放器TACTL中TAR16位计数器该单元就是执行计数的单元,是计数器的主体Timer_A有多个捕获/比较模块,每个模块都有自己的控制字CCTLxCCRx捕获/比较存放器在捕获/比较模块中,可读可写。TAIV保存中断向量定时器计数模式

停止模式停止模式用于定时器暂停,并不发生复位,所有存放器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前,Timer_A工作于增/减计数模式并且处于下降计数方向,停止模式后,Timer_仍然工作于增/减计数模式,从暂停前的状态开始继续沿着下降方向开始计数。如果不能这样,那么可通过TACTL中的CLR控制位来去除定时器的方向记忆特性。增计数模式捕获/比较存放器CCR0用作Timer_A增计数模式的周期存放器,因为CCR0为16位存放器,所以该模式适用于定时周期小于65536的连续计数情况。计数器TAR可以增计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。增计数模式的计数过程增计数模式的中断标志位设置

改变CCR0值重置计数周期-增计数方式

新周期大于旧周期的响应

新周期小于旧周期的响应

连续计数模式

在需要65536个时钟周期的定时应用场合常用连续计数模式。定时器从当前值计数到0FFFFH后,又从0开始重新计数

计数器的计数过程

标志位设置

连续计数模式的典型应用

产生多个独立的时序信号:利用捕获比较存放器捕获各种其他外部事件发生的定时器数据产生多个定时信号:通过中断处理程序在相应的比较存放器CCRx上加上一个时间差来实现。这个时间差是当前时刻〔既相应的CCRx中的值〕到下一次中断发生时刻所经历的时间增/减计数模式

需要对称波形的情况经常可以使用增/减计数模式,该模式下,定时器先增计数到CCR0的值,然后反向减计数到0。计数周期仍由CCR0定义,它是CCR0计数器数值的2倍。

计数器的计数过程

标志位设置

设:ACLK=TACLK=LFXT1=32768Hz,MCLK=SMCLK=DCO=32×,要求从输出一个方波。例如程序代码如下:#include<msp430x44x.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;TACTL=TASSEL0+TACLR;//ACLK,去除TARCCTL0=CCIE;CCR0=1000;//方波频率:P5DIR|=0x02;TACTL|=MC0;//Timer_a增计数模式_EINT();for(;;){_BIS_SR(LPM3_bits);//进入LPM3_NOP();}}//TimerA0中断效劳程序#pragmavector=TIMERA0_VECTOR__interruptvoidTimer_A(void){P5OUT^=0x02;//取反}CCTLx捕获/比较控制存放器该存放器在POR信号后全部复位,但在PUC信号后不受影响。CAPTMOD1~0选择捕获模式

CCIS1~0捕获模式下选择捕获事件输入源

SCS选择捕获信号与定时时钟同步、异步关系

CAP选择捕获模式还是比较模式OUTMODx选择输出模式

CCIEx捕获/比较模块中断允许位CCIx捕获/比较模块的输入信号COV捕获溢出标志

CCIFGx捕获比较中断标志OUT输出信号

SCCIx比较相等信号EQUx将选中的捕获\比较输入信号CCIx(CCIxA,CCIxB,Vcc和GND)进行锁存,然后可由SCCIx读出。捕获/比较模块捕获模式

当CCTLx中的CAPx=1,该模块工作在捕获模式。这时如果在选定的引脚上发生设定的脉冲触发沿〔上升沿、下降沿或任意跳变〕,那么TAR中的值将写入到CCRx中。每个捕获\比较存放器能被软件用于时间标记。可用于各种目的当捕获完成后,中断标志位CCIFGx被置位。

测量软件程序所用时间

测量硬件事件之间的时间

测量系统频率

定时器A中断CCR0中断CCR1~CCRx和定时器中断

输出单元每个捕获/比较模块包含一个输出单元,用于产生输出信号输出单元的结构

输出单元时序

输出模式输出模式0输出模式:输出信号OUTx由每个捕获/比较模块的控制存放器CCTLx中的OUTx位定义,并在写入该存放器后立即更新。最终位OUTx直通。

输出模式1 置位模式:输出信号在TAR等于CCRx时置位,并保持置位到定时器复位或选择另一种输出模式为止。

输出模式2 PWM翻转/复位模式:输出在TAR的值等于CCRx时翻转,当TAR的值等于CCR0时复位。输出模式3 PWM置位/复位模式:输出在TAR的值等于CCRx时置位,当TAR的值等于CCR0时复位。输出模式输出模式4 翻转模式:输出电平在TAR的值等于CCRx时翻转,输出周期是定时器周期的2倍。

输出模式5 复位模式:输出在TAR的值等于CCRx时复位,并保持低电平直到选择另一种输出模式。

输出模式6 PWM翻转/置位模式:输出电平在TAR的值等于CCRx时翻转,当TAR值等于CCR0时置位。

输出模式7 PWM复位/置位模式:输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。

增计数模式输出实例连续计数模式下的输出波形

增/减计数模式下的输出实例

TIMER_A应用--实现异步串行通信Timer_A具有实现异步串行通信的一些特征捕获功能可以捕捉选定输入引脚的状态的变化,它可以选择捕捉上升沿、下降沿、前后沿。如果捕捉到了相应的变化,那么定时器计数值将被复制到捕获比较存放器CCRx中,并会产生相应的中断。在串行通信中正是利用捕获功能的特点来捕捉起始位的信息。比较功能是借助比较器不断地将CCRx中的设定值与定时器中的计数值相比较,当二者相等时就产生中断,并产生设定的输出,利用比较功能可以获得精确的时间间隔,利用该特性可以构造一个精确的波特率发生器,为串行通信提供时间基准。能够自动检测起始位

可以硬件方式产生波特率,范围从75~115200波特

硬件锁存接收和发送的数据

全双工方式

TIMER_A应用--实现异步串行通信TIMER_A应用--实现异步串行通信Timer_A实现PWM

PWM信号示意

Timer_A产生PWM

Timer_A实现PWM举例

例:设ACLK=TACLK=LFXT1=32768,MCLK=SMCLK=DCOCLK=32×,利用Timer_A输出周期为ms、占空比分别为75%和25%的PWM矩形波:#include<msp430x44x.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;FLL_CTL0|=XCAP14PF;TACTL=TASSEL0+TACLR;//ACLK,去除TARCCR0=512-1;//PWM周期CCTL1=OUTMOD_7;CCR1=384;//占空比CCTL2=OUTMOD_7;CCR2=128;//占空比P1DIR|=0x04;//P1.2输出P1SEL|=0x04;//P1.2TA1P2DIR|=0x01;//P2.0输出P2SEL|=0x01;//P2.0TA2TACTL|=MC0;//Timer_A增计数模式for(;;){_BIS_SR(LPM3_bits);//进入LPM3_NOP();}}PWM信号调整PWM信号占空比

PWM信号经滤波输出

TIMER_BTimer_B和Timer_A共同的特征

4种工作模式具有可选,可配置的计数器输入时钟源有多个独立可配置捕获/比较模块有多个具有8种输出模式的可配置输出单元DMA使能中断功能强大,中断可能源自于计数器的溢出,也可能源自于各捕获/比较模块上发生的捕获事件或比较事件。Timer_B与Timer_A不同之处

Timer_B计数长度为8位,10位,12位和16位可编程,而Timer_A的计数长度固定为16位。Timer_B中没有实现Timer_A中的SCCI存放器位的功能。Timer_B在比较模式下的捕获/比较存放器功能与Timer_A不同,增加了比较锁存器有些型号芯片中的Timer_B输出实现了高阻输出比较模式的原理稍有不同:在Timer_A中,CCRx存放器中保存与TAR相比较的数据;而在Timer_B中,CCRx存放器中保存的是要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx送到与之相对应的锁存器之后,由锁存器与定时器TBR相比较。从捕获/比较存放器向比较锁存器传输数据的时机也是可以编程的,可以是在写入捕获/比较存放器后立即传输,也可以是由一个定时事件来触发。Timer_B支持多重的、同步的定时功能;多重的捕获/比较功能;多重的波形输出功能〔比方PWM信号〕。而且,通过比照较数据的两级缓冲,可以实现多个PWM信号周期的同步更新4.USART模块结构

4.USART模块结构

UART模块结构异步异步多机通信模式Whentwodevicescommunicateasynchronously,theidle-lineformatisusedfortheprotocol.Whenthreeormoredevicescommunicate,theUSARTsupportstheidle-lineandaddress-bitmultiprocessorcommunicationformats.线路空闲多机模式地址位多机模式串行操作自动错误检测

FE标志帧错误:当一个接收字符的停止位为0并被装入接收缓存,接收的为一个错误的帧,那么帧错标志被设置成1,即使在多停止位模式时也只检测第一个停止位。同样,丧失停止位意味着从起始位开始的同步特性被丧失,也是一个错误帧。在同步的4线模式时,因总线冲突使有效主机停止,并在STE引脚信号出现下降沿时使FE位设置为1PE奇偶校验错误:当接收字符中1的个数与它的校验位不相符,并被装入接收缓存时,发生校验错,设置PE为1OE溢出错误标志:当一个字符写入接收缓存URXBUF时,前一个字符还没有被读出,这时前一个字符因被覆盖而丧失,发生溢出〔同步与异步情况相同〕BRK打断检测标志:当发生一次打断同时URXEIE置位时,该位被设置为1,表示接收过程被打断过。RXD线路从丧失的第一个停止位开始连续出现至少10位低电平被识别为打断波特率的产生

Note:InitializingorRe-ConfiguringtheUSARTModuleTherequiredUSARTinitialization/re-configurationprocessis:1)SetSWRST(BIS.B#SWRST,&UxCTL)2)InitializeallUSARTregisterswithSWRST=1(includingUxCTL)3)EnableUSARTmoduleviatheMEx

SFRs(URXExand/orUTXEx)4)ClearSWRSTviasoftware(BIC.B#SWRST,&UxCTL)5)Enableinterrupts(optional)viatheIEx

SFRs(URXIExand/orUTXIEx)FailuretofollowthisprocessmayresultinunpredictableUSARTbehavior.UCTL0|=SWRST;UCTL0|=CHAR;//8-bit字符UTCTL0=SSEL0+SSEL1;//UCLK=SMCLKUBR00=0xa0;//在4MHz下进行9600波特率通信UBR10=0x01;//UMCTL0=0x5e;//调整存放器(0.67*8=5.4)UCTL0&=~SWRST;ME1|=(UTXE0+URXE0);//使能USART0TXD/RXDIE1|=URXIE0;IFG1=0x00;P2SEL|=0x30;//P2.4,P2.5=USART0TXD/RXDP2DIR|=0x10;5.FLASH存储器模块编程可以使用位、字节和字操作

可以通过JTAG、BSL和ISP进行编程

V工作电压,V编程电压

数据保持时间从10年到100年不等

可编程次数从100到100,000次

60K空间编程时间<5秒

保密熔丝烧断后不可恢复,不能再对JTAG进行任何访问。

FLASH编程/擦除时间由内部硬件控制,无需任何软件干预

FLASH存储器模块主要特点编程可以使用位、字节和字操作

可以通过JTAG、BSL和ISP进行编程

V工作电压,V编程电压

数据保持时间从10年到100年不等

可编程次数从100到100,000次

60K空间编程时间<5秒

保密熔丝烧断后不可恢复,不能再对JTAG进行任何访问。

FLASH编程/擦除时间由内部硬件控制,无需任何软件干预

局部容量的FLASH段与地址的对应关系ProgrammingFlashMemoryviatheBootstraploader(BSL)EveryMSP430flashdevicecontainsabootstraploader.TheBSLenablesuserstoreadorprogramtheflashmemoryorRAMusingaUARTserialinterface.AccesstotheMSP430flashmemoryviatheBSLisprotectedbya256-bit,user-definedpassword.ProgrammingFlashMemoryviaaCustomSolutionProgrammingFlashMemoryviaaCustomSolutionTheabilityoftheMSP430CPUtowritetoitsownflashmemoryallowsforin-systemandexternalcustomprogrammingsolutionsasshowninFigure.TheusercanchoosetoprovidedatatotheMSP430throughanymeansavailable(UART,SPI,etc.).User-developedsoftwarecanreceivethedataandprogramtheflashmemory.Sincethistypeofsolutionisdevelopedbytheuser,itcanbecompletelycustomizedtofittheapplicationneedsforprogramming,erasing,orupdatingtheflashmemory.FLASH存储器的结构框图

FLASH存储器的主要功能部件

控制存放器:控制FLASH存储器的檫除与写入FLASH存储器阵列:存储体地址数据锁存器:檫除与编程时执行锁存操作编程电压发生器:产生编程电压时序发生器:产生檫除与编程所需所有时序控制信号擦除操作选择适当的时钟源和分频因子,为时序发生器提供正确时钟输入如果Lock=1,那么将它复位监视BUSY标志位只有当BUSY=0时才可以执行下一步,否那么一直监视BUSY。如果擦除一段,那么设置ERASE=1。如果擦除多段,那么设置MERAS=1如果整个FLASH全擦除,那么设置RASE=1同时MERAS=1。对擦除的地址范围内任意位置作一次空写入,用以启动擦除操作。如果空写的地址在不能执行擦除操作的段地址范围内,那么写入操作不起作用Anyeraseisinitiatedbyadummywriteintotheaddressrangetobeerased.Thedummywritestartstheflashtiminggeneratorandtheeraseoperation.Figureshowstheerasecycletiming.TheBUSYbitissetimmediatelyafterthedummywriteandremainssetthroughouttheerasecycle.BUSY,MERAS,andERASEareautomaticallyclearedwhenthecyclecompletes.Theerasecycletimingisnotdependentontheamountofflashmemorypresentonadevice.ErasecycletimesareequivalentforallMSP430devices.FLASH编程操作

选择适当的时钟源以及适宜的分频因子如果Lock=1,将它复位监视BUSY位,直到BUSY=0是才可进入下一步如果写入单字或单字节,那么将设置WRT=1如果是块写或多字、多字节顺序写入,那么将设置WRT=1,BLKWRT=1将数据写入选定地址时启动时序发生器,在时序发生器的控制下完成整个过程单字或单字节写入周期

块写入周期FLASH错误操作的处理

如果写入高字节口令码错误,那么引发PUC信号:小心操作可以防止;在对FLASH操作期间读FLASH内容,会引发ACCVFIG状态位的设置:小心操作可以防止因为在对FLASH操作期间,需要较长的时间,如果这时看门狗定时器的数据将近尾声,那么看门狗定时器溢出:建议用户程序在进行FLASH操作之前先停掉看门狗定时器,等操作结束之后再翻开看门狗所有的FLASH类型的MSP430器件的0段都包含有中断向量等重要的程序代码,如果对其进行擦除操作,将会引起严重的后果:建议用户程序在进行FLASH操作之前,先将该段的重要数据〔或程序代码〕保存到RAM中或写入到其他暂时未用的段中,等待该段操作完毕再复原那些数据〔或程序代码〕;同时一定不要使正在执行的程序处在正要被擦除的段中;也不要在FLASH操作期间允许中断的发生。FlashMemoryControllerInterruptsTheflashcontrollerhastwointerruptsources,KEYV,andACCVIFG.ACCVIFGissetwhenanaccessviolationoccurs.WhentheACCVIEbitisre-enabledafteraflashwriteorerase,asetACCVIFGflagwillgenerateaninterruptrequest.ACCVIFGsourcestheNMIinterruptvector,soitisnotnecessaryforGIEtobesetforACCVIFGtorequestaninterrupt.ACCVIFGmayalsobecheckedbysoftwaretodetermineifanaccessviolationoccurred.ACCVIFGmustberesetbysoftware.ThekeyviolationflagKEYVissetwhenanyoftheflashcontrolregistersarewrittenwithanincorrectpassword.Whenthisoccurs,aPUCisgeneratedimmediatelyresettingthedevice.6A/D及D/A

ADC12主要特点12位转换精度,1位非线性微分误差,1位非线性积分误差有多种时钟源提供给ADC12模块,而且模块本身内置时钟发生器内置温度传感器Timer_A/Timer_B硬件触发器配置有8路外部通道与4路内部通道内置参考电源,并且参考电压有6种组合模数转换有4种模式16字转换缓存ADC12可关断内核支持超低功耗应用采样速度快,最高可达200ksps自动扫描DMA使能ADC12转换模式

单通道单次转换序列通道单次转换单通道屡次转换序列通道屡次转换单通道单次转换模式状态

序列通道单次转换状态

单通道屡次模式的状态序列通道屡次转换状态ADC12应用举例

使用外部参考源

#include"msp430x44x.h"voidmain(void){WDTCTL=WDTPW+WDTHOLD;P6SEL|=0x01;//使能A/D通道A0ADC12CTL0=ADC12ON+SHT0_2;//翻开ADC12,设置采样时钟ADC12CTL1=SHP;//使用采样时钟ADC12MCTL0=SREF_2;//Vr+=VeREF+(外部)ADC12CTL0|=ENC;//使能转换while(1){ADC12CTL0|=ADC12SC;//开始转换while((ADC12IFG&ADC12BUSY)==0);_NOP();}}ADC12应用举例

使用内部参考源

#include"msp430x44x.h"voidmain(void){unsignedinti;WDTCTL=WDTPW+WDTHOLD;P6SEL|=0x01;//使能

A/D通道A0ADC12CTL0=ADC12ON+SHT0_2+REFON+REF2_5V;ADC12CTL1=SHP;ADC12MCTL0=SREF_1;//Vr+=Vref+for(i=0;i<0x3600;i++)//为参考源启动提供延迟{}

ADC12CTL0|=ENC;//使能转换

while(1){ADC12CTL0|=ADC12SC;//开始转换

while((ADC12IFG&BIT0)==0);_NOP();}}DAC12的结构

DAC12的主要特征

8位、12位分辨率

可编程的时间对能量消耗

内部或外部参考电压

支持无符号和有符号数据输入

具有自校验功能

二进制或者二的补码形式

多路DAC同步更新

可直接存储器存取

DAC12_xDAT的数据格式

DAC12采用12位二进制数格式DAC12使用2的补码形式校正DAC12输出

负偏移量

正偏移量

组合多个DAC12模块

MSP430x15x以及MSP430x16x中,DAC12_0和DAC12_1通过设置DAC12_0的DAC12GRP位实现组合。当DAC12_0和DAC12_1处于组合状态,只有两个转换通道的DAC12LSELx大于零并且DAC12ENC置位这两个条件同时满足情况下,才可以由DAC12_1DAC12LSELx位选择两个DAC的更新触发源。

DAC12应用举例

阶梯波的产生:在一定时间范围内,每隔一段时间,输出幅度递增一个恒定值。阶梯波可以通过延迟程序或定时器来配合DAC12产生。三角波的产生:三角波是由两段直线组成,先输出一个线性增长的波形,到达最大值时,再送出一个线性减少的波形,这两个波形合到一起就成为三角波。可通过控制DAC12的输入值递增、递减来实现.不规那么信号的产生:可以把不规那么信号的采样值,存储在程序存储器中,然后用查表的方法读出这些值,送到DAC12一个通道后输出到Y轴上,同时利用另一个DAC12通道在X轴送出锯齿波,以产生水平扫描线。两个DAC12通道信号的频率应保持一定的比例关系,从而能够使显示波形保持同步。当然也可用这种方法产生规那么的波形,如正弦波等。7比较器A比较器A的功能比较器A的主要功能是指出两个输入电压CA0和CA1的大小关系,然后设置输出信号CAOUT的值。如果CA0>CA1那么:CAOUT=1,否那么CAOUT=0。参与比较的两个电压CA0和CA1可以是外部或者内部基准电压。任何组合都是可能的。两个外部输入比较每个外部输入与VCC或VCC比较每个外部输入与内部基准电压比较如果VIN0×(R2/(R1+R2))>VIN1CAOUT=1否那么CAOUT=0比较器A的中断比较器A响应中断的条件为有中断源:比较器模块有比较结果输出。设置中断标志:CAIES选择比较器输出的上升沿或下降沿使中断标志CAIFG置位。中断允许:比较器A中断允许〔CAIE置位〕、系统总中断允许〔GIE置位〕中断响应后,因为比较器A具有独立中断向量,是单源中断,硬件会自动去除中断标志位CAIFG比较器A应用举例电压检测:输入的未知电压接到比较器A正端,片内参考电压Vcc接到比较器A负端,如果未知电压大于Vcc,置位,否那么复位。#include"msp430x11x1.h"voidmain(void){WDTCTL=WDTPW+WDTHOLD;//停止看门狗P1DIR|=0x01;//P1.0输出CACTL1=CARSEL+CAREF0+CAON;//0.25Vcc=-compCACTL2=P2CA0;//P2.3=+compwhile(1){if((CAOUT&CACTL2))P1OUT|=0x01;//CAOUT=1,置位elseP1OUT&=~0x01;//否那么复位}}8SPI典型结构

当MSP430USART模块控制存放器UCTL的SYNC位置位且I2C位复位时,串行模块工作在SPI模式,通过4线〔SOMI,SIMO,UCLK及STE〕或者3线〔SOMI,SIMO,UCLK〕同外界通信MSP430的同步通信模块特点

支持3线或4线SPI操作支持主机模式与从机模式接收和发送有单独的移位存放器接收和发送有独立的缓冲器接收和发送有独立的中断能力时钟的极性和相位可编程主模式的时钟频率可编程7位或8位字符长度SPI的主机模式SPI的从机模式同步通信举例9I2C

在现代电子系统中,有为数众多的IC需要进行相互之间以及与外界的通信。为了提高硬件效率和简化电路设计而广泛使用Inter-IC。Inter-IC〔I2C〕总线是一种用于内部IC控制的具有多端控制能力的双线双向串行数据总线系统。能够用于替代标准的并行总线,连接各种集成电路和功能模块。I2C器件的应用能够减少电路间连线,减小电路板尺寸,降低硬件本钱,并提高了系统可靠性MSP430和有关设备互连MSP430I2C模块结构

MSP430系列I2C模块的主要特征

符合I2C标准读写采取先进先出缓冲结构可编程时钟发生器16位数据访问可到达总线的最大吞吐率自动数据字节计算支持低功耗模式从接收根据检测到开始信号自动将MSP430从LPMx模式唤醒两个DMA触发源中断功能丰富只能用USART0实现I2C操作I2C的寻址模式

7位寻址模式10位寻址模式重复产生起始电气特性

起始位:SCL=1时,SDA上有下降沿

停止位:SCL=1时,SDA上有上升沿

I2C模块数据传输

I2C总线位传输总线仲裁

当两个设备同时发出起始位进行数据传输时,相互竞争的设备使它们的时钟保持同步,正常发送数据。没有检测到冲突之前,每个设备都认为只有自己在使用总线

仲裁过程中使用的数据就是相互竞争的设备发送到SDA线上的数据。第一个检测到自己发送的数据和总线上数据不匹配的设备就失去仲裁能力。如果两个或更多的设备发送的第一个字节的内容相同,那么仲裁就发生在随后传输中。也许直到相互竞争的设备已经传输了许多字节后,仲裁才会完成。

时钟同步

仲裁过程中,要对来自不同主设备的时钟进行同步处理。在SCL上第一个产生低电平的主设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论