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.

EDMA3 sync interrupt with GPIO pin



I am developing on the DSP side of an OMAP L-138.  I want to use a particular pin on GPIO bank 0 to start a DMA transfer, but I have other pins on the same bank that I want to use to generate interrupts for other purposes.  I have read through masses of documentation and it looks as if any pin configured to interrupt on Bank 0 will start a DMA transfer if the GPIO Bank 0 event is enabled for the EDMA3 controller. Is it possible configure a single pin on the bank to start the transfer and have the other pins ignored by the DMA controller?

I have looked through this forum for answers, and have not yet found a definitive answer to my question.  I hope one of TI's experts can assist with this one...

  • Hi SteveH,

    Thanks for the post.

    SteveH: said:

    I am developing on the DSP side of an OMAP L-138.  I want to use a particular pin on GPIO bank 0 to start a DMA transfer, but I have other pins on the same bank that I want to use to generate interrupts for other purposes.  I have read through masses of documentation and it looks as if any pin configured to interrupt on Bank 0 will start a DMA transfer if the GPIO Bank 0 event is enabled for the EDMA3 controller. Is it possible configure a single pin on the bank to start the transfer and have the other pins ignored by the DMA controller?

    Yes. It is possible to configure the interrupt for single pin. 

    The GPIO interrupt events are enabled in banks of 16 by setting the appropriate bit(s) in the GPIO interrupt
    per-bank enable register (BINTEN). For example, to enable bank 0 interrupts (events from GP0[15-0]), set
    bit 0 in BINTEN; to enable bank 3 interrupts (events from GP3[15-0]), set bit 3 in BINTEN.

    But each GPIO interrupt source can be configured to generate an interrupt on the GPIO signal Rising edge,
    falling edge, both edges, or neither edge (no event). The edge detection is synchronized to the GPIO
    peripheral module clock.

    Please refer the TRM (SPRUH77), Section 21.2.10.3 Configuring GPIO Interrupt Edge Triggering for more details.

    Please refer example code snippet to configure the GPIO using Starterware package from below e2e thread.

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/286534.aspx

  • I'm afraid you misunderstood my question.  I know how to set GPIO interrupts, the problem is that the DMA event that can trigger a transfer is a GPIO Bank x interrupt, which is generated by any interrupt-enabled pin in Bank x.  This means that if you have one pin on Bank x set up as an interrupt to trigger a DMA transfer, and another pin on Bank x set up to interrupt the CPU for another reason, both interrupts will trigger the Bank x interrupt event on the DMA.  I can't find any way to mask the interrupt to the DMA to a particular pin on Bank x.

  • Hi SteveH,

    Thanks for the clarification. We will check and get back to you on this.