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.

[参考译文] TMS320F28388D:有关 ADC 触发器的问题

Guru**** 2606725 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1025476/tms320f28388d-question-about-adc-trigger

器件型号:TMS320F28388D

尊敬的团队:

ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN0, 63);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN1, 63);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER2, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN2, 63);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER3, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN3, 63);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER4, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN4, 63);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER5, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN5, 63);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER6, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN14, 63);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER7, ADC_TRIGGER_EPWM1_SOCA,ADC_CH_ADCIN15, 63);

PWM 递增计数模式、 当 TBCTR = PRD 时触发 ADC 采样:  "ADC_setInterruptPulseMode (ADCA_BASE、ADC_PULSE_END_OD_CONV);"

采样完成后会触发中断:

ADC_setInterruptSource (ADCA_BASE、ADC_INT_NUMBER1、ADC_SOC_NUMBER7);测量结果是、从 PWM 触发 ADC 采样到进入中断需要7us。

ADC_setInterruptSource (ADCA_BASE、ADC_INT_NUMBER1、ADC_SOC_NUMBER0); 测量结果表明、从 PWM 触发 ADC 采样到进入中断需要1uS。

是这种时间差、因为 SOC0-15会按顺序刷新、因此如果 ADC_SOC_NUMBER7用于触发中断采样数据、则会收集0-7。 如果要触发 ADC_SOC_Number1、ADC_SOC_NUMBER7可能尚未完成、并且数据读取是最后一次?

在这种情况下、PWM 触发 ADC 中断的时间超过7us。 因此、当开关频率高于120K 时、中断频率是否会被限制在7us?

此致

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

    绿色环保、

    我认为您的理解是正确的:

    • 通常需要在序列中的所有转换完成后触发 ISR。  
      • 因此、对于从 SOC0到 SOC7的转换序列、最安全的做法是在 SOC7之后触发 ISR、否则您可能会读取一些过时的数据
      • 您可以尝试计入 ISR 上下文切换时间以及在读取 ADC 结果之前发生的任何计算。  例如、 如果将 SOC0至 SOC3的结果与 SOC4至 SOC7的结果分开使用、您可能能够提早进入 ISR。  假设进入 ISR 并处理结果0到3需要1us、然后您可以在 SOC6之后(提前1us)进入 ISR、并且在 ISR 接近读取结果4到7时仍读取新结果。   
    • 如果 ADC 以16位模式运行、则最大采样率约为1MSPS、因此转换时间约为1us (但您可以从数据表中的时序信息中获得准确的时间-请参阅"ADC 时序图"部分)。  
      • 如果 SOC0至 SOC7全部按顺序触发并且 ADC 使用16位模式、则 SOC0将在大约1us 后完成、而 SOC7将在大约8us 后完成
      • 此时间将限制触发 ISR 的速度(8us 周期实际上约为125kHz 频率)
      • 但是、请注意、该器件有4个旨在并联使用的 ADC、因此、如果您总共需要8个16位分辨率转换、您应该并联使用4个 ADC 以在大约2us 的时间内生成结果、 这将提供更快的最大 ePWM 触发速率。