📄 ipark.lst
字号:
C:\tic2xx\c2000\cgtools\bin\dspa.exe IPARK.asm IPARK.obj -gls -v2xx
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:50 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
IPARK.asm PAGE 1
1 ;=====================================================================
2 ; Filename : IPARK.asm
3 ; Module Name : IPARK
4 ; Description: PARK逆变换,从同步旋转坐标系变换到两相静止坐标系。
5 ; Ualfa0 = USM0 * cos_ThetaS0 - UST0 * sin_ThetaS0
6 ; Ubeta0 = USM0 * sin_ThetaS0 + UST0 * cos_ThetaS0
7 ; 根据matlab计算,USM0、UST0和Ualfa0、Ubeta0同量纲。
8 ;
9 ; |~~~~~~~~~~~~~~~|
10 ; USM0(Q11) o----> | |----->o Ualfa0(Q11)
11 ; UST0(Q11) o----> | IPARK |
12 ; ThetaS0 o----> | |----->o Ubeta0(Q11)
13 ; |_______________|
14 ;
15 ; Note: 0<ThetaS0<7FFFh ( equivalent to 0<ThetaS0<360 deg )
16 ; Modify: 2004.6.18
17 ;=====================================================================
18 .include "f2407.h"
19 .global SINTAB_360
20 .global IPARK,IPARK_INIT ; function call
21
22 .global USM0,UST0,ThetaS0 ; Inputs
23 .global Ualfa0,Ubeta0 ; Outputs
24 .global t_ptr,ip_val,cos_ThetaS0,sin_ThetaS0,nxt_entry,delta_angle
25 .global TEMP
26
27 ;====================================================================
28 0000 IPARK:
29 ;====================================================================
30 0000 be47 SETC SXM ; Sign extension mode
31 0001 bf01 SPM 1
32 ;-----------------------------------
33 ;Calculate Sin(ThetaS0) using look-up + interpolation method
34 0002 bc04 LDP #DP_DATA
35 0003 1900! LACC ThetaS0,9
36 0004 9800! SACH t_ptr ;Table pointer = ThetaS0 * 256 /0x7FFFH
37
38 0005 be0a SFR ;Convert Interpolation value(ip_val) to Q15
39 0006 bfb0 AND #07FFFh ;Force ip_val to a positive number
0007 7fff
40 0008 9000! SACL ip_val ;ip_val存插值,Q15带符号数,这里是巧妙的地方,好好理解!
41
42 0009 bf80 LACC #SINTAB_360
000a 0000!
43 000b 2000! ADD t_ptr
44 000c a600! TBLR sin_ThetaS0 ;sin_ThetaS0 = Sin(ThetaS0) in Q15
45 000d b801 ADD #1h ;Inc Table pointer
46 000e a600! TBLR nxt_entry ;Get next entry i.e. (Entry + 1)
47 000f 1000! LACC nxt_entry
48 0010 3000! SUB sin_ThetaS0 ;Find Delta of 2 points
49 0011 9000! SACL delta_angle
50 0012 7300! LT delta_angle
51 0013 5400! MPY ip_val ;ip_val = interpolation value
52 0014 be03 PAC
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:50 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
IPARK.asm PAGE 2
53
54 0015 9800! SACH ip_val ;PM=1,去掉了一个符号位。ip_val和sin_ThetaS0同Q格式。
55 0016 1000! LACC ip_val
56 0017 2000! ADD sin_ThetaS0
57 0018 9000! SACL sin_ThetaS0 ;最终结果,Q15
58 ;-----------------------------------
59 ;Calculate Cos(ThetaS0) using look-up + interpolation method
60 0019 1000! LACC ThetaS0
61 001a bf90 ADD #8192 ;COS(A)=SIN(A+90)
001b 2000
62 001c bfb0 AND #7FFFH ;A+90>360时取低15位,相当于减去360。
001d 7fff
63 001e 9000! SACL TEMP
64
65 001f 1900! LACC TEMP,9
66 0020 9800! SACH t_ptr ;Table pointer = ThetaS0 * 256 /0x7FFFH
67
68 0021 be0a SFR
69 0022 bfb0 AND #7FFFH ;求差值
0023 7fff
70 0024 9000! SACL ip_val
71
72 0025 bf80 LACC #SINTAB_360
0026 0000!
73 0027 2000! ADD t_ptr
74 0028 a600! TBLR cos_ThetaS0
75 0029 b801 ADD #1
76 002a a600! TBLR nxt_entry
77 002b 1000! LACC nxt_entry
78 002c 3000! SUB cos_ThetaS0 ;差值,不一定正负。
79 002d 9000! SACL delta_angle
80 002e 7300! LT delta_angle ;Q15
81 002f 5400! MPY ip_val
82 0030 be03 PAC
83 0031 9800! SACH ip_val ;因为delta_angle是Q15格式,PM=1,ip_val和sin_ThetaS0同Q格式。
84
85 0032 1000! LACC ip_val
86 0033 2000! ADD cos_ThetaS0 ;由cos的性质,相加不会溢出。
87 0034 9000! SACL cos_ThetaS0 ;最终结果,Q15
88 ;-----------------------------------
89 ; Calculate the Inverse Park transform
90 ; Ualfa0 = USM0 * cos_ThetaS0 - UST0 * sin_ThetaS0
91 0035 7300! LT cos_ThetaS0
92 0036 5400! MPY USM0
93 0037 be03 PAC
94 0038 7300! LT sin_ThetaS0
95 0039 5400! MPY UST0
96 003a be05 SPAC
97 003b 9800! SACH Ualfa0 ;变换结果(Q11)
98 ; Ubeta0 = USM0 * sin_ThetaS0 + UST0 * cos_ThetaS0
99 003c 7300! LT cos_ThetaS0
100 003d 5400! MPY UST0
101 003e be03 PAC
102 003f 7300! LT sin_ThetaS0
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:50 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
IPARK.asm PAGE 3
103 0040 5400! MPY USM0
104 0041 be04 APAC
105 0042 9800! SACH Ubeta0 ;变换结果(Q11)
106 ;-----------------------------------
107 0043 bf00 SPM 0 ; SPM reset
108 0044 ef00 RET
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -