最近开始接触MSP430单片机了,打算先把手册结合着书看一遍,之后用来做一个小玩意儿。学习笔记就按照学习进度来更新吧,也算做个备忘,有什么东西不记得了可以来翻一翻,今天我们来聊聊MSP430架构。
一、MSP430简介
MSP430是由德州仪器推出的一种16位单片机,这种16位单片机最大的特色是极低的功耗,适合用于电池供电等电量有限但又追求长时间工作的设备,比如时钟、各种环境温湿度传感装置等。具体详细信息可以参考德州仪器家的官方数据手册,我们这里主要讨论一下架构问题。
二、MSP430架构框图解析
MSP430架构框图
如上为MSP430的架构框图。最左上角是时钟模块(Clock System),负责为系统的其他模块运行提供时钟信号,MSP430总共有三种时钟信号,分别为:ACLK(auxiliary clock)、SMCLK(sub main clock)、MCL(mian clock)。
在时钟模块的下方是CPU模块(RISC CPU 16-Bit),其通过16位数据总线以及16位地址总线(部分型号搭载的是CPUX,其地址总线为20位)访问片内的其他外设并进行数据传输。MSP430的CPU为采用精简指令集(RISC)的16位架构CPU,由于支持16位地址总线,其最大支持的寻址空间为64KB。为了拓展寻址空间,部分的MSP430采用了CPUX,其将内部寄存器与地址总线拓展为了20位,因此支持1MB的寻址空间,算术逻辑单元(ALU)的运算位数支持也从16位拓展到了20位,CPUX可以看作16位CPU的增强版。
总线上从左往右依次连接了:JTAG/Debug接口,用于进行在线调试;Flash/ROM,用于存储程序;Watchdog,用于芯片异常复位或者当普通定时器使用;其他外设。值得注意的是,MSP430部分片内外设为8位外设,当访问8位外设时,通过数据总线上的总线转换器(Bus Conv)将16位数据总线转换位8位数据总线。
三、存储空间结构与地址空间
MSP430采用的是冯诺依曼架构,故中断向量表、ROM/FLASH、RAM、硬件外设以及特殊功能寄存器共用一套地址空间,它们在地址空间上的分布如下图所示。
地址空间分配
不同型号芯片的地址空间分布可能会有部分差异,不过基本是如上图这样,具体要查阅各型号的数据手册。
从最低的0x00到0x0F地址空间用于指向特殊功能寄存器(SFR),只支持字节寻址(即一个地址对应8位的数据,从地址中读数据一次读8位)。
从0x10到0xFF地址空间是8位外设的地址空间,同样只支持字节为单位访问。再往上的0x0100到0x01FF为16位外设的地址,只支持字访问(即一个地址对应两字节数据,从地址中取数据一次取16位)。
从0x01FF往上的地址空间对于按字节寻址与按字寻址这两种寻址方式都支持,主要是对应各种存储芯片。比如0x0200往上一般对应的是RAM的存储地址,从0xFFFF往下一般对应的是ROM/FLASH存储地址,其中在ROM/FLASH里还存储了中断向量表,它永远位于从0xFFFF到0xFFE0这段空间(部分型号为0xFFFF到0xFFC0)。部分型号采用的CPUX,支持64KB以上的寻址空间,故在0xFFFF往上还有一段空间用于分配给ROM/FLASH。