文档库 最新最全的文档下载
当前位置:文档库 › MSP430FE42X应用参考手册

MSP430FE42X应用参考手册

带嵌入式信号处理的电能计量微控制器

MSP430FE42x

说明

德克萨斯仪器MSP430系列是由具有不同的模块组合特性、针对单相电能计量应用的一些器件组成的超低功率微控制器家族.微控制器以低功耗工作设计。由于它的16位RISC 结构、16位的CPU集成寄存器、和常数发生器,MSP430获得了最大代码效率。带数字控制振荡器的锁频环FLL+提供从低功耗模式到活动模式小于6us的迅速唤醒。MSP430xE42x 系列是由一个16位内建定时器、一个带用于单相电能计量应用(cESP430E1)的模数转换器的嵌入式信号处理模块、128段驱动能力和14个I/O引脚配置成微控制器。

典型应用于包括抗干扰仪表在内的各种不同的单相电能计量。

处理单元

处理单元基于一个一致的正交CPU和指令集。这种设计结构导致一个对应用开发高度透明并以编程简单著称的类RISC体系。所有操作,除了程序流指令以外,自然都是作为寄存器操作,结合7种源寻址方式和4种目的操作数寻址方式来执行的.

CPU

CPU有16个寄存器提供精简指令执行时间.寄存器到寄存器操作执行时间被减少到处理器频率的一个周期.

4个寄存器被保留,专门用作程序计数器,堆栈计数器,状态寄存器,和常数发生器.其余的寄存器可用作通用寄存器.

外设利用一个数据地址和控制总线连接到CPU,并能容易利用内存处理指令操作.

指令集

指令集为这种寄存器-寄存器结构提供了一种强大和易用的汇编语言。这个指令集由三种格式和七种寻址方式的51条指令组成.表1给出了三类指令格式的总结和例子,寻址方式在表2中列出.

表1 指令字格式

大多数指令能够对字和字节数据操作,字节操作由后缀B标识.

例:字操作指令字节操作指令

MOV EDE,TONI MOV.B EDE,TONI

ADD #235h,&MEM ADD.B #35h,&MEM

PUSH R5 PUSH.B R5

SWPB R5 -

表2 寻址方式说明

寻址方式s d 语法例子操作

寄存器√√MOV Rs, Rd MOV R10, R11 R10→R11

索引√√MOV X(Rn), Y(Rm)MOV 2(R5),6(R6)M(2 + R5) →M(6 + R6) 符号(PC相

对)

√√MOV EDE, TONI M(EDE) → M(TONI) 绝对√√MOV &MEM,

TCDAT

M(MEM) → M(TCDAT) 间接√MOV @Rn, Y(Rm) MOV @R10,Tab(R6)M(R10) →M(Tab + R6)

间接自动增量√MOV @Rn+, RM MOV @R10+, R11M(R10)→R11,R10 + 2→

R10

直接√MOV #X, TONI MOV #45, TONI #45→ M(TONI) 注意: s =源 d =目的

计算分支(BR)和子程序调用(CALL)指令使用与其它指令相同的寻址方式.这些寻

址方式提供间接寻址,理想地适合于计算分支和调用.编程能力的完全使用允许程序结构不

同于传统的8位和16位控制器.例如,许多程序可以很容易地设计成使用指针和堆栈处理,以取代使用标志类型的程序用于流程控制。

工作方式

MSP430的工作方式支持超低功率和超低能耗的多种高级需求.通过在不同的模块工作

方式和CPU状态期间的工作智能管理实现,在中断事件处理期间需求被完全支持。一个中

断事件将系统从任一种工作方式中唤醒,并用RETI指令返回到中断事件发生以前选择的方式。使用的时钟是ACLK、SMCLK和MCLK。

ACLK是晶体频率,MCLK和SMCLK是ACLK的任意倍数或来自晶体振荡器。MCLK

和SMCLK用作系统时钟和子系统时钟。

软件可以配置6种工作方式:

活动方式AM:SCG1=0,SCT0=0,OscOff=0,CPUOff=0。

低功率方式0(LPM0):SCG1=0,SCG0=0,OscOff=0,CPUOff=1。

低功率方式1(LPM1): SCG1=0, SCG0=1, OscOff=0, CPUOff=1。

低功率方式2(LPM2): SCG1=1, SCG0=0, OscOff=0, CPUOff=1。

低功率方式3(LPM3):SCG1=1, SCG0=1, OscOff=0, CPUOff=1。

低功率方式4(LPM4):SCG1=X, SCG0=X, OscOff=1, CPUOff=1。

各种工作方式是通过软件控制内部时钟系统的工作来控制的.这个时钟系统提供大量软硬件

性能的组合来运行最低功耗和最优系统成本的应用:

利用内部时钟(DCO)发生器,无外部元件。

为获得最低频率和成本,选择一个外部晶体或陶瓷虑波器。

应用外部时钟源。

最影响时钟系统工作并支持从低功率工作方式打开的控制位位于状态寄存器SR中。有4个位

控制CPU和系统时钟发生器:SCG1、SCG0、OscOff,和CPUOff。

15 9 8 7 6 5 4 3 2 1 0

保留V SCG1SCG0OscOff CPUOff GIE N Z C rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

当系统时钟发生器的基本功能确定以后,CPUOff、SCG1、SCG0和OscOff位是最重要的低功率控制位.无论何时一个中断被认可,这些位就被压入堆栈并保存,用于返回中断请求之前的工作.在一中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些位;这样在中断返回(RETI)之后,程序能够以另一种功率工作方式继续运行.

CPUOff: 置位时,关闭CPU(禁止MCLK)。

SCG0: 置位时,禁止FLL+环路控制。

SCG1: 置位时,禁止DCOCLK信号。

OscOff: 置位时,禁止LFXT1晶体振荡器-如果ACLK无须用于看门狗中的WDT+模块(见看

门狗定时器说明)。

直流发生器: 当SCG0和SCG1位都置位时,用于DCO的直流发生器被禁止。-如果看门

狗方式中的WDT模

块无需DCO时钟的话(另外见看门狗定时器说明)。

引导ROM包含引导装载程序(bootstrap loader)

引导程序装载程序的目的是将数据下载到闪速存储器。各种写,读,和擦除操作需要正确的下载环境。

引导装载程序的功能:

读定义:将外设寄存器或存储器的数据施加并发送到引脚P1.0/TA0(BSLTX)。

写定义:从引脚P1.1/TA0/MCLK(BSLRX)读数据并把他们写进闪速存储器。

未保护的功能:

块擦除,主存储器(段0到段n)和信息存储器(段A和段B)的擦除。通过引导装载程序对MSP430的访问受到保护。

在任何受保护的功能能够执行以前必须被使能。从0FFE0h到0FFFFh中的256位提供访问键值。

受保护的功能:

所有受保护的功能仅当访问允许时才能执行。

闪速存储器字节写/编程;传递参数是起始地址和字节数(闪速存储器的段写特性对UART协议不支持也没用)。

主存储器中段0到段n的段擦除和信息存储器中的段A和段B的段擦除。

读主存储器和信息存储器中的所有数据

读写全部字节的外设模块和RAM。

修改PC并立即启动程序执行。

注意:通过用户在中断存储器区域定义数据,预防代码和数据的非授权读出。

引导装载程序的特性:

UART通信协议,固定9600波特率

端口引脚P1.0/TA0用于发送,P1.1/TA0/MCLK用于接收.

TI标准串行协议定义。

仅在闪速存储器版本的器件中实现。

程序从用户矢量0FFFEh或者引导装载程序(启动矢量0C00h)开始执行。

用于串行输入输出的硬件资源:

引脚P1.0/TA0和P1.1/TA0/MCLK,用于串行数据传输。

TCK和RST/NMI,在复位矢量或引导装载程序矢量处启动程序执行。

FLL+模块,SCFI0=0,SCFI1=98h,SCG0=1。

基本时钟模块:

Rsel=5,DCO=4,MOD=0,DCOCLK和时钟分频器用于产MCLK和SMCLK,缺省分频值:1(不)分频。

Timer_A:Timer_A工作于连续模式,用选择的MCLK驱动,输入分频器设置为1,使用CCR0并轮询CCIFG0。

WDT:看门狗定时器停止。

中断:GIE=0,NMIIE=0,OFIFG=0,ACCVIFG=0

堆栈的利用依赖于启动条件:

通过RST/NMI和TCK引脚启动:使用6字节堆栈。堆栈指针初始化为220H。

通过软件启动(例如BR &0C02h):使用实际栈顶的6字节。

RAM:使用20字节,从地址220H开始,最后地址是219h

注意:当通过自动装载程序写RAM时,请确保堆栈在数据写入地址范围以外。

如果在RST/NMI从低到高时TCK保持为高,程序从用户复位矢量FFFEH处开始执行(标准方式)。

如果在RST/NMI为低期间,有至少两个负沿施加到TCK,然后当RST/NMI由低变高时TCK为低,程序将从自动加载矢量0C00H(引导ROM)开始执行。

注意:4.TCK的,缺省电平为高,必须施加一个有效的低电平以进入引导装载程序。其它有利用缺省低电平引脚的MSP430器件可以使用相反的信号。

5.当TCK施加时钟时,TMS必须为高。这样确保JTAG控制器功能保持在它的正常方式。

引导装载程序不会(通过地址0C00H矢量)启动,如果:

RST/NMI为低时,TCK上的负沿少于两个。

当RST/NMI由低到高时TCK为高。

JTAG已经控制了MSP430的资源。

电源电压下降,执行了POR。

RST/NMI引脚配置为NMI功能(NMI位置1)。

闪速存储器

由于可以重复编程,MSP430闪速微控制器提供了巨大的灵活性,闪速存储器可以通过JTAG 端口,引导装载程序,和CPU自身编程。另外,CPU能够执行对闪速存储器的单字节和单字的写操作。闪速存储器的其它特性包括:

闪速存储器有n段主存储器和每段128字节的两段信息存储器(A和B)。主存储器中每个段长为512字节。

段0到n可以一步擦除,也可以每段分别擦除。

段A和B可以分别擦除,或与段0到n作为一组擦除。

安全熔丝烧断是不可逆的;然后对JTAG进一步的访问完全不可能。

编程/擦除电压的内部产生:无须使用任何外部元件,但是VCC需求的电源电流增大。

编程和擦除定时由闪速存储器中的硬件控制,无需软件干涉。

控制硬件被成为闪速定时发生器,其输入频率应该处于合适的频率范围内,并应一直保持直到写/编程和擦除操作完成。

在编程和擦除期间,没有代码能从闪速存储器执行,而且通过设置GIE,NMIE,ACCVIE和OFIE位为0,必须禁止所有中断。如果一个用户程序需要与一个闪速

编程和擦除程序并发执行,该程序必须从闪速存储器以外的存储器执行(例如引导

ROM,RAM)。在程序计数器指向闪速存储器时,如果发生一个闪速存储器编程

或擦除操作事件,CPU将执行JMP $指令直到闪速编程或擦除操作完成。然后,

先前运行的软件继续正常执行。

未编程的新器件在信息存储器中可能有一些已经编程的字节(用于生产期间的测试)。在首次使用之前

用户应该执行一次对信息存储器的擦除。

周边设备

外设通过数据,地址,和控制总线连接到CPU,并易于用内存操作指令处理。

振荡器和系统时钟

三个时钟被用于系统:

主系统(主)时钟MCLK,由系统和CPU使用。

子系统(主)时钟SMCLK,由周边模块使用。

辅助时钟ACLK,产生于LFXT1CLK(晶体频率),由周边模块使用。

图1.FLL+振荡器和系统时钟框图

ACLK通过连接一个一个低功率低频晶体到振荡器,或者连接一个高频晶体(XTS_FLL 必须被置位),或者施加一个外部时钟源来来定义。如果ACLK振荡器无须用于当前的工作模式时可以关闭。

软件选择DCOCLK频率。SCG1位复位时DCOCLK激活,置位时DCOCLK停止当SCG0和SCG1复位时,直流发生器可以被停止。定义了基本DCO频率的直流发生器,可以利用控制位FN2、FN3、FN4、FN8进行5级调整。

MCLK从DCOCLK(SELM{0,1})、XT2CLK(SELM=2)、ACLK(SELM=3)中选择。MCLK 初始时钟源是DCOCLK。

SMCLK在两个时钟源之间选择:DCOCLK(SELS=0,初始态)和XT2CLK(SELS=1)。XT2CLK 由在振荡器(XT2IN,

XT2OUT)连接一个高频晶体,或在XT2IN施加一个外部时钟源来定义。当XT2振荡器无须用于当前工作模式时,晶体振荡器可以关闭。

MCLK和SMCLK频率的启动条件与MSP430x3xx器件中的FLL相同,但是必须用地址053H的寄存器FLL+CTL0的OscCap位选择正确的XIN和XOUT引脚电容。ACLK可以通过端口引脚P1.5供外部使用,可以被1,2,4,8分频。这样确保时钟信号兼容于MSP430x3xx和MSP430x4xx家族。4个振荡器故障位,DCOF,XT1OF,LFOF,和XT2OF分别指示DCO、LFXT1振荡器HF方式、LFXT1振荡器LF方式、和XT2振荡器是否正常工作。振荡器故障XT1OF仅适用于XTS_FLL=1,LFOF仅适用于XTS_FLL=0。如果发生了其中一

种故障,OSCFault信号将置位OFIFG标志。若中断使能位OFIE置位,就请求一次NMI服务。

警告

如果振荡器停止,振荡器故障标志置位。停止的原因可能是由于晶体损坏、断脚等系统故障导致的。但也可

能是由振荡器打开时,或者从未选择到选择转换时引起的。

时钟信号ACLK,MCLK和SMCLK可以通过端口引脚供外部使用。

不同的应用需求和系统条件规定了不同的系统时钟需求。FLL+时钟系统支持以下情形:

为快速反应系统硬件请求和事件,用高频(DCO/FLL+XT1)。

为最小化电流消耗和EMI等,用低频(LF)。

稳定的外部时钟用于实时时钟(RTC)等定时器应用。

允许起停工作以最小延迟(DCO)。

图2. 掉电管理和电源监控框图

掉电管理和电源监控

掉电管理电路检测VCC端子是否有电源电压施加或移除,并复位适当的器件。

电源监控(SVS) 电路检测电源电压是否降落到用户选择的电平。并同时支持电源电压管理(器件自动复位)和电源电压监控(SVM,器件不是自动复位)。SVS电路如图2所示。SVS的初始状态是关闭的,以节约电流消耗。用户需要时,用户软件应使能SVS。

VLD位控制SVS电路的通断状态。若VLD=1,SVS关闭,VLD=0,SVS打开。位PORON使能或禁止MSP430依据低压检测的复位。若PORON=1,低压检测产生一个POR信号并复位MSP430。位SVSOP用于监视实际的比较器输出。

只要检测到低压情形,位SVSFG置位,并保持置位直到检测不到低电压,然后被软件复位。SVSFG锁定这样的事件,尽管SVSOP代表了实际的比较器输出。

如果希望它仅仅监视电源电压,但是在电压下跌到判决电压以下时不复位器件,用户简单地复位PORON位并设置正常电平即可。这样提供SVM功能。SVM功能是有用的,例如,执行A/D 转换时,用户要知道在转换进行时电源电压是否下跌到最小工作电压以下。

当VCC接近门限电平时,SVS电路使用滞后来减小对电压下降的敏感性。对每个SVS电平的滞后表示在下表中。

SVS/SVM有些延迟,如下所示。如果它是使能的,Delay1用于消除错误的SVS/SVM操作(VLD从0到>0改变)。只要VLD(寄存器SVSCTL)被改变,SVSon位就为低,时间为t(delay2),当VLD=0时,SVSon为低。

图3 由VLD触发的t(Delay1)和t(Delay2)时序

SVS电平是用户可编程的。另外,任何施加到P2.3/SVSIN的电压都可以被监视。电平由控制位VLD定义。

数字I/O

有两个已实现的8位I/O端口-端口P1和P2。他们使用7个控制寄存器为应用提供数字输入/输出的最大灵活性。

所有单个I/O位可独立编程。

任何输入、输出、和中断条件的结合都是可能的。

端口P1和P2的所有8位均已完全实现对外部事件的中断处理。

利用所有指令对所有寄存器读写访问都是可能的。

这7个控制寄存器是:

输入寄存器,8位,在端口P1和P2

输出寄存器,8位,在端口P1和P2

方向寄存器,8位,在端口P1和P2

中断沿选择,8位,在端口P1和P2

中断标志,8位,在端口P1和P2

选择寄存器(端口或模块),8位,在端口P1和P2

这些寄存器中每个寄存器包含8个位。两个中断矢量已实现:一个共用于端口P1。0到P1.7的所有中断事件,另一个共用于端口P2.0到P2.7的所有中断事件。

基本定时器1

基本定时器1(BT1)对由SSEL位选择的SMCLK或ACLK分频,以提供低频控制信号。这是在系统内有一个中枢分频器完成的,以支持低电流应用。BTCTL控制寄存器包含了控制或选择不同的运行功能的标志。当电源电压施加,或一个器件复位(RST/NMI引脚),一个看门狗溢出或看门狗安全键值违例时,所有寄存器中的位保持不确定或未改变的状态。用户软件通常在初始化期间在BT上配置工作条件。基本定时器1有两个8位定时器,可以级联成一个16位定时器。两个定时器可以通过软件进行读写。根据实现的基本功能,在SFR地址范围内,有两个位运作系统控制作用。这两个位是基本定时器1中断标志(BTIFG)位,和基本定时器1中断使能(BTIE)位。

LCD驱动

表3. 数字I/O-LCD段线的端子功能

LCDM7 LCDM6 LCDM

5

端子功能

0 0 0 引脚S0 – S23: LCD功能;

引脚P2.1/UCLK/S24 – P1.2/TA1/S31: 数字I/O功能

0 0 1 引脚S0 – S23: LCD功能;

引脚P2.1/UCLK/S24 – P1.2/TA1/S31: 数字I/O功能

0 1 0 引脚S0 – S23: LCD功能;

引脚P2.1/UCLK/S24 – P1.2/TA1/S31: 数字I/O功能

0 1 1 引脚S0 – S23: LCD功能,

引脚P2.1/UCLK/S24 – P1.2/TA1/S31: 数字I/O功能

1 0 0 引脚S0 – P1.6/SIMO/S27: LCD功能;

引脚P1.5/TACLK/ACLK/S28–P1.2/TA1/S31:数字I/O功能

1 0 1 引脚S0 – P1.2/TA1/S31: LCD功能

1 1 0 引脚S0 – P1.2/TA1/S31: LCD功能

1 1 1 引脚S0 – P1.2/TA1/S31: LCD功能

静态、2-MUX、3-MUX、4-MUX工作的液晶显示器可以直接驱动。控制器LCD逻辑的工作由软件通过内存位操作来定义。LCD存储器是LCD模块的一部分,不是数据存储器的一部分。8个方式-控制位定义LCD驱动器的工作和电流消耗。利用查表编程技术,结合适当的寻址方式,容易获得单个数字的段驱动信息。利用内存处理指令,段信息存储到LCD存储器中。

驱动能力由外部电阻分压器规定,它们提供2-、3-、4-MUX工作的模拟电平。数字I/O-LCD 段引线组可以选择8个I/O或LCD段驱动功能。在POR和PUC之后缺省选择数字I/O功能。LCD提供4个公共引线和4个端子用于调整模拟电平。MSP430FE42x配置有32个段线。

WDT+看门狗定时器

看门狗定时器(WDT)模块的基本功能是当软件发生混乱时执行一次受控系统重启。如果选择的事件间隔到期,产生一次系统复位。如果应用程序不需要看门狗功能,这个模块可以作为一个间隔定时器工作。在选择的时间以后产生中断。

看门狗定时器(WDT)的计数器(WDTCNT)是一个15/16位递增计数器,不直接通过软件访问。

WDTCNT通过看门狗定时器控制寄存器(WDTCTL),一个8位读/写寄存器控制。在认一种工作方式(看门狗或定时器)中,只有在高字节中使用正确的口令(05AH)时才有可能对WDTCTL写入。任何05Ah以外的数值写入WDTCTL的高字节,将产生一次系统复位PUC。读出的口令是069h,以最小化对WDTCTL寄存器的意外写操作。低字节存储写往WDTCTL 的数据。除了看门狗定时器的控制位外,还有两位也包含在WDTCTL寄存器中,用于配置NMI引脚。

同标准WDT模块比较,MSP430FE427的看门狗定时器WDT+有额外的安全功能实现,以确保所有条件下复位。

这需要看门狗定时器获得一个任意条件下的时钟。

如果MCLK是WDT的时钟源并且WDT运行于看门狗方式,必须确保DCO不能关闭。这意味着如果HOLD、TMSEL和SSEL被清除,那么通过置位SCG1禁止DCO是不可能的。这样,如果看门狗功能被禁止或ACLK用作时钟源,它只能被切换到低功耗模式2或3(LPM2,LPM3)。

如果ACLK是WDT的时钟源且WDT运行于看门狗方式,必须确保振荡器不能关闭。这意味着如果HOLD和TMSEL被清除且SSEL置位的话,通过置位OSCOff位禁止振荡器是不可能的。这样,如果看门狗功能被禁止,只能切换到低功耗方式4。

此外如果振荡器失败而且WDT从ACLK运行,需要确保WDT得到一个有效时钟。这意味着ACLK如果ACLK被选作WDT时钟(WDTCTL.SSEL置位),并且WDT运行于看门狗方式(WDTCTL.TMSEL和WDTCTL.HOLD清除),并且一个振荡器故障条件被侦测,那么WDT的输入时钟源将被自动切换到MCLK。如果MCLK由SCG1禁止,SCG1的置位将被改写,DCO将被使能。请注意,通常MCLK比ACLK要快些,这样看门狗定时器将较早地到期。推荐利用振荡器故障中断采取适当的行动。

USART

在MSP430X44X中有两个已实现的USART外设:USART0和USART1;但是在MSP430X43X的配置中仅有一个:USART0。两者具有相同的功能,在MSP430X1XX User's Guide的适当章节中已说明。他们用不同的引脚通信,用不同的寄存器进行模块控制。功能相同的寄存器具有不同的地址。

通用同步/异步接口是一个用于串行通信的专用外设模块。利用双缓冲的发送和接收通道,USART支持同步SPI(3或4脚),和异步UART通信。7位或8位长度的数据流能够按一个由程序或外部时钟决定的速率传送。通过UART模块选项,允许仅接收一个完整帧的第一个字节,低功率应用得以优化。然后,应用软件应该判决是否处理了成功的数据。这个选项减小了功率消耗。

两个专用矢量被分配给每一个USART模块-一个用于接收通道,一个用于发送通道。

定时器_A(三个比较/捕获寄存器)

定时器_A模块提供一个十六位计数器和三个捕获/比较寄存器。定时器时钟源可以选自外部源TACLK(通过SSEL=0正相,通过SSEL=3反相),或另外两个内部时钟源,或从两个内部源ACLK(SSEL=1)或SMCLK(SSEL=2)选择。时钟源可以被1、2、4或8分频。定时器可以完全得到控制(用字方式)–它可以停止,读和写;它可以被停止,连续运行,增计数或增/减计数,使用一个比较块来确定周期。这三个捕获/比较块可通过应用程序配置以运行于捕获或比较方式。

捕获方式主要用于利用信号的正沿、负沿或正负沿的任一组合,测量外部或内部事件。也可以由软件停止。三个不同的外部事件可以选择:TA0、TA1和TA2。在捕获/比较寄存器CCR2中,如果选择CCI2B,ACLK就是俘获信号。如果CCISx=2或CCISx=3,软件俘获被选中。

比较方式主要用于为软件或应用硬件产生定时,或为象D/A转换功能或马达控制等各种用途产生脉宽调制(PWM)输出信号。一个独立的输出模块被分配给三个俘获/比较寄存器的每一个。模块可独立运行于比较功能,或以各种方式触发。

模块使用两个中断矢量。一个矢量分配给捕获/比较块CCR0,一个共用中断矢量用于定时器和另外两个俘获/比较块。三个中断事件使用相同的矢量,由各自的中断矢量字来识别。中断矢量字用于为程序计数器增加一个偏移,这样中断处理软件在在相应的程序位置继续运行。这简化了中断处理程序,同时给每个中断事件带来相同的五个周期的经常开销。

图4. 带三个捕获/比较寄存器的定时器配置

用于单相电能计量的嵌入式信号处理

概述

单相电能计量的嵌入式信号处理在一个模块内集成了1相电能计量所必须的模拟前端和数字信号处理部分。

模拟前端由3个带可编程增益放大器的∑-△ ADC组成。用这三个ADC通道,对电流进行两次测量是可能的-这是构造抗干扰仪表的需要。

CESP430E1按标准原理执行全部必需的信号处理。软件只需提供校准数值,得到计算的整数数值,并将其乘以一个常数因子就得到最终结果。应用笔记说明了具体的细节。

图5. ESP430CE1的简单框图

内部注意(不包含在官方数据表中)

ESP430-处理器: MSP430 处理器内核带硬件乘法器

ROM: 4k字节

RAM: 256字节 (RAM保存校准参数和ESP430的内部数值和堆栈)

DP-RAM: 32字 (16位) 用于返回值。

EN bit0 使能ESP430

在禁止ESP430之前,它应处于空闲模式。

ESP430禁止并处于其复位状态。CPU可以访问模拟前端寄存器。 0:

1:ESP430使能。通过CPU对模拟前端寄存器的访问被禁止。

挂起ESP430。

SUSP bit1

如果ESP430是禁止的(EN=0),此位无效。

再此位置位以前,ESP430应处于空闲模式中。

0:ESP430激活(若EN=1)。

1:ESP430挂起,可以通过CPU访问模拟前端寄存器。

IREQ bit2 不被当前的ESP430软件所支持!

Bit3-15 保留

返回寄存器

在下面的寄存器中,ESP430返回电能计算的结果。

表3. cESP430E1 返回寄存器摘要

RET5 波形采样I1 r 电流I1的值—正确的偏移

RET6 波形采样I2 r 电流I1的值—正确的偏移

RET7 保留r

RET8 有功能量1低字节 r

RET9 有功能量1高字节 r

RET10 有功能量2低字节 r

RET11 有功能量2高字节 r

RET12 无功能量低字节 r

RET13 无功能量高字节 r

RET14 视在能量低字节 r

RET15 视在能量高字节 r

RET16 每周期有功能量1低字节 r

RET17 每周期有功能量1高字节 r

RET18 每周期有功能量2低字节 r

RET19 每周期有功能量2高字节 r

RET20 功率因数 r

RET21 感性/容性指示r

RET22 电网周期 r

INT r 线电压的RMS值

RET23 VRMS

INT r 线电流的RMS值

RET24 IRMS

RET25 IRMS实际值r 电流RMS值—小数部分

RET26 Vpeak r 最近1秒的绝对峰值电压

RET27 Ipeak r 最近1秒的绝对峰值电流

RET28 线周期计数器低字节 r

RET29 线周期计数器高字节 r

RET30 测量计数器低字节r

RET31 测量计数器高字节r

注意,上电时只有两个状态寄存器复位,其余寄存器将在ESP430被使能之后由ESP430初始化。

信息

MSP430CPU和ESP430可以通过一个邮箱中断机制相互通信。有两个输入邮件寄存器,两个输出邮件寄存器,和一个控制寄存器。

邮箱控制寄存器

输入邮件0中断标志。

bit0

IN0IFG

输入邮件0中断标志通知在接收邮件寄存器0中是否有一个新的有效消息。

如果CLR0OFF没有置位,通过读输入邮件寄存器0(MBIN0),标志自动清除。 IN1IFG

输入邮件1中断标志。

bit1

输入邮件1中断标志通知在接收邮件寄存器1中是否有一个新的有效消息。

如果CLR1OFF没有置位,通过读输入邮件寄存器1(MBIN1),标志自动清除。

OUT0FG bit2 输出邮件0标志。

如果一个消息写进了输出邮件寄存器0中,输出邮件0标志置位。

当ESP430处理过消息以后,该位自动清除。

输出邮件1标志.

OUT1FG

bit3

如果一个消息写进了输出邮件寄存器1中,输出邮件1标志置位。

当ESP430处理过消息以后,该位自动清除。

IN0IE bit4 输入邮件0中断使能

IN1IE bit5 输入邮件1中断使能

CLR0OFF bit6 此位置位禁止通过读输入邮件寄存器0(MBIN0)自动清除中断

标志IN0IFG。中断标志需要通过软件清除来通知消息已被处

理。

CLR1OFF bit7 此位置位禁止通过读输入邮件寄存器1(MBIN1)自动清除中断

标志IN1IFG。中断标志需要通过软件清除来通知消息已被处

理。

OUT0IFG bit8 输出邮件0中断标志。

如果MBOUT0中的消息已被ESP430处理,输出邮件0中断标志

置位。即,如果OUT0FG位被清除(由1变到0),OUT0IFG位将

置位。输出邮件0中断标志可以由软件清除或通过写MBOUT0

寄存器自动清除。

OUT1IFG bit9 输出邮件1中断标志。

如果MBOUT1中的消息已被ESP430处理,输出邮件1中断标志

置位。即,如果OUT1FG位被清除(由1变到0),OUT1IFG位将

置位。输出邮件1中断标志可以由软件清除或通过写MBOUT1

寄存器自动清除。

OUT0IE bit10 输出邮件0中断使能。

OUT1IE bit11 输出邮件1中断使能。

Bit12-15 保留.

输出邮件寄存器

要发送给ESP430的消息写进输出邮件寄存器。首先,跟消息有关的数据写进输出邮件寄存器1(MBOUT1)。然后,消息写进输出邮件寄存器0(MBOUT0)。ESP430通过清除邮箱控制寄存器(MBCTL)中的位OUT0FG和OUT1FG,确认消息已处理。

mov #50, &MBOUT1 ;数据送入MBOUT1

mov #SET_NOMFREQ,&MBOUT0 ;命令送入MBOUT0

WAIT_MSG ;等待消息处理完

bit.b #OUT0FG+OUT1FG,&MBCTL

jnz WAIT_MSG

消息可以分割成两组:控制消息和参数消息。下表总结了可以送给ESP430的消息和相关数据。ESP430假定在

CPU给ESP430发送命令之前,CPU已经处理了所有从ESP430接收到的命令。

SET_CTRL0 0200 控制微设置控制0寄存器

SET_CTRL1 0202 -

SET_EVENT 0204 事件标志选择欲产生事件消息发送的状态标志。

SET_PHASECORR1 0206 设置电流I1在标称电网频率处的相位修正(fNOM).

SET_PHASECORR2 0208 设置电流I2在标称电网频率处的相位修正(fNOM).

SET_V1OFFSET 020A 设置电压V1的偏移量修正.

SET_I1OFFSET 020C 设置电流I1的偏移量修正.

SET_I2OFFSET 020E 设置电流I2的偏移量修正.

SET_ADAPTI1 0210 设置设置电流I1的匹配因子.

VDROP置位

SET_RATIOTAMP 022E 设置I1和I2之间的比率以检测干扰. SET_ITAMP 0230 设置噪声检查最小电流.

SET_VDROPDLEVEL 0232 设置下跌检测电压V DROP.

SET_VPEAKLEVEL 0234 设置峰值电压V PEAK. 电压超过此值将置位状态标志

VPEAK. SET_IPEAKLEVEL 0236 设置峰值电流IPEAK.电流超过此值将值位状态标志

或 I2 PEAK.

EAK SET_DCREMPER 0238 设置用于去直流的周期数.

邮件输入寄存器

由ESP430发送的消息将置位邮箱控制寄存器中的IN0IFG(和IN1IFG如果message有关联数据),消息可以从输入邮箱寄存器(MBIN0:命令;MBIN1:关联数据)读出。

;邮箱中断服务子程序

MAILBOX_ISR

;禁止邮箱中断标志的自动复位

; (如果初始化中没有完成.-主程序序列)

bis #CLR0OFF+CLR1OFF, &MBCTL

cmp #EVENT_MSG, &MBIN0 ;事件消息收到?

jne END_MAILBOX_ISR ;No-> 忽略消息

;否则对发送到MBIN1中的标志采取必要的行动

;例如: set/clear P1.1 依据事件位0

bit #1, &MBIN1 ;Bit 0 set?

jnz BIT0_EVENT

bic #2, P1OUT ;No-> Clear P1.1

BIT0_EVENT

bis #2, P1OUT ;Yes-> Set P1.1

;End of example

MAILBOX_ISR

bic #IN0IFG+IN1IFG, &MBCTL ;指示消息处理完成

reti

由ESP430发送的消息总结于下表中.

表6. 来自ESP430的消息

助记符值数据说明

EVENT 0001 状态标志会导致事件设置的状态标志. TEMPRDY 0003 温度值温度测量完成,在MBIN1中. SWRDY 0005 软件版本软件版本在MBIN1中. PARAMRDY 0007 参数值 READ——PARAM命令必需的参

数,在MBIN1中.

PARAMSET 0009 参数号给出参数号的参数被成功设置. ESP430状态

ESP430工作在图6表示的不同的状态。用控制消息可以(也表示在图6中)迫使ESP430在确定的状态连续运行。下表概括了不同状态的功能。

表7. 来自ESP430的消息

状态命令功能

RESET RESET 参数的启动并初始化,并以返回缺省值

INIT INIT 模拟前端的内部校准.

IDLE SET_MODE: IDLE 等待消息.

MEASURE SET_MODE: MEASURE 测量.

CALIBRATION SET_MODE: CALIB 测量至给出的线周期数并在完成后回跳到

IDLE

相关文档