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.

[参考译文] DRA626:DRA624的 GPIO4可以#39;t 生成 EDMA 同步事件

Guru**** 2614265 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/580713/dra626-the-gpio4-of-dra624-can-t-generate-edma-synchronization-event

器件型号:DRA626
Thread 中讨论的其他器件:SysConfig

我使用的是 DRA624。 我使用 GPIO4[8]输入 AD 的 EOC。我希望 GPIO4[8]触发 EDMA 移动 AD 数据、但 EDMA 没有移动 AD 的数据。

我通过 OBS_DMA 引脚测量 GPIO4同步事件信号、不会生成 GPIO4同步事件脉冲。

关联设置为:

引脚 D21由 PINCTRL 109配置为 GPIO、 并启用 D21接收器功能。

GPIO4[8]由 GPIO_OE 寄存器配置为输入。

通过 GPIO_FAULLINGDETECT 寄存器启用下降沿检测

通过 GPIO_IRQENABLE_SET_0启用 GPIO4中断0

PS:可以正确生成 GPIO4中断。

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

    我假设您可能已经这样做了、但我必须问:

    您是否已将 GPIO4同步事件(GPIOEVT4)映射到任何 EDMA 同步输入? 根据 DRA62x TRM、GPIO4同步事件默认不会映射到任何 EDMA 输入、因此您必须根据需要对相应的 EDMA3CC_EVTMUX_x 寄存器(控制模块寄存器空间的一部分)进行编程、以便使用该事件对 EDMA 传输进行三角运算。

    更多详细信息、请参阅 DRA62x TRM 中的"1.6.5 EDMA 通道同步事件"和"3.1控制模块"部分。

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

    是的、我已经通过 EDMA3CC_EVTMUX_19_22将 GPIOEVT4映射到 EDMA 同步输入22。

    当我通过 GPIO_SysConfig 重置 GPIO4模块时、我会发现这一点。 它只能生成一个 EDMA 同步事件。

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

    我已将您的问题转交给 EDMA 专家。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alex、
    我不是 DRA6领域的专家、但您说过、GPIO 模块复位后、您只会收到一个 DMA 事件。 我只是想、GPIO 中断是否需要清除才能产生更多事件? 即复位 GPIO4[8]状态位的简单中断例程?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经清除了中断例程中的 GPIO4[8]中断状态位、但 GPIO4[8]仍然无法生成 EDMA 系统事件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Alex、

    [引用 user="alex.Liu "]是的、我已经通过 EDMA3CC_EVTMUX_19_22将 GPIOEVT4映射到 EDMA 同步输入22。[/quot]

    我们在 DRA62x TRM (SPRUHF4C)中没有 EDMA3CC_EVTMUX_19_22寄存器、请参阅第3.2节 CONTRAL_MODULE 寄存器

    我们拥有 EDMA3CC_EVTMUX_16_19、 EDMA3CC_EVTMUX_20_23等

    您能否确切指定您编程的 EDMA3CC_EVTMUX_x 寄存器(在哪个物理地址)以及您在该寄存器中写入的值?

    此致、
    帕维尔

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

    GPIO4和控制模块的配置如下所示:μ:

    寄存器                               地址                    值

    PINCNTL109                         0x081409B0              0x00060040

    EDMA3CC_EVTMUX_20_23           0x08140FA4               0x00310000

    GPIO_OE                            0x08420134               0xFFFFFFFF

    GPIO_IRQENABLE_Set_1            0x08420038               0x00000100

    GPIO_FAULINGDETECT               0x0842014C              0x00000100

    DMAOBS                             0x081416F0               0x00008070

    PINCNTL183                         0x08140AD8              0x000B0200

    我使用的引脚是 GPIO4[8]。 我使用示波器来监控 DMAOBS 引脚上的 GPIO4EVT

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

    由于您要将 GPIOEVT4事件映射到 EDMA 同步输入#22、DMAOBS 寄存器的值是否应为0x00008016?

    我的理解是、如果您将 DMAOBS1_SEL 位字段设置为0x10、您将在 dmaobs 引脚上获得 EDMA 同步事件#16、而不是事件#22。 因此、我认为该位字段应设置为0x16。

    此致、
    瓦西勒
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的最后一个回复有误。我设置的实际值如下所示。
    寄存器 地址 值
    DMAOBS 0x081416F0 0x00008070
    说明了 DRA624 TRM 的 OBS_DMA 映射。 GPIO4EVT 编号为112、因此我认为 DMAOBS 引脚的输入信号在 EDMA 事件交叉开关之前。 它不受 EDMA_EVTMUX 寄存器的影响。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、没错、这应该是正确的值。 我看到了错误的表。

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

    [引用 USER="A历 克斯·刘]EDMA3CC_EVTMUX_20_23           0x08140FA4               0x00310000[/报价]

    此事件22在 TRM 中保留。 是否可以尝试覆盖某些现有事件(例如23 Timer1)、是否有任何差异?

    [引用 USER="A历 克斯.Liu ]GPIO_IRQENABLE_SET_1            0x08420038               0x00000100[/报价]

    您使用的是 SET_1、它映射到 A8、DSP 和 M3中的 GPIOINT4B。 但我们没有用于 EDMA 的 GPIOEVT4A 和 GPIOEVT4B。 您能否尝试使用 GPIO_IRQENABLE_Set_0而不是 GPIO_IRQENABLE_Set_1、是否会有任何差异?


    通过 EDMA 交叉开关、GPIO4中断请求重定向为 DMA 请求。 对于 GPIO4_8引脚上的每个上升/下降边沿、将生成一个中断、并且这个中断将被重定向为 DMA 请求。 应正确配置 EDMA3以处理 EDMA 事件。

    为了验证 GPIO4模块本身是否产生了中断请求、首先检查相应的 GPIO_IRQSTATUS_RAW_0/1和/或 GPIO_IRQSTATUS_0/1寄存器。 一旦该 GPIO 管脚发生事件、应将其记录在 IRQSTATUS 寄存器中、相应的位应从0转换为1。


    此致、
    帕维尔

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

    我已经解决了问题。 问题是我没有通过 GPIO_EOI 寄存器确认 GPIO4的 EDMA 事件。
    当我通过 GPIO_EOI 确认 GPIO4事件时。 GPIO4 EDMA 事件可以以高数据格的方式生成。


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

    感谢您使用解决方案更新该主题。
    我将关闭它、但如果您有任何其他问题、您可以在此处写入。

    此致、
    Yordan