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.

[参考译文] TMS320F28P550SG:使用 XINT1 事件触发 DMA

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1550776/tms320f28p550sg-using-xint1-event-to-trigger-dma

器件型号:TMS320F28P550SG


工具/软件:

尊敬的专家:

我向我的客户询问这个问题。

我的客户希望测量输入到 DSP 的信号的高电平时间、现在 ECAP 和 EPWM 模块还不够。 更重要的是、他们不希望产生 额外的中断来实现此功能。 他们只需要在当前 PWM 中断 (30kHz) 中检查该值

因此、我建议他们使用此解决方案:

1.使用 XINT1 在下降沿和上升沿生成 XINT1 事件。

2.启用 Timer2。

3.使用 XINT1 作为触发源触发 DMA、将 CPUTIMER TIM 寄存器传输到缓冲区。 DMA 将突发设置为 2 以实现:当第一个 XINT 生成(触发输入上升沿)时、DMA 将 TIM 值置于缓冲器[0]、当第二个 XINT 生成(触发输入下降沿)时、DMA 将 TIM 值置于缓冲器[1]。 在 PWM 中断中、它们使用 Buffer[1]- Buffer[0]来获得 输入信号的高电平时间。

但现在我有一些问题、

1.这个解决方案是否合理? 是否可以生成 ISR 而生成 XINT 事件来触发 DMA?

2.我认为可以。 但我无法触发 DMA、您能帮助检查我的配置中是否有任何错误吗?

e2e.ti.com/.../3252.gpio_5F00_ex2_5F00_toggle.zip

3.由于计时器将达到其最大值并从零开始重新启动,因此我不能保证 Buffer[1]始终大于 Buffer[0]。 那么、是否可以让 DMA 在第一个 XINT1(上升沿)中对 TIM(复位计时器)置零、并让 DMA 在第二个 XINT1(下降沿)中对 TIM 进行缓冲?

BRS

Shuqing

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

    尊敬的 Shuqing:

    您能详细解释一下 eCAP 模块为什么不符合其要求吗? 因为这种情况最简单的解决方案 是让 eCAP 读取信号的宽度并触发 DMA(使用 ECAP 触发源)、以将该数据从 eCAP 寄存器移动到存储器中。   

    此致、

    Delaney

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

    尊敬的 Delaney:

    因为它们将所有 ECAP 模块用于其他功能。 ECAP 的性能不够、ECAP 模块的数量足够。 因此、我们需要使用其他解决方案作为权变措施。

    BRS

    Shuqing

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

    尊敬的 Shuqing:

    我现在理解、感谢您的澄清。  

    [引述 userid=“610907" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1550776/tms320f28p550sg-using-xint1-event-to-trigger-dma

    1.这个解决方案是否合理? 是否可以生成 ISR 而生成 XINT 事件来触发 DMA?

    [/报价]

    是的、我认为这个解决方案听起来合理。 是的、您应该能够将 XINT 仅用作 DMA 触发源、而不是中断。

    [引述 userid=“610907" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1550776/tms320f28p550sg-using-xint1-event-to-trigger-dma

    2.我认为可以。 但我无法触发 DMA、您能帮助检查我的配置中是否有任何错误吗?

    [/报价]

    我会查看您的代码、然后返回给您。

    [引述 userid=“610907" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1550776/tms320f28p550sg-using-xint1-event-to-trigger-dma

    3.由于计时器将达到其最大值并从零开始重新启动,因此我不能保证 Buffer[1]始终大于 Buffer[0]。 那么、是否可以让 DMA 在第一个 XINT1(上升沿)中对 TIM(复位计时器)置零、并让 DMA 在第二个 XINT1(下降沿)中对 TIM 进行缓冲?

    [/报价]

    我建议将周期设为一个较大的值(一个你知道永远不会达到的值),并 在你的 EPWM ISR 结束时调用 CPUTimer_reloadTimerCounter ()。 您是否知道输入信号处于高电平的时间上限?

    此致、

    Delaney

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

    尊敬的 Delaney:

    我想我发现了为什么我不传输代码中的数据的原因。

    在我的代码中、我不将变量放在 GSRAM 中、而是放在 LSRAM 中。 在 F28P55 中、DMA 无法访问 LSRAM、只能访问 GSRAM。

    只要我将变量放在 GSRAM 中、它就可以成功传输数据。

    但现在的问题是我检查了 CPUTIMER 的 DAM 访问权限、DMA 似乎无法访问 CPUTIMER

    我怎么会这样呢?

    BRS

    Shuqing

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

    尊敬的 Shuqing:

    是的、这一点很好。 DMA 只能访问 GSRAM。 对于 CPU 计时器外设、是正确的、DMA 实际上没有访问权限。 您也可以将 PWM 模块用作计数器、而不是 DMA 可以访问的 CPU 计时器。 这对客户是否可行?

    此致、

    Delaney

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

    尊敬的 Delaney:

    他们可以接受使用 EPWM 而不是 CPU 计时器、我向他们提供了可行的演示、以便将数据从 ePWM TBCTR 传输到缓冲器。 还有一个客户问题。 他们需要使用 XINT1~XINT5 来测量 5 个输入信号。

    如果 GPIO 需要生成 XINT、它需要将 GPIO 连接到输入 XBAR、将输入 XBAR 也连接到其他模块。 例如、GPIO 连接到 inputxbar6 并连接到 XINT3。 但这也连接到 TRIP6、它是否会影响 PWM 模块? 他们能否将 inputxbar6 与 TRIP6 断开连接?

    该 INPUTXBAR 还连接到 ECAP。 如果它们也使用 ECAP、它是否会影响 ECAP 模块?

    BRS

    Shuqing

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

    尊敬的 Shuqing:

    让我让 XBAR 专家回答这个问题。  

    此致、

    Delaney

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

    嗨、Shuqing、

    除非将 ePWM 配置为使用 INPUTXBAR.XINT3 作为跳闸源、否则 INPUTXBAR.TRIP6 不会连接到 ePWM.TRIP6。 虽然所有这些信号都使用 INPUTXBAR6、但这并不意味着如果这些信号仅配置为使用特定的目标选项、它们就会持续接收并处理该触发信号。 没有断开信号与 INPUTXBAR 的连接或断开连接的概念。

    此致、

    Zackary Fleenor

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

    您好、Zackary、

    感谢您的答复!

    在哪里可以选择 INPUTXBAR  目标?

    INPUTXBAR.XINT3 不会绑定到 ePWM.TRIP6、除非 EPWM 配置为将其用作跳闸源。

    或者我无法选择 INPUTXBAR 目标? 例如、只要我将 TRIP6 配置为 ePWM TZ 源、TRIP6 就会始终连接到 INPUTXBAR6?

    但是、如果我没有选择 TRIP6 作为 ePWM TZ 源、INPUTXBAR6 不会连接到 ePWM?

    BRS

    Shuqing

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

    嗨、Shuqing、

    而不是直接配置 INPUTXBAR 目标、而是对目标 IP 进行编程以使用关联的 INPUTXBAR 源选项。 如果未进行配置、则即使另一个目的地主动使用了该 inputxbar 信号、连接也不会填充。

    此致、

    Zackary Fleenor