TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280X assemble code

     CONTRILSUITE中有关移相全桥有些汇编代码有点奇怪.您能否帮助解释一下,在此先谢谢!
1,;=============================
CNTL_2P2Z .macro n
;=============================
; set up address pointers
  MOVW DP, #_CNTL_2P2Z_Ref:n:
这里的N是否可以理解为参数,若N=1,如上是否可等价于….. #_CNTL_2P2Z_Ref1?将_CNTL_2P2Z_Ref1所处数据页指针给DP?同#立即数赋数值不同?
  MOVL    XAR1, @_CNTL_2P2Z_Fdbk:n:  ; net pointer to Fdbk (XAR1)
将_CNTL_2P2Z_Fdbk:n:内容给XAR1吗?
  MOVW DP,#_CNTL_2P2Z_DBUFF:n:
  MOVL XAR4, #_CNTL_2P2Z_DBUFF:n:  ; pointer to the DBUFF array (used internally by the module)
将_CNTL_2P2Z_DBUFF:n指针给XAR4吗?
  ; calculate error (Ref – Fdbk)
  MOVL ACC, *XAR0      ; ACC = Ref (Q24) = Q(24)
结合前面代码,将_CNTL_2P2Z_Ref:n:内容作为指针的值传给ACC呢?
  SUBL ACC, *XAR1         ; ACC = Ref(Q24) – Fdbk(Q24)= error(Q24)
同样,减XAR1的内容还是减指针的内容?
  MOVL *+XAR4[4], ACC     ; e(n) = ACC = error Q{30} *+XAR4[4]相当复杂,结合顺序如何,如何赋值?  
  MOV  AR0,#8

是AR0=8吗?
  MOVL XT, *+XAR4[AR0]     ; XT  = e(n-2)

 *+XAR4[AR0]如何理解?
  QMPYL P, XT, *XAR3++     ; P   = e(n-2)Q30*B2{Q26} = I8Q24

三段一般阅读规律如何,是P=XT乘*XAR3后XAR3内容或指针或值加1吗?

*XAR3++如何解读?这里如何知晓Q30,Q26,Q24?
  MOVDL XT, *+XAR4[6]     ; XT  = e(n-1), e(n-2) = e(n-1)

是先将*XAR4[6]指针+1内容给XT?
2,net pointer 是何目的,有合适中文吗?
3,Q浮点数据,如何确定是Q18,Q同一个数据,针对不同的Q有不同的10进制值.如何判定?是有接收的变量定还是输入时必须带Q标记?如下,如何确定他的10进制值?
DCDC_VLOOP_COEFF1:
.long 141465485 ; B2
4,Signal Nets和Terminal pointers中文及意义是啥?
Step3. (optional) Declare “Signal Nets” to “connect” the module to in “C”
int Net1, Net2, Net3;
Step4. Declare the module “Terminal pointers” in “C”
// CNTL_2P2Z terminal external references for 1st instantiation
extern int *CNTL_2P2Z_Ref1, *CNTL_2P2Z_Fdbk1, *CNTL_2P2Z_Out1;

 

 

  

allen huang1:悲剧,没人理会。。。。

     CONTRILSUITE中有关移相全桥有些汇编代码有点奇怪.您能否帮助解释一下,在此先谢谢!
1,;=============================
CNTL_2P2Z .macro n
;=============================
; set up address pointers
  MOVW DP, #_CNTL_2P2Z_Ref:n:
这里的N是否可以理解为参数,若N=1,如上是否可等价于….. #_CNTL_2P2Z_Ref1?将_CNTL_2P2Z_Ref1所处数据页指针给DP?同#立即数赋数值不同?
  MOVL    XAR1, @_CNTL_2P2Z_Fdbk:n:  ; net pointer to Fdbk (XAR1)
将_CNTL_2P2Z_Fdbk:n:内容给XAR1吗?
  MOVW DP,#_CNTL_2P2Z_DBUFF:n:
  MOVL XAR4, #_CNTL_2P2Z_DBUFF:n:  ; pointer to the DBUFF array (used internally by the module)
将_CNTL_2P2Z_DBUFF:n指针给XAR4吗?
  ; calculate error (Ref – Fdbk)
  MOVL ACC, *XAR0      ; ACC = Ref (Q24) = Q(24)
结合前面代码,将_CNTL_2P2Z_Ref:n:内容作为指针的值传给ACC呢?
  SUBL ACC, *XAR1         ; ACC = Ref(Q24) – Fdbk(Q24)= error(Q24)
同样,减XAR1的内容还是减指针的内容?
  MOVL *+XAR4[4], ACC     ; e(n) = ACC = error Q{30} *+XAR4[4]相当复杂,结合顺序如何,如何赋值?  
  MOV  AR0,#8

是AR0=8吗?
  MOVL XT, *+XAR4[AR0]     ; XT  = e(n-2)

 *+XAR4[AR0]如何理解?
  QMPYL P, XT, *XAR3++     ; P   = e(n-2)Q30*B2{Q26} = I8Q24

三段一般阅读规律如何,是P=XT乘*XAR3后XAR3内容或指针或值加1吗?

*XAR3++如何解读?这里如何知晓Q30,Q26,Q24?
  MOVDL XT, *+XAR4[6]     ; XT  = e(n-1), e(n-2) = e(n-1)

是先将*XAR4[6]指针+1内容给XT?
2,net pointer 是何目的,有合适中文吗?
3,Q浮点数据,如何确定是Q18,Q同一个数据,针对不同的Q有不同的10进制值.如何判定?是有接收的变量定还是输入时必须带Q标记?如下,如何确定他的10进制值?
DCDC_VLOOP_COEFF1:
.long 141465485 ; B2
4,Signal Nets和Terminal pointers中文及意义是啥?
Step3. (optional) Declare “Signal Nets” to “connect” the module to in “C”
int Net1, Net2, Net3;
Step4. Declare the module “Terminal pointers” in “C”
// CNTL_2P2Z terminal external references for 1st instantiation
extern int *CNTL_2P2Z_Ref1, *CNTL_2P2Z_Fdbk1, *CNTL_2P2Z_Out1;

 

 

  

wang wang hongxing:

回复 allen huang1:

我也在用这个移向全桥的例子做程序,对汇编是懂非懂。

感觉上在C程序中定义的变量用以下与汇编中用到的变量捆绑

// Lib Module connection to "nets" //—————————————-// ADC feedback connections ADCDRV_4ch_RltPtrA = &Adc_VavgBus[1]; ADCDRV_4ch_RltPtrB = &Adc_VavgBus[2]; ADCDRV_4ch_RltPtrC = &Adc_VavgBus[3]; ADCDRV_4ch_RltPtrD = &Adc_VavgBus[4];

 ADCDRV_1ch_Rlt2 = &Adc_Ifb; ADCDRV_1ch_Rlt3 = &Adc_Vfbin; ADCDRV_1ch_Rlt9 = &Adc_Iout;

// 2P2Z connections for the outer Voltage Loop CNTL_2P2Z_Ref1 = &VfbSetSlewed;     // Slewed Voltage command CNTL_2P2Z_Out1 = &Iref;       // Reference command to the current loop CNTL_2P2Z_Fdbk1 = &Avg_Vout;     // Avg. FB O/P Voltage feedback CNTL_2P2Z_Coef1 = &CNTL_2P2Z_CoefStruct1.b2; // point to first coeff.

// DAC connections DACDRV_RAMP_In1 = &Iref;      // Controls the DAC reference voltage

然后程序中只管使用变量值,变量值在运行已经被中断程序HVPSFB-DPL-ISR.ASM修改过,至于中断程序中是怎么修改的,可以不考虑。如果考虑就要看看28X的汇编手册,能查到每条语句是什么意思,应该不至于理解不了。参见TMS320C28x Assembly Language Tools v6.2 User's Guide (Rev. F)

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280X assemble code
分享到: 更多 (0)