⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svpwm(hw).asm

📁 TI公司的TMS320LF2407A DSP含有硬件实现SVPWM的功能。通过对硬件的正确设置可以产生电压空间矢量PWM波
💻 ASM
📖 第 1 页 / 共 2 页
字号:
/*三相交流异步电动机SVPWM开环调速控制程序(硬件法)*/
.INCLUDE "240X.H"          ; 寄存器地址
;--------------------------------------以下定义变量-----------------------------------------------------------
.BSS TEMP,1                  ;临时变量
.BSS SET_F,1                 ;频率调节比,Q15格式(值为0-1,对应0-50Hz)
.BSS F_OMEGA,1             ;频率调节比-角频率转换率,Q5格式
.BSS OMEGA,1               ;调制波角频率,Q5格式
.BSS SET_V,1                 ;参考电压,Q14格式
.BSS T_SAMPLE,1             ;采样周期,Q24格式
.BSS THETA_H,1              ;参考电压相位角高字,Q12格式
.BSS THETA_L,1              ;参考电压相位角低字,Q12格式
.BSS THETA_R,1              ;相位角的圆整值,Q12格式
.BSS THETA_M,1             ;相位查表值(0-90度),Q12格式
.BSS THETA_I,1              ;相角查表索引,Q9格式
.BSS SS,1                    ;SIN符号,Q0格式
.BSS SC,1                    ;COS符号,Q0格式
.BSS SIN_INDX,1             ;SIN表索引,Q0格式
.BSS SIN_ENTRY,1            ;SIN表入口地址
.BSS SIN_END,1              ;SIN表结束地址
.BSS SIN_THETA,1            ;SINθ值,Q14格式
.BSS COS_THETA,1            ;COSθ值,Q14格式
.BSS UA,1                    ;参考电压D轴分量UA,Q13格式
.BSS UB,1                    ;参考电压Q轴分量UB,Q13格式
.BSS THETA_S,1               ;θ-扇区数转换系数,Q15格式
.BSS SECTOR,1                ;参考电压所在的扇区数,Q0格式
.BSS THETA_90,1               ;90度,Q12格式
.BSS THETA_180,1              ;180度,Q12格式
.BSS THETA_270,1              ;270度,Q12格式
.BSS THETA_360,1              ;360度,Q12格式
.BSS DEC_MS,24               ;6个逆阵,Q14格式
.BSS T1_PERIODS,1            ;定时器1周期值,Q5格式
.BSS CMP_1,1                 ;第1基本矢量,Q0格式
.BSS CMP_2,1                 ;第2基本矢量,Q0格式
.BSS SVPAT,1                  ; ACTRA的空间矢量字
; -------------------------------------CONTEXT段,定义保护现场数据区---------------------------
ST0_SAVE  .USECT ".CONTEXT",1   ;状态寄存器ST0保存单元
ST1_SAVE  .USECT ".CONTEXT",1   ;状态寄存器ST1保存单元
ACCH      .USECT ".EXTCONT",1     ;ACC高字保存单元
ACCL      .USECT ".EXTCONT",1     ;ACC低字保存单元
AR0_SAVE  .USECT ".EXTCONT",1  ;AR0保存单元
P_HI       .USECT ".EXTCONT",1       ;P寄存器高字保存单元
P_LO       .USECT ".EXTCONT",1      ;P寄存器低字保存单元
T_SAVE     .USECT ".EXTCONT",1    ;T保存单元
;--------------------------------------定义主向量段------------------------------------------------------
.SECT  ".VECTORS"              ;定义主向量段
RESET  B  _C_INT0          ;地址0000H,复位,优先级1
INT1   B  PHANTOM        ;地址0002H,INT1,优先级4
INT2   B  _C_INT2           ;地址0004H,INT2,优先级5
INT3   B  PHANTOM        ;地址0006H,INT3,优先级6
INT4   B  PHANTOM        ;地址0008H,INT4,优先级7
INT5   B  PHANTOM        ;地址000AH,INT5,优先级8
INT6   B  PHANTOM        ;地址000CH,INT6,优先级9 
       RESERVED  B  PHANTOM			;地址000EH,测试,优先级10
        SW_INT8   B  PHANTOM		;地址0010H,自定义软中断
SW_INT9   B  PHANTOM		;地址0012H,自定义软中断
SW_INT10  B  PHANTOM		;地址0014H,自定义软中断
SW_INT11  B  PHANTOM		;地址0016H,自定义软中断
SW_INT12  B  PHANTOM		;地址0018H,自定义软中断
SW_INT13  B  PHANTOM		;地址001AH,自定义软中断
SW_INT14  B  PHANTOM		;地址001CH,自定义软中断
SW_INT15  B  PHANTOM		;地址001EH,自定义软中断
SW_INT16  B  PHANTOM		;地址0020H,自定义软中断
TRAP	   B  PHANTOM			;地址0022H,TRAP矢量
NMI	  	   B  PHANTOM			;地址0024H,NMI,优先级3
EMU_TRAP B  PHANTOM			;地址0026H,仿真Trap,优先级2
SW_INT20  B  PHANTOM		;地址0028H,自定义软中断
SW_INT21  B  PHANTOM		;地址002AH,自定义软中断
SW_INT22  B  PHANTOM		;地址002CH,自定义软中断
SW_INT23  B  PHANTOM		;地址002EH,自定义软中断
SW_INT24  B  PHANTOM		;地址0030H,自定义软中断
SW_INT25  B  PHANTOM		;地址0032H,自定义软中断
SW_INT26  B  PHANTOM		;地址0034H,自定义软中断
SW_INT27  B  PHANTOM		;地址0036H,自定义软中断
SW_INT28  B  PHANTOM		;地址0038H,自定义软中断
SW_INT29  B  PHANTOM		;地址003AH,自定义软中断
SW_INT30  B  PHANTOM		;地址003CH,自定义软中断
SW_INT31  B  PHANTOM		;地址003EH,自定义软中断
;--------------------------------------定义子向量段----------------------------------------------------------
.SECT  ".PVECS"                ;定义子向量段
PVECTORS	B	PHANTOM			;偏移地址0000H 
			B	PHANTOM  			;偏移地址0001H
			B	PHANTOM			;偏移地址0002H
			B	PHANTOM			;偏移地址0003H
			B	PHANTOM			;偏移地址0004H
			B	PHANTOM			;偏移地址0005H
			B	PHANTOM			;偏移地址0006H
			B	PHANTOM			;偏移地址0007H
			B	PHANTOM			;偏移地址0008H
			B	PHANTOM			;偏移地址0009H
			B	PHANTOM			;偏移地址000AH
			B	PHANTOM			;偏移地址000BH
			B	PHANTOM			;偏移地址000CH
			B	PHANTOM			;偏移地址000DH
			B	PHANTOM			;偏移地址000EH
			B	PHANTOM			;偏移地址000FH  
			B	PHANTOM			;偏移地址0010H
			B	PHANTOM			;偏移地址0011H
			B	PHANTOM			;偏移地址0012H
			B	PHANTOM			;偏移地址0013H
			B	PHANTOM			;偏移地址0014H
			B	PHANTOM			;偏移地址0015H
			B	PHANTOM			;偏移地址0016H
			B	PHANTOM			;偏移地址0017H 
			B	PHANTOM			;偏移地址0018H
			B	PHANTOM			;偏移地址0019H 
			B	PHANTOM			;偏移地址001AH
			B	PHANTOM			;偏移地址001BH
			B	PHANTOM			;偏移地址001CH
			B	PHANTOM			;偏移地址001DH
			B	PHANTOM			;偏移地址001EH
			B	PHANTOM			;偏移地址001FH
			B	PHANTOM			;偏移地址0020H
			B	PHANTOM			;偏移地址0021H 
			B	PHANTOM			;偏移地址0022H
			B	PHANTOM			;偏移地址0023H
			B	PHANTOM			;偏移地址0024H
			B	PHANTOM			;偏移地址0025H
			B	PHANTOM			;偏移地址0026H 
			B	PHANTOM			;偏移地址0027H 
			B	PHANTOM			;偏移地址0028H
			B	T1UF_ISR			;偏移地址0029H
			B	PHANTOM			;偏移地址002AH
			B	PHANTOM			;偏移地址002BH
			B	PHANTOM			;偏移地址002CH
			B	PHANTOM			;偏移地址002DH
			B	PHANTOM			;偏移地址002EH
			B	PHANTOM			;偏移地址002FH 
			B	PHANTOM			;偏移地址0030H
			B	PHANTOM			;偏移地址0031H
			B	PHANTOM			;偏移地址0032H
			B	PHANTOM			;偏移地址0033H
			B	PHANTOM			;偏移地址0034H
			B	PHANTOM			;偏移地址0035H
			B	PHANTOM			;偏移地址0036H
			B	PHANTOM			;偏移地址0037H
			B	PHANTOM			;偏移地址0038H
			B	PHANTOM			;偏移地址0039H
			B	PHANTOM			;偏移地址003AH
			B	PHANTOM			;偏移地址003BH
			B	PHANTOM			;偏移地址003CH
			B	PHANTOM			;偏移地址003DH
			B	PHANTOM			;偏移地址003EH
			B	PHANTOM			;偏移地址003FH
			B	PHANTOM			;偏移地址0040H
			B	PHANTOM			;偏移地址0041H
;--------------------------------------以下是主程序------------------------------------------------------
.TEXT
;--------------------------------------系统初始化程序--------------------------------------------------
_C_INT0    
            SETC   INTM               ; 禁止中断
CLRC  CNF                 ;B0为数据存储区
LDP    #224
SPLK   #0000001000000100B,SCSR1 ;CLKIN 10M,CLKOUT 20M
SPLK   #68H,WDCR            ;不用看门狗
LDP    #225
LACC  MCRA
OR     #0FC0H             ;设置PWM1-6引脚
SACL   MCRA
;--------------------------------------中断初始化程序--------------------------------------------------
LDP    #0  
SPLK   #0FFH,IFR            ; 清所有系统中断标志
SPLK   #00000010B,IMR      ; 开INT2中断
LDP    #232         
SPLK   #0FFFH,EVAIFRA     ; 清事件管理器A所有中断标志
SPLK   #0FH,EVAIFRB 
SPLK   #0FH,EVAIFRC 
SPLK   #0200H,EVAIMRA     ; 开T1下溢中断
SPLK   #0,EVAIMRB          ; 屏蔽所有中断
SPLK   #0,EVAIMRC          ; 屏蔽所有中断
;--------------------------------------初始化事件管理器A程序--------------------------------------
SPLK   #500,T1PR           ; T1周期值=50 us/50ns/2=500
SPLK   #500,CMPR1         ; 占空比初值 0%
SPLK   #500,CMPR2
SPLK   #500,CMPR3
SPLK   #0000011001100110B,ACTRA  ; 引脚PWM1,3,5高有效,2,4,6低有效
SPLK   #01F4H,DBTCONA     ; 死区时间1*32*50ns=1.6us
SPLK   #1001001000000000B,COMCONA  ;允许比较,使用硬件空间矢量
SPLK   #0000100001000010B,T1CON ;连续增减计数方式,预分频=1
CLRC  INTM                     ; 开总中断
;--------------------------------------变量初始化程序--------------------------------------------------
            LDP    #6                       ; 指向B1
SPLK   #0347H,T_SAMPLE      ;采样周期=50us *224=839秒=347H, Q24格式
SPLK   #16000,T1_PERIODS       ;T1周期值的Q5格式,500*32
SPLK   #11585,MAX_V           ; 最大参考电压幅值1/ ,Q14格式
SPLK   #0,SET_F                ; SET F=0
SPLK   #10053,F_OMEGA        ;频率调节比-角频率转换率,Q5格式
                      ;当SET_F=1时,对应最大角频率2π50Hz*25=10053
SPLK   #0,THETA_L             ;θ低字,Q12格式
SPLK   #0,THETA_H             ; θ高字,Q12格式
LAR   AR0,#THETA_90          ; 传送常用角度和逆阵数据
LAR   AR1,#(28-1)              ; 28个
LACC  #ANGLES_              ; 指向源
LARP  AR0 
INIT_TBL   
            TBLR  *+,AR1                  ; 下一个
ADD   #1                       ; 下一个地址
BANZ  INIT_TBL,AR0            ;AR1=0结束 
SPLK   #29335,THETA_I           ; 相角查表索引,180/π,Q9格式
SPLK   #31291,THETA_S          ; θ-扇区数转换系数,6/(2π),Q15格式
SPLK  #SIN_ENTRY_,SIN_ENTRY    ;SIN表起始地址
SPLK  #(SIN_ENTRY_+90),SIN_END  ;SIN表结束地址
;--------------------------------------主循环程序(SET_F由外部输入)---------------------------------
MAIN_LOOP   
            LDP  #6
LT    SET_F                  ; 将频率调节比(Q15格式)转换成角频率
MPY  F_OMEGA               ; Q20
PAC                          ; 积送ACC, Q4格式
SACH  OMEGA,1               ; 保存角频率,Q5格式
LACC  OMEGA 
            LT    SET_F                   ;将频率调节比(Q15格式)转换成参考电压
MPY  MAX_V                 ; Q15*Q14=Q29
PAC 
SACH  SET_V,1                ; 保存参考电压幅值,Q14格式
B     MAIN_LOOP              ; 循环
;--------------------------------------假中断处理----------------------------------------------------------
PHANTOM  
            CLRC     INTM 
            RET
;--------------------------------------T1下溢中断处理子程序-----------------------------------------
_C_INT2    
            SST   #ST0,ST0_SAVE          ; 保存现场ST0
SST   #ST1,ST1_SAVE          ; 保存ST1
LDP   #5 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -