This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8027万:HVLLC代码问题

Guru**** 2584465 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/653430/tms320f28027-hvllc-code-questions

部件号:TMS320F2.8027万
主题中讨论的其他部件:TMDSHVRESLLCKIT

您好,

我的客户正在测试主板TMDSHVRESLLCKIT。

PWMDRV_LLC_1CH_UpCntDB_Comp.ASM代码如下所示:

===========================================
PWMDRV_LLC_1CH_UpCntDB_Compl宏
===========================================
MOVW DP,#_PWMDRR_LLC_1CH_UpCntDB_Compl_Duty2;为Net Pointer加载DP
MOVL XAR0,@_PWMDRV_LLC_1CH_UptDB_Compl_Duty2;将Net指针地址加载到XAR0
MOVL XAR1,@_PWMDRV_LLC_1CH_UpCntDB_Compl_Period2;将Net指针地址加载到XAR1

MOVL ACC,* XAR1
SFR ACC,#14; ACC>>14: AL =周期(Q10)
MOVW DP,#_EPwm2Regs.TBPRD
MOV @_EPwm2Regs.TBPRD,AL;更新周期寄存器

MOVL XT,@_EPwm2Regs.TBPRD;注意这里是MOVL指令,即XT = TBPRD<16.
QMPYL ACC,XT,*XAR0;ACC =(I16Q16)*(I8Q24)=(I24Q40):高32位-> ACC =(I24Q8)  
SFR ACC,#8; ACC>> 8: AL =值班*期间(Q16)
Sub @T,AL;T = Period - Duty*Period

MOVW DP,#_EPwm2Regs.CMPA
MOV @_EPwm2Regs.CMPA.Half.CMPA,T;更新CMPA

ROR ACC;AL =值班*期间/2
Sub ACC,#13;补偿第一个样本错误
添加@T,AL

MOVW DP,#_EPwm2Regs.CMBB
MOV @_EPwm2Regs.CMBB,T;更新CMBB =占空比中点

MOVL ACC,* XAR1
SFR ACC,#14; ACC>>14: AL =周期(Q10)
MOVW DP,#_EPwm2Regs.DBFED  
Sub AL,@_EPwm2Regs.DBFED;使用FED值创建下降边距(前下降边)
MOVW DP,#_EPwm2Regs.TBPRD
MOV @_EPwm2Regs.TBPRD,AL;更新周期寄存器(使用FEM)

{\f2 .endm}

问题是:

1.为什么在写入EPwm2Regs.TBPRD等寄存器时没有"EALLOW" ? 使用3.3 一步完成后 ,EPwm2Regs.TBPRD不会更新

2.“CMPB= 0.5 *周期*责任-13+Period-Duty*周期=Period-CMP* 0.5 周期*责任-13”,评论中说,第1个样本错误的13个是补偿的,什么是样本错误,为什么是13个?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Howard:

    请参阅下面我的答案。

    1.为什么在写入EPwm2Regs.TBPRD等寄存器时没有"EALLOW" ? 使用3.3 一步完成后 ,EPwm2Regs.TBPRD不会更新

    HN:这只是因为TBPRD寄存器没有EALLOW写保护。 此信息可在用户指南中找到。

    2.“CMPB= 0.5 *周期*责任-13+Period-Duty*周期=Period-CMP* 0.5 周期*责任-13”,评论中说,第1个样本错误的13个是补偿的,什么是样本错误,为什么是13个?

    HN: 这些设备的某些初始硅需要此功能(版本A)。 简而言之,此ADC错误导致一系列背对背ADC转换的第一个转换结果不可靠。 解决方案是首先进行虚拟转换(产生额外的13个周期),然后转换所需的通道,从而提供可靠的ADC转换结果。

    我希望这能有所帮助。

    Hrishi