单片机
返回首页

MSP430第一章:系统介绍

2022-08-24 来源:csdn

1.系统控制模块(SYS)介绍

SYS负责整个系统中各个模块之间的交互,其提供的功能不是模块本身自有的。地址解码、总线仲裁、中断事件整合和复位生成是SYS提供的许多功能的一些例子。


2.系统重启和初始化

系统重启电路如图所示,有断电复位(BOR)、上电复位(POR)、上电清除(PUC)三个来源。不同的事件触发这些信号并产生不同的初始条件。

以下事件会产生BOR:


设备上电

在重启模式下RST/NMI引脚低电平

一个事件从LPMx.5唤醒设备

软件BOR事件

违反安全事件

以下事件会触发POR:


BOR信号(BOR总是会产生POR,反之则不然)

SVSH或者SVSM低电平信号

SVSL或者SVSL低电平信号

软件POR信号

以下事件会触发PUC:


POR信号

看门狗到期

看门狗密码错误

Flash密码错误

电源管理模块密码错误

外围模块产生


2.1 系统重启后的设备初始化

BOR之后设备初始条件如下:


RST/NMI配置为重启模式


I/O引脚设置为输入


状态寄存器重置


看门狗启动


程序计数器(PC)装载启动代码的地址,一旦完成启动代码,PC将被装入SYSRSTIV中断地址 (0FFFEh)


系统重置之后,用户软件必须根据需要初始化设备,一下操作是必要的:


初始化堆栈指针,典型值是RAM的顶部

根据需要初始化看门狗

配置外围模块


3.中断

中断优先级是固定的,由连接链中模块的排列顺序决定,如图所示。当多个中断同时挂起时,中断优先级决定了需要哪个中断。MSP430包含三种类型的中断:


系统中断

不可屏蔽中断

可屏蔽中断

3.1 不可屏蔽中断(NMI)

NMI分为系统不可屏蔽中断(SNMI)和用户不可屏蔽中断(UNMI),两者都不可被GIE屏蔽。NMI源由单独的中断启用位启用。当一个NMI中断被接受时,该级别的其他NMI被自动禁用,以防止同一级别的连续NMI嵌套。

以下事件能够产生UNMI:


在NMI模式下RST/NMI引脚产生边缘信号

振荡器错误

Flash访问冲突

以下事件能够产生SNMI:

电源模块SVML/SVMH供电错误

电源模块高低侧延时超时

访问空内存

JATG邮箱事件


3.2 NMI时序

在用RETI指令完成SNMI处理程序之后,发生频率比处理频率高的连续中断(中断风暴),允许主程序,在SNMI再次执行之前,执行一条指令。

3.3 可屏蔽中断

可屏蔽中断是由具有中断能力的外围设备引起的。每个可屏蔽中断源可以被一个中断启用位单独禁用,或者所有可屏蔽中断可以被状态寄存器(SR)中的通用中断启用(GIE)位禁用。


3.4 中断处理

当外设请求中断,并且设置了外设中断使能位和GIE位时,中断服务程序会被执行。中断延迟是6个周期,从接受中断请求开始,一直持续到中断服务程序的第一条指令开始执行为止。


以下是通用中断步骤:


任何当前正在执行的指令都已完成

指向下一条指令的PC被压入堆栈

SR被推到栈上

如果在最后一条指令期间发生了多个中断并等待服务,则选择优先级最高的中断

中断请求标志在单源标志上自动重置。多个源标志仍然被设置为软件服务

除了SCG0, SR的所有位都被清除,从而终止任何低功耗模式。由于GIE位已被清除,进一步的中断将被禁用

将中断向量的内容加载到PC上,程序在该地址继续中断服务程序

在这里插入图片描述

由于采用流水线CPU结构,设置通用中断启用(GIE)需要特别注意:


在启用中断指令(EINT)之后,指令将会立即执行,即使有中断服务正在挂起

在清除中断使能/标志与EINT之间至少插入一条指令,例如在EINT指令前插入NOP指令

在DINT和需要防止中断保护的代码序列的开始之间至少包含一条指令。例如:在DINT之后插入NOP指令

永远不要在设置完通用中断启用(GIE)后立即清除它。在这些序列之间插入至少一条指令。

以上规则适用于所有设置或清除通用中断启用位的指令。不遵循这些规则可能会导致意外的CPU执行。


中断处理程序以RENTI指令终止,返回指令需要5个时钟周期:


具有前面所有设置的SR将从堆栈中弹出。不管中断服务程序期间使用的设置是什么,所有之前的GIE、CPUOFF和其他设置现在都生效了

PC从堆栈中弹出,并在它被中断的地方开始执行

在这里插入图片描述

3.5 中断嵌套

如果在中断服务程序中设置了GIE位,则中断嵌套被启用。当中断嵌套被启用时,在中断服务程序期间发生的任何中断都会中断这个程序,而不管中断优先级是多少。


3.6 中断向量

中断向量位于地址范围0FFFFh到0FF80h,对于一个最大的64个中断源。矢量由用户编写程序,指向相应的中断服务程序的起始位置。

在这里插入图片描述

使用RAM作为中断向量位置的替代位置是可能的。设置在SYSCTL中的SYSRIVECT位导致中断向量重新映射到RAM的顶端,一旦设置,任何中断向量现在驻留在RAM中的备用位置。因为SYSRIVECT在BOR上被自动清除,所以中断向量被重置到0FFFEh和在固件中正确处理是至关重要的。


3.7 系统中断向量生成器

SYS收集所有模块的SNMI 源、UNMI源和BOR/POR/PUC源,它们被组合成三个中断向量。中断向量寄存器SYSRSTIV, SYSSNIV, SYSUNIV用于确定请求中断或重置的标志。当组中优先级最高的中断被启用时,在相应的SYSRSTIV, SYSSNIV, SYSUNIV寄存器中产生一个数字。这个数字可以直接添加到程序计数器上,导致中断服务程序的适当部分出现分支。禁用中断不会影响SYSRSTIV、SYSSNIV、SYSUNIV的值。读取SYSRSTIV, SYSSNIV, SYSUNIV寄存器会自动重置该寄存器的最高挂起中断标志。如果设置了另一个中断标志,则在服务于初始中断后立即产生另一个中断。向SYSRSTIV, SYSSNIV, SYSUNIV寄存器写入会自动重置组的所有挂起的中断标志。


4.运行模式

运行模式考虑了三种不同的需求:


超低功耗

速度与数据吞吐量

最大限度地减少单个外围电流的消耗

CPUOFF、OSCOFF、SCG0和SR中的SCG1位配置低功耗模式LPM0 ~ LPM4。在SR中包含CPUOFF、scoff、SCG0和SCG1模式控制位的优点是,在中断服务例程期间,当前的操作模式被保存到堆栈中,如果保存的SR值在中断服务程序期间没有改变,程序流返回到以前的操作模式。通过修改中断服务程序内部堆栈上保存的SR值,程序流可以返回到不同的操作模式。当设置任何模式选择位时,所选的操作模式立即生效。外围设备也可以通过其单独的控制寄存器设置禁用。


当进入LPMx.5 (LPM3.5或LPM4.5),电源管理模块的稳压模块(PMM)禁用。所有的RAM和寄存器内容都丢失了。虽然I/O寄存器的内容丢失了,但是I/O引脚状态在LPMx上被锁定。从LPM4.5唤醒可能来自电源序列、RST事件或特定的I/O。从LPM3.5中唤醒可能来自电源序列、RST事件、RTC事件或特定的I/O。

在这里插入图片描述
在这里插入图片描述

5. 低功耗应用准则

通常,降低功耗的最重要因素是尽可能使用设备时钟系统最大化LPM3或LPM4模式下的时间:


使用中断唤醒设备控制程序流

只有当需要时启用外围设备

采用低功耗集成外设模块代替软件驱动功能。例如,Timer_A和Timer_B可以在没有CPU资源的情况下自动生成PWM并捕获外部定时

使用计算分支和快速表查找来代替标记轮询和复杂计算

避免频繁调用子程序和子函数造成的开销

对于较长的软件程序,应该使用单周期CPU寄存器

写入RAM控制寄存器RCCTL0,将所有不可用和未使用的段设置为低功耗状态(= 1)

如果应用程序具有低占空比、慢响应时间事件,最大化处于LPMx.5模式的时间


6. JTAG引脚

JTAG引脚与通用I/O引脚共享。BOR之后,SYSCTL寄存器中的SYSJTAGPIN位被清除。清除SYSJTAGPIN后,带有JTAG功能的引脚被配置为通用I/O。在这种情况下,只有TEST和RST/NMI引脚上的特殊序列才能启用JTAG功能。只要测试引脚被拉到DVCC,引脚就会保持其JTAG功能。如果测试引脚被释放到DVSS,共享的JTAG引脚将恢复为通用I/ o。如果SYSJTAGPIN = 1, JTAG引脚将永久配置为4线JTAG模式,并保持该模式,直到另一个BOR条件发生。如果MSP430设备是JTAG链的一部分,则尽早在软件中使用该特性。注意,这也会禁用监听双线模式。

SYSJTAGPIN是一个只写一次的函数。用软件清除是不可能的。


7. 启动代码

启动代码总是在BOR之后执行。启动代码加载工厂存储的振荡器校准值和参考电压。此外,它检查用户定义的引导带加载程序(BSL)是否存在。


8. 引导装载程序(BSL)

BSL使用户能够在原型设计阶段、最终生产和服务期间与微控制器中的嵌入式内存进行通信。BSL可以根据需要修改所有的内存映射资源,包括可编程存储器(flash)、数据存储器(RAM)和外设。用户可以为基于闪存的设备定义自定义BSL代码,并防止擦除和无意或未经授权的访问。

在没有USB的设备上,TI提供了一个基本的BSL程序。这支持常用的UART协议与RS232接口,允许灵活使用硬件和软件。要使用BSL,特定的BSL输入序列必须应用于特定的设备引脚。正确的输入顺序将导致SYSBSLIND被设置。增加的命令顺序将启动所需的功能。引导加载会话可以通过在定义的用户程序地址继续操作或应用标准重置序列来退出。BSL对设备内存的访问是通过用户定义的密码来防止误用的。带有USB的设备有TI提供的基于USB的BSL程序。


9. 空闲内存空间

空闲内存指不存在的内存空间。当中断使能(VMAIE = 1)时,访问不存在的内存空间会产生SNMI,从空闲内存读取会得到3FFFh。访问空闲的外围空间会导致一个PUC。

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 光控电路设计与分析

  • IGBT模块通过控制门极阻断过电流

  • CCFL的工作原理及电子驱动电路解析

  • 开关电源的基本组成及工作原理

  • 基于M66T旋律发​​生器的电路图解析

  • 基于CA3193的热电偶放大器电路

    相关电子头条文章