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.

[参考译文] TMS320F28379D:TMS320F28379D

Guru**** 2609945 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1574509/tms320f28379d-tms320f28379d

部件号:TMS320F28379D


工具/软件:

我负责固件编码、并在 ADC 信号感应方面有一些问题。 我有三个转换器串联:

  1. 转换器 1–3kHz  

  2. 转换器 2–20kHz  

  3. 转换器 3–3 kHz

每个转换器都有自己的 PWM 中断、但我对为每个转换器的 ADC 检测选择 SOC 和 ADC 模块的顺序感到困惑。 ADC 采样的详细信息如下:

转换器 1 ( 3kHz):

  • VDC–2 个样本

  • VOUT–4 个样本

  • IOUT–4 个样本

转换器 2 (20kHz ):

  • VOUT–4 个样本

  • 变压器输入电流–4 个样本

转换器 3 ( 3kHz):

  • VA–4 个样本

  • VB–4 个样本

  • IA–4 个样本

  • Ib–4 个样本

由于所有转换器都是串联连接的、因此建议如何继续实现快速 ADC 检测。

感谢您的支持和理解。

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

    尊敬的 Raushan:

    转换器 2 为 20kHz、而转换器 1 和 3 为 3kHz。 这意味着转换器 2 触发发生的频率更高。 您需要调度 ADC 加载、以便较快的 ADC 序列不会阻止较慢的 ADC 加载。 如果需要对多个样本求平均值或进行数字滤波、请考虑累加的时序和各任务之间的数据依赖性。

    您可以使用 20kHz 转换器中断(最快)作为“主“触发器。 每个 50µs (20kHz) 都会触发 ADC 以进行转换器 2 的测量。 此外、在该 ISR(或优先级较低的 ADC 任务)内、检查该事件是否与转换器 1 或 3 的采样时刻相对应(因为 3kHz 更慢)、每 6 或 7 个 20kHz 中断(取决于确切的分频)、还会对转换器 1 或转换器 3 执行 ADC。


    ~3kHz 比 20kHz 慢× 6.67m Ω、您可以每 20kHz 中断 6 或 7 次(即每 N 个中断一次)对转换器 1 和转换器 3 进行采样。 例如、在中断计数 0、6、12、…μ s 时采样转换器 1、在计数 3、9、15、…μ s 时采样转换器 3 (或其他相位偏移)、以便扩展额外的负载。


    此外、如果可能、使用不同的 ADC 模块/SOC 组、将转换器 1 的 ADC 需要分配给 ADC A、将转换器 2 分配给 ADC B、将转换器 3 分配给 ADC C(或者如果 C 不可用、则重复使用 ADC A/B)、以减少多路复用冲突、在每个 ADC 内、使用适当的采样窗口和触发器预配置多个 SOC 通道。


    20kHz 路径可能具有更严格的实时限制、因此应确保这些 ADC 序列快速完成、并更大限度地减少分支或开销。 在 20kHz 周期中、较慢的 3kHz 任务可以使用“剩余“ADC 时间。

    如果您在一次中断中调度过多的 ADC、则可能会错过未来的 PWM 或 ADC 截止日期。 此外、您还需要确保在转换正在进行时共享资源(ADC 输入多路复用器)不会切换。

    此致、
    Masoud

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

    尊敬的 Raushan:

    由于转换器 2 以 20kHz 的频率运行(每个 50µs)、而转换器 1 和 3 以 3kHz(每个 333µs~μ s) 的)的频率运行、因此需要确保快速环路 (20kHz) 不会被较慢的环路延迟、也不会因为较慢的环路而阻止快速环路。  更不用说将 20kHz 转换器中断视为主计时器、然后在 ISR 或调度任务内检查是否需要按照前面的建议运行 3kHz ADC(例如,每 6 kHz 或 7 kHz 节拍)。

    此外、您还需要确保 PWM 触发器(例如 ePWM2、ePWM4、ePWM6)对齐、以便在开关波形中的正确点进行采样(避免开关噪声/瞬态过冲)。 从您的代码中可以看到、您对转换器 1 和 3 使用 TRIGSEL = 7 (ePWM2)、对转换器 2 使用 TRIGSEL = 11 (ePWM4) 等 检查它们是否与实际 PWM 频率和相位关系对应。

    鉴于以上所有情况、 如果我想实现这一点、我将使用由 20kHz PWM 周期触发的单个高优先级中断。 然后、在该 ISR 内部 立即为转换器 2 执行 SOC (4 个样本 Vout + 4 个样本 i_txn)。  然后检查计数器(每 20kHz 周期递增一次)以决定这是转换器 1 还是转换器 3 的采样时刻。 这样、您可以避免对较慢循环产生单独的中断、并确保所有 ADC 调度都与最快的任务保持一致、这有助于保持计时干净。

    我知道有许多不同的实现方式可能存在、您可以根据您的系统要求进行设计。

    此致、

    Masoud

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

    感谢您的答复、

    布局 EPWM 中断 ADC 模块 SoC 触发器 (TRIGSEL) ADCINT 触发器
    ( 3kHz) EPWM1 ADCA SOC0–1 ePWM2 SOCA ADCINT1  
    EPWM1 ADCB SOC0–3 ePWM2 SOCA
    EPWM1 ADCC SOC0–3 ePWM2 SOCA
    (20kHz ) EPWM3 ADCA SOC2–5. ePWM4 SOCA ADCINT2  
    EPWM3 ADCD SOC0–3 ePWM4 SOCA
    (3.150kHz ) EPWM5 ADCA SOC6–9 ePWM6 SOCA ADCINT3  
    EPWM5 ADCB SOC4–7 ePWM6 SOCA
    EPWM5 ADCC SOC4–7 ePWM6 SOCA
    EPWM5 ADCD SOC5–8. ePWM6 SOCA

     我不会控制 20kHz 转换器、因此、您是否可以建议或建议我使用这种方法来初始化 ADC。

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

    尊敬的 Raushan:

    您走在正确的轨道上、我想重点介绍一个观察结果、由于 20kHz 转换器比 3kHz 转换器快 6.67、因此需要确保 20kHz 环路绝不会延迟。 如果较慢的中断阻止了快速中断、则可能会错过最后期限或偏移时序。

    除此之外、 您需要根据调制方案检查这些触发器相对于转换器开关事件的实际时序。 基本上、应选择 ADC 采样时刻以避免开关噪声或瞬态尖峰。  

    此致、

    Masoud