主题中讨论的其他器件: C2000WARE、 SysConfig
您好!
我想 在 APWM 模式下使用 ECAP4、它可与 TMS320F280049C 的 EXTSYNCIN2同步
我已经 按照 TI 参考手册将 ECAP4设置为与 EXTSYNCIN2同步。
但它不起作用、ECAP4 APWM 输出将在 EXTSYNCIN2输入上漂移。
请检查此代码设置、波形和 CCS 寄存器读取值如下所示。
请参考 C2000_C2000_SDK_4_00_00\solutions\TIDM_02002上的函数定义 Ware_Digital。
请尽快答复我。
非常感谢。
香港特区政府
* 同步 IO 设置
EALLOW;
GPIO_setDirectionMode (25、GPIO_DIR_MODE_IN);
GPIO_setQualificationMode (25、GPIO_QUAL_SYNC);
GPIO_setPinConfig (GPIO_25_GPIO25);
//将 Input-XBAR INPUT6配置为 ExtSynCIn2的 GPIO25
XBAR_setInputPin (XBAR_INPUT6、25);
EDIS;
XBAR_setOutputMuxConfig (XBAR_OUTPUT8、XBAR_OUT_MUX06_ECAP4_OUT);
XBAR_enableOutputMux (XBAR_OUTPUT8、XBAR_MUX06);
GPIO_setPadConfig (17、GPIO_PIN_TYPE_STD);
GPIO_setPinConfig (GPIO_17_OUTPUTXBAR8);
* ECAP4"同步输入/输出设置*****
EALLOW;
//禁用到 SYNCO
HWREGH (ECAP4_BASE + ECAP_O_ECCTL2)|=(0x3U<<ECAP_ECCTL2_SYNCO_SEL_S);
HWREGH (ECAP4_BASE + ECAP_O_ECCTL2)&=~ECAP_ECCTL2_SWSYNC;
EDIS;
SYSCTL_setSyncInputConfig (SYSCTL_SYNC_IN_ECAP4、SYSCTL_SYNC_IN_SRC_EXTSYNCIN2);
EALLOW; //写入 SYNCI_EN
HWREGH (ECAP4_BASE + ECAP_O_ECCTL2)|= ECAP_ECCTL2_SYNCI_EN;
EDIS;
* SysCtl_setSyncInputConfig 函数定义 :
静态内联空
SYSCTL_setSyncInputConfig (Ctl_Sync 输入、Sys45g Ctl_Sync syncSrc)
{
uint32_t clearMask;
//
//将输入同步源选择写入相应的寄存器。
//
EALLOW;
if (syncInput == SYSCTL_SYNC_IN_EPWM1)
{
//
//请注意,EXTSYNCIN1是 ePWM1的唯一有效选项
//
HWREG (SYNCSOC_BASE + SYSCTL_O_SYNCSELECT)&=
~SYSCTL_SYNCSELECT_EPWM1SYNCIN_M;
}
否则
{
clearMask =(uint32_t) SYSCTL_SYNCSELECT_SYNCIN_M <<
(uint32_t) syncInput;
HWREG (SYNCSOC_BASE + SYSCTL_O_SYNCSELECT)=
(HWREG (SYNCSOC_BASE + SYSCTL_O_SYNCSELECT)&~clearMask)|
((uint32_t) syncSrc <<(uint32_t) syncInput);
}
EDIS;
}
* ECAPWM 设定
int32_t ecap_ticks =(int32_t)((float32_t)(pwmSysClk Freq_Hz / Freq_Hz));
ECAP_enableAPWMMode (ECAP4_BASE);
ECAP_setAPWMPeriod (ECAP4_BASE、ECAP_TICK);
ECAP_setAPWMCompare (ECAP4_BASE、100U);
ECAP_setPhaseShiftCount (ECAP4_BASE、0u);
ECAP_enableLoadCounter (ECAP4_BASE);
ECAP_clearInterrupt (ECAP4_BASE、0xFF);
ECAP_clearGlobalInterrupt (ECAP4_BASE);
ECAP_startCounter (ECAP4_BASE);
* CCS 注册观察窗口