MSP430超低功耗单片机原理与应用全套课件_第1页
MSP430超低功耗单片机原理与应用全套课件_第2页
MSP430超低功耗单片机原理与应用全套课件_第3页
MSP430超低功耗单片机原理与应用全套课件_第4页
MSP430超低功耗单片机原理与应用全套课件_第5页
已阅读5页,还剩443页未读 继续免费阅读

下载本文档

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

文档简介

第一章概述MSP430超低功耗单片机原理与应用本章内容1.1单片微型计算机1.2MSP430系列单片机1.3MSP430应用选型1.4本章小结1.1单片微型计算机单片机的概念微型计算机具有体积小、价格低、使用方便、可靠性高等一系列优点微处理器的发展方向:1)面向数据运算、信息处理等功能的高性能方向发展2)突出控制功能,调整接口配置,在单一芯片上制成结构完整的计算机,即单片机单片机的分类:1)通用型:把可开发的资源全部提供给使用者。MSP430系列即为通用型单片机2)专用型:针对某些应用专门设计单片机的特点小巧灵活、成本低、易于产品化,它能方便的组装成各种智能式控制设备以及各种智能仪器仪表面向控制,能针对性的解决从简单到复杂的各类控制任务,因而能获得最佳性能价格比抗干扰能力强,适应温度范围宽,在各种恶劣环境下都能可靠的工作,这是其他机型无法比拟的可以很方便的实现多机和分布式控制。使整个系统的效率和可靠性大为提高单片机的应用工业控制智能化的仪器仪表日常生活中的电器产品计算机网络与通信方面计算机外部设备1.2MSP430系列单片机MSP430单片机主要系列MSP430单片机主要系列MSP430系列单片机的特点超低功耗架构与高度灵活的时钟系统可显著延长电池使用寿命:0.1µARAM保持模式;<1µARTC模式;<100µA/MHz。集成型智能外设:众多的高性能模拟与数字外设可大幅减轻CPU的工作量。简单易用的16位RISCCPU架构,可实现具有业界领先代码密度的新型应用。完整的产品开发环境。增强型程序库有益于多种应用。MSP432系列单片机的特点超低功耗在工作状态下的电流消耗只有95uA/MHz;在支持实时时钟(RTC)的待机状态下电流消耗也仅为850nA。MSP432针对系统性能和功耗对外设作如下优化设计超高性能MSP432选用ARMCortex-M4F内核,内嵌高性能M4浮点运算器,所以MSP432与使用M0+内核的竞争对手相比有10倍的性能提升采用Harvard架构,对指令和数据同时进行访问,提升了处理器的性能TI对Cortex-M4F的外围进行优化超低功耗特征更长的电池寿命

——低功耗更高的代码效率

——16位RISC更低的系统成本

——外设丰富、低价低风险

——TI品质与技术支持易开发、升级

——JTAG/串行调试、

全系列代码兼容TI公司从1996年推出MSP430系列开始到2000年初,推出了33X、

32X、

31X等几个系列。2000年推出了F11X/11X1系列。2001年7月到2002年又相继推出了带LCD控制器的F41X、F43X、F44X。2003到2004年期间推出了F15X和F16X系列产品。近几年,TI公司又推出了F5xx/6xx系列,并针对某些特殊应用领域,利用MSP430的超低功耗特性,推出了一些专用单片机,如个人健康/监护产品。2015年初TI推出全新的超低功耗MSP432MCU产品。MSP432是对16位MSP430的拓展,是TI超低功耗技术在32位MCU上的经典应用。MSP430系列单片机的发展MSP430系列单片机不仅可以应用于许多传统的单片机应用领域,如仪器仪表、自动控制,以及消费品领域,更适合用于一些电池供电的低功耗产品,如能量表(水表、电表、气表等)、手持式设备、智能传感器等,以及需要较高运算性能的智能仪器设备。MSP430系列单片机应用ConsumerMeteringSensoringLeierdaMedicalMSP430超低功耗单片机1.3MSP430应用选型MSP430系列单片机命名规则类型名称特性CROM只读存储器,适合大批量生成POTP单次可编程存储器,适合小批量生长EEPROM可擦除只读存储器,适合开发样机FFLASH闪存具有ROM型的非易失性和EPROM的可擦除性MSP430系列单片机存储器特性选择最容易实现设计目标且性能/价格比又高的型号在研制任务重,时间紧的情况下,首先选择熟悉的型号欲选的型号在市场上要有稳定充足的货源MSP430系列单片机选型MSP430F5xx选型MSP430F6xx选型1.4本章小节随着大规模集成技术、计算机科学的迅速发展,以及广泛应用领域的迫切需求,单片机脱颖而出,并逐渐形成微型计算机发展中的一个重要分支。单片机在性能上突出“控制功能”,具有一系列与之配合的特点TI的MSP430系列单片机具有超低功耗、处理能力强大、片内外设丰富、系统工作稳定、开发环境便捷等显著优势,和其他类型单片机相比具有更好的使用效果、更广泛的应用前景。并且其产品线较广,能够解决很多其他类型单片机不能解决的问题本章小结谢谢第二章

MSP430体系结构26

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt本章概述以下是MSP430体系结构的综合描述,包括:主要特点;设备体系架构;地址空间;中断向量表;中央处理器(MSP430CPUandMSP430XCPU);七种寻址模式和指令集组成:27种基本操作码;24种仿真指令。27

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt本章结构2.1控制器简介

2.2地址空间2.3中央处理器(MSP430CPU)2.4寻址模式2.5指令集2.1微控制器简介29

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt微控制器性能指标成本:通常微控制器是大容量、低成本的设备;时钟频率:和其他设备(如微处理器和DSP)比起来,微控制器采用更低的时钟频率。目前,微控制器通常可以跑到100MHz/100MIPS(每秒百万条指令数);功耗:比DSP和MPU低几个数量级;位数:4位(老式设备)到32位设备;内存:有限的内存,通常小于1M字节;输入/输出(I/O):8到150个输出引脚。30

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptMSP430微控制器的主要特点(1/3)低功耗RAM数据保存只需0.1A实时时钟模式下操作只需0.8A在活动模式下操作只需250A/MIPS低操作电压(从1.8V到3.6V)<1s的时钟启动时间<50nA的端口漏电流零功耗的掉电复位(BOR)31

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptMSP430主要特点(2/3)片上模拟设备:10/12/16位模数转换器(ADC);12位双通道数模转换器(DAC);比较器——门控定时器(gatedtimers);运算放大器

(OpAmps);电源电压监控器

(SVS).16位RISCCPU:紧凑的内核设计,降低功耗和成本;16位数据总线;27种内核指令;7种寻址模式;丰富的中断向量资源。32

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptMSP430主要特点(3/3)灵活性:高达256kByte的Flash;高达100个引脚;USART,I2C,Timers;LCD驱动;嵌入式仿真;多种外设模块…微控制器性能:位、字节和字的指令处理;精简指令集;编译效率;广泛的外设;灵活的时钟系统。33

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptMSP430模块框图2.2地址空间35

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt内存映射映射到单个、连续的地址空间:所有存储器,包括RAM,Flash/ROM,信息内存,特殊功能寄存器(SFRs),和外设寄存器。36

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt中断向量表映射到存储器空间的最后一段区域(Flash/ROM中最后16个字):0FFE0h-0FFFEh(4xx系列);中断向量表优先级随着字地址的增加而递增.

2.3中央控制器(MSP430CPU)38

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptMSP430CPU特点(1/2)RISC(精简指令集)架构:只包括最基本的指令(短集):27种物理指令24种仿真指令这样可以使指令解码更简单快速使用通用内存地址总线

(MAB)和内存数据总线(MDB)进行互联

——冯诺依曼架构:数据和指令集共用一个存储结构存储器处理单元隐式分离把指令当成数据(可编程的)一样处理采用三级指令流水线,包括:指令译码16位ALU4个专用寄存器12个通用寄存器39

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptMSP430CPU特点(2/2)地址总线有16位,所以可以寻址范围为65kB(包括RAM+Flash+寄存器);算术逻辑单元(ALU):加,减,逻辑操作

(与,或,异或);操作数会影响溢出标志,零标志,负标志等SR(状态寄存器)的标志位.40

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptMSP430CPU寄存器(1/5)包括16个16位寄存器:4个专用寄存器(R0,R1,R2andR3);12个通用寄存器(R4~R15).R0:程序计数器(PC):存放着下一条将要从程序存储器中取出的指令的地址。R1:堆栈指针(SP):第一,用户可以使用堆栈存储数据,以便未来使用。(指令:用PUSH指令来存数据,POP指令来取数据);第二,用户和编译器均可以使用堆栈为子函数传递参数

(PUSH、POP用于调用函数,被调用的函数使用SP来计算偏移);

41

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptR1:堆栈指针(SP)(续):第三,系统进入子函数之前,把PC的值存储到堆栈中,从子函数返回时,再取出堆栈中的值,重新赋值给PC;第四,系统堆栈在系统进入中断服务程序时,首先保护程序计数器(PC),然后将中断矢量地址送入程序计数器,再执行中断服务程序。中断服务程序执行完毕,遇到返回指令时,将堆栈的内容送到程序计数器中,程序又回到原来的地方,继续执行。在函数调用之前保存的寄存器变量、局部变量和参数都不会变。MSP430CPU寄存器(2/5)42

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptR2:状态寄存器(SR):存储状态位和控制位;CPU自动改变系统标志位;保留位用来支持常量发生器.1514131211109876543210ReservedforCG1VSCG1SCG0OSCOFFCPUOFFGIENZCBitDescription8V溢出位.

V=1运算结果超出有符号范围7SCG1系统时钟发生器0.

SCG1=1

当DCO未被用作MCLK或SMCLK时,关闭DCO发生器

6SCG0系统时钟发生器1.

SCG0=1

关闭FLL和循环控制5OSCOFF关闭振荡器.

OSCOFF=1

当LFXT1未被用作MCLKorSMCLK时,关闭LFXT1

4CPUOFF关闭CPU.

CPUOFF=1禁止CPU核3GIE使能通用中断.

GIE=1

使能中断屏蔽2N负标志.

N=1

运算结果为负1Z零标志.

Z=1运算结果为零0C进位标志.

C=1运算结果产生进位MSP430CPU寄存器(3/5)43

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt43

Copyright2008TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptR2/R3:常量发生器

(CG1/CG2):根据源寄存器寻址模式(AS)的值,常量发生寄存器可以不需要通过代码字或代码内存访问即可生成六个常用的常量。利用这个功能就可以实现仿真指令,例如:可以使用常量发生器而不是使用一个核心指令来实现数值增一。

RegisterAsConstantRemarksR200-RegistermodeR201(0)AbsolutemodeR21000004h+4,bitprocessingR21100008h+8,bitprocessingR30000000h0,wordprocessingR30100001h+1R31000002h+2,bitprocessingR3110FFFFh-1,wordprocessingMSP430CPU寄存器(4/5)44

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt44

Copyright2008TexasInstrumentsAllRightsReservedwww.msp430.ubi.ptR4-R15:通用寄存器:通用寄存器可以用来保存数据值、地址指针或者索引值,可以通过字节或字指令访问它们。MSP430CPU寄存器(5/5)2.4寻址模式46

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt寻址模式源操作数的7种寻址模式

:地址操作数的4种寻址模式:寄存器模式;变址模式;符号模式;绝对模式.对于目的操作数,可以使用额外的两种地址模式。47

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt寄存器寻址模式(1/2)描述:

寄存器内容是操作数源模式位:

As=00(操作码定义源寄存器)语法:

Rn长度:

一个或两个字注释:

源或目的均有效例:移动(复制)源寄存器(R4寄存器)的内容到

目的寄存器(R5寄存器)。寄存器R4不受影响。解答:

操作前:R4=A002h R5=F50Ah PC=PCpos

操作:

MOVR4,R5

操作后:R4=A002h R5=A002h PC=PCpos+248

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt寄存器寻址模式(2/2)下表描述了根据第二个操作数寻址模式完成一条指令需要的时钟周期数49

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt变址寻址模式描述:

(Rn+X)指出操作数地址。X存储在紧邻的字中源模式位:

As=01(操作码后紧邻的字定义了存储单元地址)目的模式位:Ad=1(操作码后紧邻的字定义了存储单元地址)语法:

X(Rn)长度:

两个或三个字注释:

源或目的均有效例:移动(复制)源地址

(F000h+R5)内容到目的寄存器(R4)。解答:

操作前:R4=A002h R5=050Ah Loc:0xF50A=0123h

操作:

MOVF000h(R5),R4

操作后:R4=0123h R5=050Ah Loc:0xF50A=0123h50

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt符号寻址模式描述:指令后的字中包含立即数常量N。使用自增间接寻址表示是@PC+源模式位:As=11语法:#N长度:两个或三个字。如果常量CG1或CG2可用就少一个字注释:仅适用于源操作数例:移动立即数常量E2h到目的地址(寄存器R5)。解答:

操作前:R4=A002h R5=050Ah

操作: MOV#E2h,R5

操作后:R4=A002h R5=00E2h51

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt绝对寻址模式描述:指令后字中包含绝对地址。X存储在下一个字中。

使用变址寻址表示是X(SR)源模式位:

As=01(操作码后紧邻的字定义了存储单元地址)目的模式位:Ad=1(操作码后紧邻的字定义了存储单元地址)语法:

&ADDR长度:

两个或三个字注释:

源或目的均有效例:移动源地址XPT内容到目的地址YPT。解答:

操作前:LocationXPT=A002hLocationYPT=050Ah

操作:

MOV&XPT,&YPT

操作后:LocationXPT=A002hLocationYPT=A002h52

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt寄存器间接寻址模式描述:

Rn用来指出操作数源模式位:As=10语法:

@Rn长度:

一个或两个字注释:

仅适用于源操作数。目的操作数替代是0(Rn)例:移动源地址(R4的内容)内容到目的地址(R5)。寄存器R4不能改变。解答:

操作前:R4=A002h R5=050Ah Loc:0xA002=0123h

操作:

MOV@(R4),R5

操作后:R4=A002h R5=0123h Loc:0xA002=0123h53

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt自增间接寻址模式描述:

Rn用于指出操作数。字节指令中Rn自增1而字指令中Rn自增2.源模式位:As=11语法:

@Rn+长度:

一个或两个字注释:

仅适用于源操作数。目的操作数替代是0(Rn)

加上第二条指令INCDRn例:移动源地址内容到目的地址,然后自增寄存器R4的值来指向下一个字。解答:

操作前:R4=A002h R5=050Ah Loc:0xA002=0123h

操作:

MOV@R4+,R5

操作后:R4=A004h R5=0123h Loc:0xA002=0123h54

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt立即数寻址模式描述:指令后的字中包含立即数常量N。使用自增间接寻址表示是@PC+源模式位:As=11语法:#N长度:两个或三个字。如果常量CG1或CG2可用就少一个字注释:仅适用于源操作数。例:移动立即数常量E2h到目的地址(寄存器R5)。解答:

操作前:R4=A002h R5=050Ah

操作:MOV#E2h,R5

操作后:R4=A002h R5=00E2h2.5指令集56

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt指令集27条内核指令24条仿真指令指令集正交CPU将内核指令解码成唯一的操作码,汇编器和编译器用来生成仿真指令的助记符有三种内核指令格式:双操作数单操作数程序流控制-跳转57

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt双操作数指令集(1/3)双操作数指令格式如下:58

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt下列出了不是仿真指令的双操作数指令双操作数指令集(2/3)59

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt下表列出了状态位置位和清除的条件双操作数指令集(3/3)60

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt单操作数指令集(1/3)双操作数指令格式如下:61

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt单操作数指令集(2/3)不是仿真指令的单操作数指令62

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt单操作数指令集(3/3)状态位条件取决于单操作数指令运行结果63

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt程序流控制—跳转(1/3)跳转指令格式如下:64

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt程序流控制—跳转(2/3)跳转指令格式如下:65

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt程序流控制—跳转(3/3)列出了不是仿真指令的程序流控制指令(跳转)66

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt仿真指令(1/4)列出了不是仿真指令的程序流控制指令(跳转)67

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt仿真指令(2/4)(续)68

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt仿真指令(3/4)(续)69

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt仿真指令(4/4)(续)谢谢第三章

MSP430基本外设72

Copyright2009TexasInstrumentsAllRightsReservedwww.msp430.ubi.pt本章概述MSP430系列微控制器的片内资源非常丰富,外设模块通过数据总线、控制总线和地址总线与CPU相连。3.1系统时钟3.2低功耗模式3.3通用输入输出端口3.4定时器3.5DMA控制器3.6比较器A3.7模数转换器(ADC)3.8数模转换模块(DAC)3.9LCD液晶驱动模块3.10硬件乘法器3.11Flash编程3.1系统时钟(UCS)

Unified

Clock

System

本节内容时钟系统模块设计要求MSP430X5XX/6XX系列时钟系统模块五个时钟输入源振荡器模块DCO模块操作外设模块请求时钟系统(低功耗运行模式下)模块振荡器(MODOSC)故障安全逻辑操作时钟模块应用举例(MSP430F5XX/6XX)时钟模块库函数时钟系统模块设计要求(1/1)单片机各部件能有条不紊自动工作,实际上是在其系统时钟作用下,控制器指挥芯片内各个部件自动协调工作,使内部逻辑硬件产生各种操作所需的脉冲信号而实现的。为适应系统和具体应用需求,单片机的系统时钟必须满足以下不同要求:高频率。用于对系统硬件需求和外部事件快速反应;低频率。用于降低电流消耗;稳定的频率。以满足定时应用,如实时时钟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/4)DCOCLK频率调整过程:设置DCORSELx这3位可以从8个DCO额定频率中选择一个频率。5位的DCO用来在DCORSEL的32个频率级别中选择,相邻两个的频率相差约8%。5位的MOD用于控制在DCO中的32个频率中选择切换两种频率。如果DCO=31,表示DCO已经选择最高频率,此时不能利用MOD进行频率调整。(如下图所示)其中,在锁频环工作的时候,这些DCO位和MOD位的值由硬件自动调节。DCO模块操作(2/4)DCO频率的调节DCO模块操作(3/4)锁频环(FLL)DCOCLK可用作ACLK、MCLK、SMCLK,但它的频率随供电电压、环境温度变化而具有一定的不稳定性,FLL通过频率积分器和调制器的自动调节使DCOCLK的频率趋于稳定。FLL通过在两个最相近的邻居频率之间进行切换,产生两个频率的加权频率,最终获得我们所需的频率。(如下图所示)DCO模块操作(4/4)外设模块请求时钟系统(1/2)外设模块可以控制3个时钟请求信号中的一个来获得时钟ACLK_REQ、MCLK_REQ、SMCLK_REQ。不管在任何模式下,外设模块的正常操作都可以从标准时钟系统(UCS)请求时钟信号。例如:如果定时器选择了ACLK作为时钟源,只要定时器允许,ACLK_REQ信号就一直有效并向UCS申请时钟,而UCS则不管当前是在什么LPM低功耗模式都会输出ACLK信号。如下图所示,为外设模块请求时钟系统。外设模块请求时钟系统(2/2)外设模块请求时钟系统。模块振荡器(MODOSC)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.0

MSP430F6638P3.4SMCLKACLK例1,MSP430x66xx演示例程:设ACLK=XT1=32768Hz,令SMCLK=XT2CLK,MCLK=DCO(默认)=32xACLK=1048576Hz,ACLK和SMCLK分别通过P1.0和P3.4输出。程序代码如下:#include<msp430f6638.h>voidmain(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;//选择端口功能为XT2

UCSCTL6&=~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函数时钟模块库函数(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)◆对状态和配置进行设置和询问的API函数UCS_faultFlagStatus()UCS_clearFaultFlag()UCS_getACLK()UCS_getSMCLK()UCS_getMCLK()时钟模块库函数(4/4)◆库函数编程示例(伪代码)

//设置DCOFLL参考基准=REFOUCS_clockSignalInit(__MSP430_BASEADDRESS_UCS

,UCS_FLLREF, UCS_REFOCLK_SELECT,UCS_CLOCK_DIVIDER_1); //令ACLK=REFOUCS_clockSignalInit(__MSP430_BASEADDRESS_UCS__,UCS_ACLK, UCS_REFOCLK_SELECT,UCS_CLOCK_DIVIDER_1); //设置比例和所需的MCLK频率,初始化DCO

UCS_initFLLSettle(__MSP430_BASEADDRESS_UCS__, UCS_MCLK_DESIRED_FREQUENCY_IN_KHZ, UCS_MCLK_FLLREF_RATIO); //验证时钟设置是否跟希望的配置一样

clockValue=UCS_getSMCLK(__MSP430_BASEADDRESS_UCS__);

谢谢3.2低功耗结构(LPM)

Low-PowerModes低功耗结构(LPM)主要内容低功耗结构(LPM)概述低功耗工作模式进入和退出低功耗模式(LPM0~LPM4)进入和退出低功耗模式(LPMx.5)低功耗应用原则低功耗应用举例低功耗结构(LPM)概述TI的MSP430是一个特别强调低功耗的单片机系列,尤其适合应用于采用电池供电的长时间工作场合。MSP430系统使用不同的时钟信号:ACLK、MCLK和SMCLK。这3种不同频率的时钟输出给不同的模块,从而更合理地利用系统的电源,实现整个系统的超低功耗。MSP430的瞬间响应特性是系统超低功耗事件驱动方式的重要保证。如下图所示:低功耗工作模式(1/2)用户可通过软件配置成7种不同工作模式:1种活动模式和6种低功耗模式(LPM0~LPM4、LPM3.5和LPM4.5)。通过设置控制位MSP430可以从活动模式进入到相应的低功耗模式;而各种低功耗模式又可通过中断方式回到活动模式。如下图,显示了各种模式之间的关系。低功耗工作模式(2/2)◆在低功耗模式下,所有的I/O引脚和RAM寄存器将保持不变。可以通过开中断后用中断事件来唤醒LMP0到LMP4。◆系统响应中断的过程:硬件自动中断服务 PC入栈 SR入栈 中断向量赋给PC GIT、CPUOFF、OSCOFF和SCG1清除 IFG标志位清除(单源中断标志)执行中断处理子程序执行RETI指令(中断返回) SR出栈(恢复原来的标志) PC出栈进入和退出低功耗模式(LPM0~LPM4)(1/4)进入和退出低功耗模式(LPM0~LPM4)(2/4)系统响应中断时的堆栈情况,如下图所示:堆栈初始状态

入栈时PC和SR

出栈前PC和SR例:系统初始化完毕之后工作于低功耗模式0,中断事件触发到活动模式,中断处理结束后进入到低功耗模式3。;主程序…..;初始化操作开始……;……;初始化完毕BIS#GIE+CPUOFF,SR;主程序中设置低功耗模式0;…...;程序在这里停止;;中断子程序……;中断处理开始…………;中断处理结束BIS#GIE+CPUOFF+SCG1+SCG0,0(SP);设置SR为低功耗模式3RETI;中断返回;系统进入低功耗模式3。……

进入和退出低功耗模式(LPM0~LPM4)(3/4)在上述处理过程中,堆栈的变化情况,如下图所示:堆栈初始状态

入栈时PC和SR

出栈前PC和SR进入和退出低功耗模式(LPM0~LPM4)(4/4)进入和退出低功耗模式(LPMx.5)低功耗模式LPMx.5的进入和退出与其他低功耗模式不同。恰当的使用LPMx.5模式,可以获得更低的功耗。当进入LPMx.5(LPM3.5和LPM4.5)模式时,电源管理模块(PMM)的电压调节器也停止工作。所有的RAM、寄存器及IO口的配置数据都将丢失,所有的IO口被锁定在当前状态。LMP4.5可以通过上电、复位或具体的IO口来唤醒。在LPM3.5模式下,除了可以用LPM4.5模式下的唤醒事件外,还可用RTC唤醒事件来唤醒。从LPMx.5模式下退出都会产生一次BOR事件。因此,在退出LPMx.5模式后,IO口的状态将一直保持锁定状态直到应用程序解除锁定,用户应根据需要重新配置芯片。低功耗应用原则(1/2)◆一般的低功耗原则:最大化延长其在LPM3或LPM4模式下的时间,用32KHz晶振作为ACLK时钟,DCO用于CPU激活后的突发短暂运行。如果在应用中有短暂性的周期工作并对反应速度不敏感的场合,可以最大化的利用LPMx.5模式来降低功耗。用接口模块代替软件驱动功能。例如Timer_A和Timer_B可以自动产生PWM和捕获外部时序,而不占用CPU资源。用中断控制程序运行。用可计算的分支代替标志位测试产生的分支。用快速查表代替冗长的软件计算。在冗长的软件计算中使用单周期的CPU寄存器。避免频繁的子程序和函数调用。尽可能直接用电池供电。低功耗应用原则(2/2)◆在设计外设时还有一些常规原则:将不用的FETI输入端连接到VSS。JTAG端口TMS、TCK和TDI不要连接到VSS。CMOS输入端不能有浮空节点,将所有输入端接适当的电平。不论对于内核还是对于各外围模块,选择尽可能低的运行频率,如果不影响功能应设计自动关机。低功耗应用举例(1/3)例1,MSP430x66xx演示例程:配置ACLK=LFXT1=32kHz,MCLK=SMCLK=DCO(默认值),禁用REF0、VUSBLDO、SLDO和SLDO。进入LPM3。程序代码如下:#include<msp430f6638.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

//使能XT1UCSCTL6&=~(XT1OFF);//使能XT1UCSCTL6|=XCAP_3;//配置内接电容值, //若使输出为32.768KHz,则需要选择XCAP_3while(BAKCTL&LOCKIO)//解锁XT1引脚

BAKCTL&=~(LOCKIO);低功耗应用举例(2/3)do{UCSCTL7&=~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);//清零XT1、XT2、DCO故障标志位

SFRIFG1&=~OFIFG;//清零SFR中的故障标志位

}while(SFRIFG1&OFIFG);//检测振荡器故障标志位

UCSCTL6&=~(XT1DRIVE_3);//XT1现在稳定了,降低驱动力

UCSCTL4&=~(SELA0+SELA1+SELA2);//确保ALCK时钟源为XT1

//端口配置

P1OUT=0x00;P2OUT=0x00;P3OUT=0x00;P4OUT=0x00;P5OUT=0x00;P6OUT=0x00;P7OUT=0x00;P8OUT=0x00;P9OUT=0x00;PJOUT=0x00;P1DIR=0xFF;P2DIR=0xFF;P3DIR=0xFF;P4DIR=0xFF;P5DIR=0xFF;P6DIR=0xFF;P7DIR=0xFF;P8DIR=0xFF;9DIR=0xFF;PJDIR=0xFF;低功耗应用举例(3/3)//禁用VUSBLDO和SLDOUSBKEYPID=0x9628;//设置USBKEYandPID为0x9628,//允许访问USB配置寄存器

USBPWRCTL&=~(SLDOEN+VUSBEN);//禁用VUSBLDO和SLDOUSBKEYPID=0x9600;//禁止访问USB配置寄存器

//禁用SVSPMMCTL0_H=PMMPW_H;//PMM密码

SVSMHCTL&=~(SVMHE+SVSHE);//禁用高压侧SVSSVSMLCTL&=~(SVMLE+SVSLE);//禁用低压侧SVS__bis_SR_register(LPM3_bits);//进入低功耗LPM3__no_operation();//用于调试}谢谢3.1通用输入输出端口

(GeneralPurposeInput&Output)

本节内容GPIO概述MSP430的GPIO特点MSP430GPIO寄存器GPIO工作模式GPIO官方库函数GPIO应用示例GPIO基本都是用于芯片与片外器件或设备的交互。检测数字输入,如键盘或开关信号;驱动LED,蜂鸣器或LCD等其他指示器;控制片外器件,较高级的使用可以用它们(通过程序)模拟很多器件的时序达到控制相应器件的目的,比如模拟SPI和模拟总线等。GPIO概述(1/4)GPIOGPIO(GeneralPurposeI/O),通用输入输出端口。应用特性

GPIO是MCU与外界交互的重要途径,它具有如下的特性:可以独立控制每个GPIO口的方向(输入/输出模式);可以独立设置每个GPIO的输出状态(高/低电平);所有GPIO口在复位后都有个默认方向(或输入或输出)。GPIO概述(2/4)寄存器概述

GPIO口都是按组规划,有的芯片是8个GPIO口一组,有的是16个或32个为一组。一般每个GPIO口都需要做两个寄存器位:一是选择口线方向(输入输出)二是需要一个数据位(用于设置输出数据和读取输入数据)。所以一组GPIO口至少会有两个寄存器GPIOxDIR和GPIOxDATA。GPIOxDIR:控制各个GPIO口的方向;GPIOxDATA:用于各个GPIO口的输入输出数据。

GPIO概述(3/4)寄存器工作图GPIOxDATA寄存器输入锁存输出锁存GPIOxDIR寄存器三态门输入缓冲读/写I/OPIN选择输出选择输入禁止GPIO概述(4/4)端口类型丰富

有端口P1、P2、P3、P4、P5、P6、P7、P8、P9、P10、P11、S和COM。产品因型号不同可包含上述所有或部分端口。如下表所示:MSP430的GPIO特点(1/4)具有中断能力的端口:P1和P2。端口P1和P2具有输入输出、中断和外部模块功能。这些功能可以通过它们各自9个控制寄存器的设置来实现。不具有中断能力的端口:P3和其他端口

P3和其他端口没有中断能力,其余功能同P1和P2,可以实现输入/输出功能和外围模块功能。端口COM和S

这些端口实现与液晶片的直接接口。COM端口为液晶片的公共端,S口为液晶片的段码端。详细使用方式,请参见本书第四章液晶驱动模块部分。MSP430的GPIO特点(2/4)端口引脚还可以独立的配置成特殊功能,例如:USART–通用串行同步/异步通信模块;模拟信号比较器;模拟—数字转换器;其他功能(请参见具体芯片的数据手册)。MSP430各端口和功能,如下表所示:功能丰富MSP430的GPIO特点(3/4)MSP430各种端口有大量的控制寄存器供用户操作。最大限度提供了输入/输出的灵活性。每个I/O口都可以独立编程。输入或输出可任意组合。P1和P2所有I/O口都具有边沿可选的输入中断功能。可以按字节输入输出,也可按位进行操作。可设置I/O口的上拉或下拉功能。可配置I/O驱动能力(高驱动强度或低驱动强度)。寄存器丰富MSP430的GPIO特点(4/4)PxDIR输入/输出方向寄存器相互独立的8位分别定义了8个引脚的输入/输出方向。使用输入和输出功能时,应该先定义端口的方向。PxDIR配置:

Bit=1:将端口引脚设置为输出模式;

Bit=0:将端口引脚设置为输入模式。例,设置P1端口的P1.0引脚为输出方向,其余引脚(P1.1~P1.7)设置为输入方向。 P1DIR=0x01;//设置P1端口P1.0引脚为输出方向GPIO寄存器(1/9)该寄存器是只读寄存器,即用户不能对它写入。这个寄存器是只读的,其中的每一位都反映了其对应的I/O引脚的输入信号(引脚配置为通用I/O)。PxIN配置: Bit=1:输入为高电平; Bit=0:输入为低电平;PxIN输入寄存器GPIO寄存器(2/9)输出寄存器是可读可写的。这个寄存器的每个位都反映了写入相应输出引脚的值。将需要的值写入该寄存器,控制输出引脚的电平状态。PxOUT配置: Bit=1:输出为高电平; Bit=0:输出为低电平;PxOUT输出寄存器GPIO寄存器(3/9)2023/2/3130PxREN上拉或下拉电阻使能寄存器Bit=1:引脚选择上拉;上拉电阻简单来说就是把电平拉高,通常用4.7-10K的电阻接到Vcc电源。PxREN寄存器中的每一位可使能或禁用相应I/O引脚的上拉/下拉电阻。PxREN配置: Bit=1:使能上拉/下拉电阻; Bit=0:禁用上拉/下拉电阻。当使能引脚上拉或下拉功能时,通过设置PxOUT相应位来选择。VCC引脚Px.xRR引脚上拉GPIO寄存器(4/9)2023/2/3131GPIO寄存器(4/9)PxREN上拉或下拉电阻使能寄存器Bit=1:引脚选择上拉上拉电阻简单来说就是把电平拉高,通常用4.7-10K的电阻接到Vcc电源。Bit=0:引脚选择下拉;下拉电阻则是把电平拉低,电阻接到GND地线上。PxREN寄存器中的每一位可使能或禁用相应I/O引脚的上拉/下拉电阻。PxREN配置: Bit=1:使能上拉/下拉电阻; Bit=0:禁用上拉/下拉电阻。当使能引脚上拉或下拉功能时,通过设置PxOUT相应位来选择。VCC引脚Px.xRR引脚下拉I/O端口还具有其他片内外设功能,为减少引脚,将这些外设功能与I/O端口引脚复用来实现。PxSEL来选择引脚的I/O端口功能与外围模块功能。PxSEL的配置: Bit=0:选择引脚为I/O端口; Bit=1:选择引脚为外设功能。PxSEL功能选择寄存器GPIO寄存器(5/9)PxDS输出驱动强度寄存器PxDS寄存器的每个位,设置引脚的输出强度为高驱动强度或低驱动强度。默认值为低驱动强度。PxDS的配置: Bit=0:低驱动强度; Bit=1:高驱动强度。GPIO寄存器(6/9)该寄存器的8位与端口的8个引脚一一对应,其中某一位置位表示允许对应的引脚在电平变化(上升沿或下降沿)时产生中断,否则,表示禁止该位的中断。每个PxIE位使能的中断请求都与相应的PxIFG中断标志相关联,可通过写PxOUT和PxDIR来设置PxIFG。PxIE的配置: Bit=1:允许中断; Bit=0:禁止中断。PxIE中断使能寄存器(仅中断端口P1和P2)GPIO寄存器(7/9)PxIES中断触发沿选择寄存器(仅中断端口P1和P2)如果允许Px口的某个引脚中断(即PxIE和GIE已设置),还需定义该引脚的中断触发方式。该寄存器可读可写,寄存器的8位分别对应Px口8个引脚PxIES的配置: Bit=1:下降沿使相应中断标志置位; Bit=0:上升沿使相应中断标志置位。GPIO寄存器(8/9)该寄存器用来表示对应引脚是否产生了由PxIES设定的电平跳变。如果在GIE置位,引脚对应的中断使能寄存器PxIE位置位,则会向CPU请求中断处理。中断标志PxIFG.0~PxIFG.7共用一个中断向量,PxIFG.0~PxIFG.7不会自动复位。必须用软件来判定是对哪一个事件服务,并将相应的标志复位。PxIFG的配置: Bit=0:没有中断请求; Bit=1:有中断请求。PxIFG中断标志寄存器(仅中断端口P1和P2)GPIO寄存器(9/9)GPIO工作模式——标准输入GPIO工作模式——上(下)拉输入GPIO工作模式——输入禁用的推拉输出GPIO工作模式——上(下)拉输出GPIO工作模式——复位或模拟I/OGPIO_setAsOutputPin()//设置为输出引脚GPIO_setAsInputPin()//设置为输入引脚GPIO_setAsInputPinWithPullDownresistor()

//设置为输入上拉GPIOAPI被分成三组函数:GPIO的引脚配置函数,处理中断的函数,以及引脚状态的函数。GPIO的引脚配置函数GPIO官方库函数(1/4)GPIO_setAsInputPinWithPullUpresistor()//设置为输入下拉GPIO_setDriveStrength()//设置引脚驱动强度GPIO_setAsPeripheralModuleFunctionOutputPin()//设置为外设输出引脚GPIO_setAsPeripheralModuleFunctionInputPin()//设置为外设输入引脚GPIO的引脚配置函数(续)GPIO官方库函数(2/4)GPIO官方库函数(3/4)GPIO_enableInterrupt()//使能中断GPIO_disbleInterrupt()//禁止中断GPIO_clearInterruptFlag()//清除中断标志位GPIO_getInterruptStatus()//获取中断状态GPIO_interruptEdgeSelect()//选择中断沿GPIO中断处理函数GPIO官方库函数(4/4)GPIO_setOutputHighOnPin()//引脚输出为高GPIO_setOutputLowOnPin()//引脚输出为低GPIO_toggleOutputOnPin()//翻转引脚GPIO_getInputPinValue()//获取引脚输入值GPIO引脚状态的函数示例1--软件编程示例(伪代码)用P1.0口控制发光二极管P1DIR=0x01;//设置P1端口P1.0引脚为输出方向P1OUT|=0X01;//输出1,灯亮P1.0LEDP1OUT&=~0X01;//输出0,灯灭GPIO应用示例

温馨提示

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

评论

0/150

提交评论