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.
我需要对6个 ADC 输入信号进行采样。 至少需要在高频(每秒200KSP)下对其中的2个进行采样。 此外、这两者需要同时进行。
两个高电平同步触发 ADC 输入被设定为 ADCA 和 ADCB (用于同步采样)。
ePWM 至少需要触发5个信号、只能通过软件触发一个信号。
我的问题:uC 无法对我的所有信号进行采样、产生的负载太高(当我尝试使用200KSP/s 对一个输入信号进行采样时、它始终为高电平)。 因此、我需要降低负载。 但是、当使用连续或突发模式时、如何实现5个信号的等距采样。 最好的选择可能是使用连续模式、并让 DMA 至少分流高频输入。
其他信号的采样率为每秒12.800和25.600个样本。
但是、如果我将 ADCA 和 ADCB 设置为突发模式、我无法保证 ePWM 触发的5个信号等距触发...
您有什么建议要做什么吗? ADCA/ADCB 的 SOC0-7等用于 adca0、adcb0 (两个同步信号)和其他 SOC、用于剩余的3个信号、这些信号需要由 ePWM 触发、而我只能从软件在 ADCC 处触发6个信号。 我的样本必须等距,我不想对…进行过采样
此外、我尝试使用突发模式并将其设置为16个 SOC、并且我使用计数事件选项测量时间、当配置 ePWM 以每500个 CPU 周期触发一次时、会产生大约1077个周期。
我希望每16*500个周期就会有一个事件
将突发模式设置为8、相同的 ePWM、在2000个 CPU 周期后、我仍然接收到一个中断。 我正在使用 driverlib。
提前感谢。
您好、Jan、
我想这里有几个问题需要解决。
--
首先:突发模式。 这不会使 ADC 采样更快、而是允许单个全局触发器导致转换突发。 例如、如果 ePWM3A 是突发触发器且突发大小为4、则每次接收到 ePWM3A 触发器时 、接下来的4个 SOC 将进行转换。 如果是所有循环 SOC,第一个触发器将导致 SOC0-SOC3转换,下一个触发器将导致 SOC4-SOC7转换,... 等等 这可以提供两个主要优势:仅在最后一次转换后缓冲 ADC 结果、以及对某些信号进行欠采样(这两种情况都可能对您有所帮助)。
考虑以下设置:
ISR 将在8个 EPWM 触发后触发。 ADC-A 和 ADC-B 的 RESULT14将具有最新的 A0/B0结果,结果12将具有 t-1 A0/BO 结果... 到具有 t - 7 A0/B0结果的 RESULT0。 A0/B0的有效采样率为200kHz、ISR 速率为200kHz/8 = 25kHz。 样本是等距的。
每个 ISR 还将为 A1/B1/A2/B2生成1个新结果、因此这些通道的采样率为25kHz (相对于触发频率的欠采样)
注意: 对于您的特定情况、一种更好的策略可能是对非同步采样使用 ADC-C、所有 ADC 都处于突发模式、且突发大小= 1。 这将允许每个 ISR 处理16个 A0/B0结果、并在其他通道上进行高达/16的采样、从而使您达到所需的~12kHz 速率。
--
其次:DMA
如果 您尝试构建更长的记录或 A0/B0而不对每个新的 A0/B0样本执行控制操作、请务必使用 DMA。 您可以在突发模式下使用此模式、也可以在不使用突发模式时使用此模式、触发 DMA 的方式与 ISR 相同(来自 ADCINT)。 在突发模式情况下、您可以触发 DMA 和 ISR (也许 ISR 会处理 MISC。 转换、但允许 DMA 构建 A0/B0转换记录)。
--
第三步:异步。 触发
需要记住的一个重要事项是、如果您的较慢 ePWM 触发器与~200kHz ePWM 异步、则 如果样本共用一个 ADC、您可能无法获得等间隔样本。 这是因为、即使在"高优先级"SOC 的情况下、ADC 也不会放弃进程内转换、因此如果您的较慢环路正在进行 ADC 转换、则较快环路的转换可能仍会延迟。
另一种选择是分配您的异步。 转换为单个 ADC (例如 ADC-C)。 遗憾的是、由于异步、此器件不推荐/不支持此操作。 ADC 会相互干扰、从而导致较差的模拟性能。
--
总的来说、3个 ADC 突发模式情况是否适合您? 或者、基于 ePWM 的较慢转换是否以异步方式或与较快 ePWM 相关的可变时序发生?
您好 Devin、
非常感谢您的输入。 老实说、这是我的第一个 TI 器件、因此我需要提出一些进一步的问题:
在突发模式下、优先级是否始终被移除? 或者,我是否需要调用 ADC_enableBurstMode 以外的更多例程 。
_________
请注意:如果我获得了正确的文档、则无法将 ADC C 配置为使用 ePWM。 但它们也应由 ePWM 触发。 我可以释放一个计时器、但实际上它们正在使用中。
一般而言、我们将进行重新设计、我的硬件说我可以自由选择哪个信号将位于哪个 ADC 上。
_________
是否有任何示例可同时使用 DMA 和突发模式、还是只需在 此处设置配置并使用 DMA_TRIGGER_ADCA0?
DMA_CONFIGMode (DMA_CH1_BASE、DMA_TRIGGER_ADCA0、
(DMA_CFG_OneShot_disable | DMA_CFG_Continuous_disable |
DMA_CFG_SIZE _ 32位));
_________
第三步:异步。 触发
与200KSP 异步意味着什么。
--
您的问题:
总的来说、3个 ADC 突发模式情况是否适合您? 或者、基于 ePWM 的较慢转换是否以异步方式或与较快 ePWM 相关的可变时序发生?
基于 ePWM 的较慢信号只是平均滤波以降低噪声。 在这方面,我认为,如果样本不完全等距,是可以的。 因此、频率较低的信号受 A0/B0的影响、但不依赖于它们。 此外,我只需要每100或500毫秒处理一次,我只需要查看在最后一个 A0/B0周期(一个 A0/B0 2.5毫秒的正弦波)期间测量的样本。
目前、我只为每个信号使用 ISR、因此在处理信号时、我只能停止 ePWM 触发。 如果我可以将其他信号移至 ADCC、我只需停止 ePWM、我不需要实现双头缓冲器节省存储器、但正如我所问的、ADC 不能使用 ePWM、对吧?
高采样信号也应由 CLA 处理、在这里、DMA 可用于直接将数据移动到 CLA 共享存储器中?
提前感谢。
1月
您好、Jan、
不用担心、我们会解决问题。 ADC 包装程序非常灵活、但这会为它提供一些学习曲线。 我将在这里点击要点、如果我错过了一个子问题、请随时询问后续问题:
[引用 userid="452547" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/986682/tms320f280049c-adc-sampling/3645910 #3645910"]无法将 ADC C 配置为使用 EPWM/quote]ADC-C 具有与其他 ADC 相同的触发选项;您可以将其设置为使用基于 ePWM 的触发
[引用 userid="452547" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/986682/tms320f280049c-adc-sampling/3645910 #3645910"] 异步至200KSP 意味着什么。如果 ePWM1为200kHz 并触发 SOC0 - SOC3、而 ePWM2为13kHz (或可变频率)并触发 SOC4-SOC7、则会出现这种情况。 频率不可平均分频、因此 ePWM2触发将在 ePWM1触发之前或之后随机发生、导致两组 SOC 有时被延迟。 根据情况、我认为您不会遇到这种情况。
[报价 userid="452547" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/986682/tms320f280049c-adc-sampling/3645910 #3645910"]是否处于突发模式,优先级是否始终被删除?突发模式使用循环(非高 优先级) SOC。 默认情况下、所有 SOC 都是循环的、因此突发模式使用所有16个 SOC。
如果您想说3次转换的3次突发、则不会均匀地分为16个 SOC。 如果您设置优先级控制、使 SOC0至 SOC6为高优先 级、而 SOC7至 SOC15将循环、则最终会有9个 SOC 用于突发模式。 然后,第一个突发触发器将转换 SOC7-SCO9,第二个 SOC10-SOC12,下一个 SOC13-SCO15,下一个 SOC7-SOC9,... 等等 高优先级 SOC 使用单独的 SOC 触发器、而不是突发触发器(因此、如果您真的想混合突发模式和 SOC 模式)。
[引用 userid="452547" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/986682/tms320f280049c-adc-sampling/3645910 #3645910"] SoC 是否设置正确?[/quot]是的、这看起来是设置方法、 但请注意、如果您将突发大小设置为2并将所有 SOC 设置为 CH0、则会得到一个转换序列:
第1个 PWM1A 触发器:2次转换、CH0然后 CH0背对背(存储在 RESULT0和 Result1中)
第二个 PWM1A 触发:2次转换、CH0然后 CH0背对背(存储在 Result2和 Result3中)
(笑声)
我认为这不是你想要的。 我最初的建议是在每组中使用第二次转换、以通过较慢的转换进行轮换。
--
总的来说、在更好地了解您的要求后、我认为您需要:
ADC-A
ADC-B
ADC-C
其中一个 ADC 的 SOC15会触发 ADC ISR (和/或 DMA 和/或 CLA 任务)
这将导致25ksps 和12.5ksps 信号具有等间隔的样本、但彼此之间存在一些相位偏移(例如、SOC1和 SOC2将以1/2200kHz = 5us 的间隔进行采样)。 如果这是一个问题、我认为您需要对与200kHz ePWM 同步的每个采样率使用较慢的 ePWM 模块。
[引用 userid="452547" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/986682/tms320f280049c-adc-sampling/3645910 #3645910"] CLA 也应处理高采样信号,此处可以使用 DMA 将数据直接移动到 CLA 共享内存中?我不确定是否有任何内存被映射到 DMA 和 CLA。 通常、CLA 获取结果并对其进行处理将无需使用 DMA (因为任务已经从 CPU 中卸载)、而上述方案已经将 ISR 或 CLA 任务触发速率降低到12.5kHz、 这应该是非常易于管理的带宽。
我建议让采样方案按照您需要的方式工作、然后可能创建一个新线程来询问 CLA 或 DMA 配置。 这将导致该线程 被路由到对 这些外设更了解的人(可以随时链接回该线程)。
感谢您的详细回答。 这会将问题分类出来。