数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx

上传人:b****3 文档编号:6553317 上传时间:2023-05-06 格式:DOCX 页数:16 大小:51.65KB
下载 相关 举报
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第1页
第1页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第2页
第2页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第3页
第3页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第4页
第4页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第5页
第5页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第6页
第6页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第7页
第7页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第8页
第8页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第9页
第9页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第10页
第10页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第11页
第11页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第12页
第12页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第13页
第13页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第14页
第14页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第15页
第15页 / 共16页
数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx

《数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx(16页珍藏版)》请在冰点文库上搜索。

数字信号处理技术05电压信号的采集交流电机的模拟参数输入分析Word格式.docx

//该程序用于进行A/D转换,A/D转换的结果保存在DRESULT[16]中,寄

//存器ceshi用于测试每个A/D转换的结果

#include"

register.h"

intADRESULT[16];

//定义一个数组用于保存AD转换的结果

volatileunsignedint*j;

//定义一个指针变量

inti=0x00,ceshi;

//屏蔽中断子程序

voidinlinedisable()

{

asm("

setcINTM"

);

}

//开总中断子程序

voidinlineenable()

clrcINTM"

//系统初始化子程序

voidinitial()

setcSXM"

//符号位扩展有效

clrcOVM"

//累加器中结果正常溢出

clrcCNF"

//B0被配置为数据存储空间

*SCSR1=0x81FE;

//CLKIN=6MHz,CLKOUT=4*CLKIN=24MHz

*WDCR=0x0E8;

//不使能看门狗

*IMR=0x0001;

//允许INT1中断

*IFR=0x0FFFF;

//清除全部中断标志,“写1清0”"

//AD初始化子程序

voidadinit()

*T2CNT=0x0000;

//T2计数器清0

*T2CON=0x170C;

//T2为连续增计数模式,128分频,选用内部时钟源

*T2PER=0x75;

//设置T2的周期寄存器

*GPTCONA=0x400;

//T2周期中断标志触发AD转换

*EVAIFRB=0x0FFFF;

//清除EVA中断标志,“写1清0”

*ADCTRL1=0x10;

//采样时间窗口预定标位ACQPS3-ACQPS0为0,

//转换时间预定标位CPS为0,AD为启动/停止模式,

//排序器为级连工作方式

*ADCTRL2=0x0504;

//EVA的一个事件信号触发AD转换,用中断模式1

*MAXCONV=0x0F;

//16通道

*CHSELSEQ1=0x3210;

*CHSELSEQ2=0x7654;

*CHSELSEQ3=0x0BA98;

*CHSELSEQ4=0x0FEDC;

//转换通道是0~15

//启动AD转换子程序(通过启动定时器4的方式间接启动)

voidADSOC()

*T2CON=*T2CON|0x40;

//启动定时器2

//若是其它中断则直接返回子程序

voidinterruptnothing()

return;

//AD中断服务子程序

voidinterruptADINT()

asm(“clrcSXM”);

//抑制符号位扩展

j=RESULT0;

//取得RESULT0的地址

for(i=0;

i<

=15;

i++,j++)

ADRESULT[i]=*j>

>

6;

//把AD转换的结果左移6位后存入规定的数组

ceshi=ADRESULT[i];

//检验每个A/D转换的结果

}

*ADCTRL2=*ADCTRL2|0x4200;

//复位SEQ1,且清除INTFLAGSEQ1。

enable();

//开总中断,因一进入中断总中断就自动关闭了

main()

disable();

//禁止总中断

initial();

//系统初始化

adinit();

//AD初始化子程序

enable();

//开总中断

ADSOC();

//启动AD转换

while

(1)

if(i==0x10)break;

//如果已发生中断,则停止等待(发生中断后,i=0x10)

*T2CON=*T2CON&

0x0FFBF;

//停止定时器2,即间接停止A/D转换

;

}//死循环,在实际的工程应用中在此可以利用A/D转换的结果

3.4TMS320LF240x常用汇编指令

3.4.1TMS320LF240xDSP汇编指令的寻址方式

1.立即数寻址

2.直接寻址

3.间接寻址

3.4.2TMS320LF240xDSP的常用汇编指令

1.ABS,累加器取绝对值

2.ADD,累加器加

3.ADDC,带进位的累加器加

4.ADDS,符号扩展抑制的累加器加

5.ADRK,辅助寄存器加短立即数

6.AND,和累加器进行与操作

7.B,无条件跳转

8.BACC,跳转到累加器指定的地址

9.BANZ,辅助寄存器非0跳转

10.BCND,条件跳转

11.CALA,累加器指定地址的子程序调用

12.CALL,无条件子程序调用

13.CC,条件子程序调用

14.CLRC,控制位清零

15.CMPL,累加器逻辑取反

16.CMPR,辅助寄存器与AR0比较

17.IN,从端口读入数据

18.INTR,软件中断

19.LACC,带移位的累加器装载

20.LACL,装载累加器低16位,高16位清0

21.LAR,辅助寄存器装载

22.LDP,数据页指针装载

23.LT,暂存寄存器装载

24.LST,状态寄存器装载

25.LTD,TREG寄存器装载、累加前一次乘积并数据移动

26.MAR,修改辅助寄存器

27.MPY,乘

28.MPYU,乘无符号数

29.NEG

30.NMI,非屏蔽中断

31.NOP,空操作

32.OR,与累加器进行或操作

33.OUT,输出数据到端口

34.PAC,乘积寄存器内容装载到累加器

35.POP,堆栈顶内容弹出到累加器低16位

36.PUSH,累加器低16位压入堆栈

37.RET,子程序返回

38.RPT,重复执行下一条指令

39.SACH,存储累加器移位后的高16位

40.SACL,存储累加器移位后的低16位

41.SAR,存储辅助寄存器

42.SBRK,辅助寄存器减去短立即数

43.SETC,控制位置位

44.SPAC,累加器减乘积寄存器

45.SPH,存储乘积寄存器的高16位

46.SPLK,长立即数存储到数据存储单元

47.SPM,将立即数赋给乘积移位模式PM位

48.SST,存储状态寄存器

49.SUB,累加器减

3.5交流电机的模拟参数输入程序

3.5.1交流电机的模拟参数输入汇编语言主程序

1.所需的复位和中断向量定义文件“vectors.asm”

//该文件利用汇编语言代码定义了复位和中断向量

.title“vectors.asm”;

此文件名为vectors.asm

.sect“.vectors”;

定义主向量段

b_c_int0;

复位向量

bGISR1;

中断优先级1,ADC中断属于INT1

bPHANTOM

reservedbPHANTOM

sw_int8bPHANTOM

sw_int31bPHANTOM

.sect“.pvecs”;

定义子向量段

PVECTORSbPHANTOM;

保留向量地址偏移量0000H

bPHANTOM;

保留向量地址偏移量0001H

保留向量地址偏移量0002H

保留向量地址偏移量0003H

bADCINT_ISR;

向量地址偏移量0004H为ADC中断

保留向量地址偏移量0005H

bPHANTOM;

保留向量地址偏移量00041H

2.主程序Dyxhcj.asm

主程序:

.include"

引用头部文件

st0_temp.usect“.b20”,1;

分配1个字的空间给st0_temp

st1_temp.usect“.b20”,1;

分配1个字的空间给st1_temp

context.usect“.b20”,7;

分配7个字的空间给context

STACK.usect“.stack”,40;

分配40个字的空间给STACK

ADRESULT.usect“.data0”,8;

分配8个字的空间给ADRESULT

.def_c_int0;

定义标号_c_int0

.text;

下列指令为可执行代码

_c_int0

SETCINTM

CLRCSXM

CLRCOVM

CLRCCNF

LDP#0E0H

SPLK#81FEH,SCSR1;

CLKIN=6MHz,CLKOUT=4*CLKIN=24MHz

SPLK#0E8H,WDCR;

关看门狗

LDP#0

SPLK#0001H,IMR;

允许INT1中断

SPLK#0FFFFH,IFR;

清除所有中断标志

CALLADINIT;

初始化ADC程序

CLRCINTM;

开全局中断

CALLAD;

启动模数转换程序

WAIT:

NOP

BWAIT

ADC初始化程序

ADINIT:

LDP#232;

设置通用定时器2

SPLK#0000H,T2CNT;

计数器清0

SPLK#170CH,T2CON;

连续增计数模式,输入时钟=CPU时钟/128

SPLK#075H,T2PR;

定时器周期中断时间

SPLK#0400H,GPTCONA;

由定时器2的周期中断启动模数转换

SPLK#0FFFFH,EVAIFRB

SPLK#0000H,EVAIMRB;

屏蔽定时器2的周期中断,但不影响

定时器2定时周期到时相应的中断标

志位置1,从而启动模数转换。

LDP#DP_PF2;

设置ADC控制寄存器

SPLK#0000H,ADCCTRL1;

双排序器工作模式,启动/停止模式,CPS=0

ADC中断请求为高优先级

SPLK#0400H,ADCCTRL2;

SEQ1采用中断模式1,不使能SEQ2中断

SPLK#0007H,MAXCONV;

8个通道的转换

SPLK#0000H,CHSELSEQ1

SPLK#0000H,CHSELSEQ2

RET

AD:

LDP#DP_PF2

LACLADCCTRL2

OR#2000H;

EVA事件触发启动SEQ1

SACLADCCTRL2

LDP#232

LACLT2CON

OR#40H;

启动定时器2

SACLT2CON

中断程序

GISR1:

INT1中断子程序入口

保护现场

LDP#0;

保存上下文

SST#0,st0_temp;

保存ST0的内容到st0_temp

SST#1,st1_temp;

保存ST1的内容到st1_temp

SACLcontext;

保存ACC的低16位,context=(AL)

SACHcontext+1;

保存ACC的高16位,context+1=(AH)

SARAR1,context+2;

context+2=(AR1)

SARAR2,context+3;

context+3=(AR2)

SARAR3,context+4;

context+4=(AR3)

SARAR4,context+5;

context+5=(AR4)

SARAR5,context+6;

context+6=(AR5)

LDP#0E0H;

DP=E0H,页首地址为7000H(E0H*80H)

LACCPIVR,1;

PIVR的内容左移一位后送入ACC

ADD#PVECTORS;

加上外设中断入口地址

BACC;

跳到相应的中断服务子程序

ADCINT_ISR:

CLRCSXM;

抑制符号扩展

LDP#DP_SARAM2

LARAR0,#8;

(AR0)=8

LARAR1,#ADRESULT;

(AR1)=ADRESULT

LARAR2,#RESULT0;

(AR2)=RESULT0,转换结果存储在位15~位6

MAR*,AR2

ADC1:

得到8个转换结果,依次存放在地址为(AR1)+2*n的存储器区间

LACC*+,10,AR1;

(ACC)=((AR2))<

<

10,(AR2)=(AR2)+1

SACH*;

((AR1))=(AH)=右对齐的转换结果

ADRK#2;

(AR1)=(AR1)+2

MAR*,AR0

BANZADC1,*-,AR2

若(AR0)≠0,则跳转到ADC1;

(AR0)=(AR0)-1

LDP#DP_PF2;

一次转换结束,8个通道的转换结果全部读出

LACLADCCTRL2;

(ACC)=(ADCCTRL2)=(00000400H)

OR#4000H;

复位SEQ1

AND#0FFDFH;

清INTFLAGSEQ1

LACLT2CON

AND#0FFBFH;

停止定时器2,即停止A/D转换

GISR1_RET:

中断返回出口

LDP#DP_EVA

SPLK#0FFFFH,EVAIFRA

LARAR5,context+6

LARAR4,context+5

LARAR3,context+4

LARAR2,context+3

LARAR1,context+2

LACCcontext+1,16

ADDScontext

LST#1,st1_temp

LST#0,st0_temp

恢复现场

CLRCINTM;

开总中断,因为一进中断就自动关闭了总中断

假中断程序

PHANTOM

KICK_DOG;

复位看门狗

END

3.5.2交流电机的模拟参数输入汇编语言主程序分析

1.程序执行过程

2.采样过程说明

3.数字量与模拟量的关系

            (3.1)

4.ADCINT中断向量地址的获取

5.A/D转换的转换周期

A/D转换的转换周期可被分成5个阶段:

1启动时序同步(SOS同步)。

2采样时间(ACQ)。

3转换时间(CONV)。

4结束转换时间(EOC)。

5序列转换完成后设置标志位时间(EOS)。

此设计中A/D转换的转换周期=2+16+80+8+1=107个CLKOUT时钟周期。

6.定时器2的定时周期中断时间T

定时器在连续增计数模式下,定时器周期的时间为TxPR+1个定标的时钟输入周期,此设计中,,T=(117+1)*128/CPU时钟频率=118*128个CLKOUT时钟周期。

作业

3.2简述模数转换模块(ADC)的工作原理。

3.3简述模数转换模块(ADC)的两种工作方式的特点。

3.5简述TMS320LF2407A实现交流电机转速测量的过程。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2