主题中讨论的其他器件:HALCOGEN、
您好!
我已在 halcogen 配置中启用了用于 ADC 通知的 RTI 和 ePWM。 我可以在 RTI 通知函数中看到 RTI 中断被触发,但我看不到 ADC 通知是由 ePWM 事件触发的。 我们正在尝试不使用 RTOS 选项。
我正在尝试在 ADC 通知中读取 ADC 值。
以下是代码 init 和 while 循环。
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.
您好!
我已在 halcogen 配置中启用了用于 ADC 通知的 RTI 和 ePWM。 我可以在 RTI 通知函数中看到 RTI 中断被触发,但我看不到 ADC 通知是由 ePWM 事件触发的。 我们正在尝试不使用 RTOS 选项。
我正在尝试在 ADC 通知中读取 ADC 值。
以下是代码 init 和 while 循环。
_enable_IRQ ();
_enable_interrupt_();
/*设置 ADC */
adcStartConversion (adcREG1、adcGROUP1);
adcStartConversion (adcREG2、adcGROUP1);
// adcStartConversion (adcREG1、adcGROUP2);
kickerReg ->KICKER0 = 0x83E70B13U;
kickerReg ->KICKER1 = 0x95A4F1E0U;
PinMuxReg -> PINMMR35 = 0x0000;
kickerReg ->KICKER0 = 0x000000000000U;
kickerReg ->KICKER1 = 0x000000000000U;
/*设置 etPWM */
etpwmSetCount (etpwmREG1、1000);
etpwmSetCount (etpwmREG2、500);
etpwmSetCount (etpwmREG3、300);
etpwmSetCounterMode (etpwmREG1、CounterMode_UpDown);
etpwmSetCounterMode (etpwmREG2、CounterMode_UpDown);
etpwmSetCounterMode (etpwmREG3、CounterMode_UpDown);
etpwmSetSyncOut (etpwmREG1、SyncOut_CtrlEqZero);
etpwmSetSyncOut (etpwmREG2、SyncOut_EPWMxSYNCI);
etpwmSetSyncOut (etpwmREG3、SyncOut_EPWMxSYNCI);
etpwmREG2->TBCTL |=(uint16) 2U <<1U;// PHSEN
etpwmREG3->TBCTL |=(uint16) 2U << 1U;
/*将 mthe 模块配置为在 CTR=0时将 PWMA 值设置为1、在 CTR=CmpA 时将 PWMA 值设置为0 *
etpwmActionQualConfig_t configPWM;
configPWM.CtrlEqPeriod_Action = ActionQUAL_Disabled;
configPWM.CtrlEqZero_Action = ActionQUAL_Disabled;
configPWM.CtrlEqCmpAUp_Action = ActionQUAL_SET;
configPWM.CtrlEqCmpADown 行动= ActionQUAL_CLEAR;
configPWM.CtrlEqCmpBUp_Action = ActionQUAL_Disabled;
configPWM.CtrlEqCmpBown 行动= ActionQUAL_Disabled;
etpwmSetActionQualPwmA (etpwmREG1、configPWM);
etpwmSetActionQualPwmA (etpwmREG2、configPWM);
etpwmSetActionQualPwmA (etpwmREG3、configPWM);
/*为 SOC 启用触发器*/
// etpwmEnableSOCA (etpwmREG1、CTR_PRD、EventPeriod_FirstEvent);
//etpwmEnableSOCA (etpwmREG2、CTR_ZERO、EventPeriod_FirstEvent);
etpwmEnableSOCA (etpwmREG1、CTR_PRD、EventPeriod_FirstEvent);
// etpwmClearEventFlag (etpwmREG1、Event_SOCA);
etpwmClearEventFlag (etpwmREG2、Event_SOCA);
// etpwmTriggerEvent (etpwmREG1、Event_SOCA);
etpwmTriggerEvent (etpwmREG2、Event_SOCA);
etpwmDisableCounterLoadOnSync (etpwmREG1);
etpwmEnableCounterLoadOnSync (etpwmREG2、0、0x2000);
etpwmEnableCounterLoadOnSync (etpwmREG3、0、0x2000);
etpwmEnableTimebasePeriodShadowImage 模式(etpwmREG1);
etpwmEnableTimebasePeriodShadowImage 模式(etpwmREG2);
etpwmEnableTimebasePeriodShadowImage 模式(etpwmREG3);
etpwmEnableCmpAShadowImage 模式(etpwmREG1、LoadMode_CtrlEqZero);
etpwmEnableCmpAShadowImage 模式(etpwmREG2、LoadMode_CtrlEqZero);
etpwmEnableCmpAShadowImage 模式(etpwmREG3、LoadMode_CtrlEqZero);
etpwmDeadBandConfig_t 死区配置;
deadbandconfig.halcycleEnable = true;
deadbandconfig.inputmode = PWMA_RED_FED;
deadbandconfig.outputmode = PWMB_FED_PWMA_RED;
deadbandconfig.polarity = Invert_PWMB;
etpwmSetDeadBandDelay (etpwmREG1、112、112);
etpwmSetDeadBandDelay (etpwmREG2、112、112);
etpwmSetDeadBandDelay (etpwmREG3、112、112);
etpwmEnableDeadBand (etpwmREG1、死区配置);
etpwmEnableDeadBand (etpwmREG2、死区配置);
etpwmEnableDeadBand (etpwmREG3、死区配置);
// RTI 配置
rtiCOMPARE2_PER = rtiGetPeriod (rtiCOMPARE2);
rtiCOMPARE1_PER_NEW = rtiGetPeriod (rtiCOMPARE1);
/*启动 RTI 计数器块0 */
// rtiStartCounter (rtiCOUNTER_BLOCK0);
etpwmStartTBCLK();
adcEnableNotification (adcREG1、adcGROUP1);
adcEnableNotification (adcREG2、adcGROUP1);
adcStartConversion (adcREG1、adcGROUP1);
adcStartConversion (adcREG2、adcGROUP1);
rtiEnableNotification (rtiNOTIFICATION_COMPARE0);
while (1)
{
//用户代码
}
你好 Sachin、
附件是我的示例项目。 使用 ePWM SCOA 触发 ADC。 此示例在 TMS570LS0714PGE 上进行了测试、应在 TMS570LS1224PGE 上运行。
e2e.ti.com/.../TMS570LS0714PGE_5F00_ADC_5F00_epwmTrigger.zip
您好 QJ、
我们复制了 Launchpad TMS570LS1224的配置、ePWM 不会触发 ADC 通知、只有 RTI 通知按预期工作。 为您的参考附加 CCS prj 和 HAL prj。 请给我们提供帮助吗?e2e.ti.com/.../qjconfig_5F00_try.zip
你好 Sachin、
附件是 LS1224PGE 器件的工作示例:
e2e.ti.com/.../6710.TMS570LS0714PGE_5F00_ADC_5F00_epwmTrigger.zip