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.

[参考译文] TMS570LS1224:ADC 采样值延迟- ADC 采样值在第二个 ePWM 周期更新,在第一个 ePWM 信号时应该更新。

Guru**** 2551240 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1078185/tms570ls1224-delay-in-adc-sampled-value---adc-sampled-value-is-updated-at-the-2nd-epwm-cycle-where-as-it-should-have-done-it-at-1st-epwm-signal

部件号:TMS570LS1224
“线程:HALCOGEN测试”中讨论的其它部件

型号初始化代码:

_enable_interrupt _();
/*设置 ADC */
adcStartConversion (adcREG1,adcGROUP1);
adcStartConversion (adcREG2,adcGROUP1);
KickerRe-> KICKER0 = 0x83E70B13U;
KickerRe-> KICKER1 = 0x95A4F1E0U;
PINMMR35 = 0x0000;
kickerRegistr->KICKER0 = 0x000000000000U;
kickerRe->KICKER1 = 0x000000000000U;
/*设置 etPWM */
etpwmSetCount (etpwmREG1,1000);
etpwmSetCount (etpwmREG2500);
etpwmSetCount (etpwmREG3,300);
etpwmSetCounterMode (etpwmREG1,CounterMode_Uptown);
etpwmSetCounterMode (etpwmREG2,CounterMode_UpDown);
etpwmSetCounterMode (etpwmREG3,CounterMode_Uptown);
etpwmSetSyncOut (etpwmREG1,SyncOut_CtrlEqZero);
etpwmSetSyncOut(etpwmREG2, SyncOut_EPWMxSYNCI);
etpwmSetSyncOut(etpwmREG3,SyncOut_EPWMxSYNCI);
etpwmREG2->TBCTL ||(uint16) 2U <1U;// PHSEN
etpwmREG3->TBCTL |=(uint16) 2U <<1U;
/*配置 mthe 模块以在 CT=0时将 PWMA 值设置为1,在 CTM=CmpA */时将 PWMA 值设置为0
etpwmActionQualConfig_t configPWM;
configPWM.CtrlEqPeriod_Action = ActionQual_Disabled;
configPWM.CtrlEqZERO = ActionQual_Disabled;
configPWM.CtrlEqCmpAUP_Action = ActionQual_set;
configPWM.CtrlEqCmpADown _操作= ActionQual_clear;
configPWM.CtrlEqCmpBUp_Action = ActionQual_Disabled;
configPWM.CtrlEqCmpBDown _操作= ActionQual_Disabled;
etpwmSetActionQualPwmA(etpwmREG1, configPWM);
etpwmSetActionQualPwmA(etpwmREG2, configPWM);
etpwmSetActionQualPwmA(etpwmREG3,configPWM);
/*启用 SOC 触发器*/
etpwmEnableSOCA (etpwmREG1,CTR_ZERO,EventPeriod_FirstEvent);
etpwmClearEventFlag (etpwmREG1,Event_SOCA);
etpwmTriggerEvent(etpwmREG1, 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);
etpwmEnableCmpAsShadowImage 模式(etpwmREG3,LoadMode_CtrlEqZero);
etpwmDeadBandConfig_t 死带宽配置;
死带宽 config.halfycleEnable =真;
deadbandconfig.inputmode = PWMA_RED_FED;
死带宽 config.outputmode = PWMB_fed_PWMA_RED;
死带宽 config.极性=反向 PWMB;
etpwmSetDeadBandDelay(etpwmREG1,112,112);
etpwmSetDeadBandDelay(etpwmREG2,112,112);
etpwmSetDeadBandDelay(etpwmREG3,112,112);
etpwmEnableDeadBand (etpwmREG1,死带宽配置);
etpwmEnableDeadBand (etpwmREG2,死带宽配置);
etpwmEnableDeadBand (etpwmREG3,死带宽配置);

ADC 从 RAM 读取:

#define adc1Group1_ReadFirst (*(volatile UINT32 *) 0xFF3E0000U)
#define adc1Group1_ReadSecond (*(volatile UINT32 *) 0xFF3E0004U)
#define adc1Group2_ReadFirst (*(volatile UINT32 *) 0xFF3A0000U)
#define adc1Group2_ReadSecond (*(volatile UINT32 *) 0xFF3A0004U)
#define adc1Group1FLAG (*(volatile UINT32 *) 0xFFF7C038U)
#define adc2Group1FLAG (*(volatile UINT32 *) 0xFFF7C238U)
#define adc1Group1RAMReset (*(volatile UINT32 *) 0xFFF7C014U)
#define adc2Group1RAMReset (*(volatile UINT32 *) 0xFFF7C214U)

短语 A

如果(%<U1_val>=1){
%<Y1_val>= adc1Group1_ReadFirst & 0xFFFU;
}
否则,如果(%<U1_val>=0)

%.<y1_val>= adc1Group1_ReadSecond 和0xFFFU;
}
否则

%<Y1_val>=255;
}
adc1Group1RAMReset|=0x00000010U;
adc1Group1FLAG|=0x09U;

阶段 B

如果(%<U1_val>=1){
%<Y1_val>= adc1Group2_ReadFirst & 0xFFFU;
}
否则,如果(%<U1_val>=0)

%.<y1_val>= adc1Group2_ReadSecond 和0xFFFU;
}
否则

%<Y1_val>=255;
}

附加的用于壁龛配置的.DIL:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • 问题:ADC 采样值在第二个 ePWM 周期更新,在第一个 ePWM 信号时应该更新。
    • 解吸/测试:我们为 UC 的 ADC 引脚提供了一个步进输入电压。 如图绿色所示,是在生成中断后在 SW 内接收到的值(通过切换 GPIO,将值与阈值进行比较)。 为了表示中断,我们已切换 GPIO 引脚。
    • 我们正在直接访问 ADC RAM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我明天会研究你的代码。

    请您发布 HAlcogen 项目:

    *.hcg 和*.dil 文件

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

    我们正在通过电子邮件研究和讨论此问题。