第1讲 MSP430单片机系列简介(下)
2004-03-14张俊谟
张俊谟
4.MSP430系列的内部结构概述
MSP430系列器件包含CPU、程序存储器(ROM、 OTP和Flash ROM)、数据存储器(RAM)、运行控制、外围模块、振荡器和倍频器等主要功能模块。其基本结构如图1所示。可以看出,MSP430内部包含了计算机的所有部件,是一个真正的单片机(微控制器MCU)。
CPUCPU 由一个16位的ALU、16个寄存器和一套指令控制逻辑组成,其逻辑简图如图2所示。在16个寄存器中,程序计数器PC、堆栈指针SP、状态寄存器SR和常数发生器CGl、CG2这4个寄存器有特殊用途。除了R3和R2外,所有寄存器都可作为通用寄存器来用于所有指令操作。常数发生器是为指令执行时提供常数的,而不是用于存储数据的。对CGl、CG2访问的寻址模式可以区分常数的数据。
在CPU内部有一组16位数据总线和16位的地址总线;CPU运行正交设计、对模块高度透明的精简指令集;PC、SR和SP配合精简指令组所实现的控制,使应用开发可实现复杂的寻址模式和软件算法。
存储器 MSP430系列采用 “冯-纽曼结构”。因此,RAM、ROM和全部外围模块都位于同一个地址空间内,即用一个公共的空间对全部功能模块进行寻址。支持外部扩展存储器是将来性能增强的目标。特殊功能寄存器及外围模块安排在000H~1FFH区域;RAM和ROM共享0200H~FFFFH区域,数据存储器(RAM)的起始地址是0200H。
存储器与CPU及存储器数据总线(MDB)、存储器地址总线(MAB)的连接关系如图3所示。
(1)程序存储器MSP430系列程序存储器的类型有ROM、OTP和Flash ROM三种,存储器的类型和容量示于本刊网站的表1中。
ROM的容量在1~60KB之间;对于Flash型的芯片,内部还集成有两段128B(共256B)的信息存储器以及1KB存放自举程序的自举存储器(BOOT ROM);对代码存储器的访问总是以字形式取得代码,而对数据可以用字或字节方式访问。每次访问需要16条数据总线(MDB)和访问当前存储器模块所需的地址总线(MAB);存储器模块由模块允许信号自动选中。最低的64KB空间的顶部16个字,即0FFFFH~0FFE0H,保留存放复位和中断的向量;在程序存储器中还可以存放表格数据,以实现查表处理等应用;程序对程序存储器可以任意读取,但不能写入。
(2)数据存储器数据存储器(RAM)经两条总线与CPU相连,即存储器地址总线MAB和存储器数据总线MDB(见图3)。
数据存储器可以以字或字节宽度集成在片内,其容量在128B~10KB之间;所有指令可以对字节或字进行操作。但是对堆栈和PC的操作是按字宽度进行的,寻址时必须对准偶地址。
运行控制MSP430系列微控制器的运行主要受控于存储在特殊寄存器(SFR)中的信息。不同SFR中的位可以允许中断,以支持取决于中断标志状态的软件以及定义外围模块的工作模式。
禁止外围模块,停止它的功能,可以减少电流消耗,而所有存储在模块寄存器中的数据仍被保留。外围模块的工作模式可以用SFR的特定位置来标明。
外围模块 外围模块包括基本定时器(Basic Timer)、16位定时器(Timer_A及Timer_B)、ADC转换器、I/O端口、异步及同步串行通讯口(USART)以及液晶显示驱动模块等。
外围模块经MAB、MDB与CPU相连。图4所示为外围模块的连接总线示意图。从图中可以看出,外围模块可分为字(16位)模块和字节(8位)模块两种。对大多数外围模块,MAB通常是5位,MDB是8位或16位。
字节(8位)模块的数据总线是8位的,需经总线转换电路与16位的CPU相连。这些模块的数据交换毫无例外地要用字节指令处理;对字(16位)模块,其数据总线是16位的,无需经过转换而直接与CPU的16位数据总线相连。模块的操作指令就没有任何限制。MSP430系列所包含的字节(8位)模块和字(16位)模块,请参看本刊网站上的表2和表3。
振荡器和时钟发生器 振荡器LFXT1(LF)是专门为通用的低功耗32768 Hz时钟晶振设计的。除了晶体外接外,所有的模拟元件都集成在片内。但是也可以用一个高速的晶振工作,这时需要外接负载电容。
对于F13X、F14X、F15X和F16X以及F4XX系列,片内还有一个可接入高速晶振的XT2振荡器。除了晶体振荡器之外,F13X、F14X、F15X和F16X系列都有一个数字控制RC振荡器(DCO),用它实现对振荡器的数字控制和频率调节;对于F4XX系列,将晶振频率用一个锁频环电路(FLL或FLL+)进行倍频。FLL或FLL+在上电后以最低频率开始工作,并通过控制一个数控振荡器(DCO)来调整到适当的频率。供处理器工作的时钟发生器的频率固定在晶振的倍频上,并提供时钟信号MCLK。
外围模块及CPU的时钟源选择非常灵活。可以用以实现各种低功耗模式下的运行。