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

Other Parts Discussed in Thread: OMAP-L137

Hello,

I need a clearification on some issues regarding activation of EDMA3. Please correct me if I am wrong:

1. The ER, ECR, ESR, IER are all refer to same event map: each bit of those registers represent a fixed hardware event, For example OMAPL137 has bit 31 refers to UART2 Tx, bit 17 for MMCSD tx, etc.

2. DRAE registers are used only if I use shadow regions - I dont need them when I write directly to global registers. Physically, when I write to any register of shadow register I write to Global register, just using different addressing.

3. when configuring EDMA to be activated by event, like rx from peripheral, I suppose to receive interrupt only on completion of receive, so if  I use UART that has 14 byte FIFO, I will receive EDMA completion interrupt every 14 bytes (if configured this way) - it is impossible to get interrupt only after 100 bytes, unless using chaning or linking.

Thank you

Arye

  • Arye Lerner said:

    1. The ER, ECR, ESR, IER are all refer to same event map: each bit of those registers represent a fixed hardware event, For example OMAPL137 has bit 31 refers to UART2 Tx, bit 17 for MMCSD tx, etc.

    Correct.

    Arye Lerner said:

    2. DRAE registers are used only if I use shadow regions - I dont need them when I write directly to global registers. Physically, when I write to any register of shadow register I write to Global register, just using different addressing.

    Yes, that's more or less correct.  Note, however, if you're using OMAP-L137 that the global region does not have its interrupt connected to any of the processor cores.  If you want to send an interrupt to the ARM you need to use region 0 and if you want to send an interrupt to the DSP you need to use region 1.

    Arye Lerner said:

    3. when configuring EDMA to be activated by event, like rx from peripheral, I suppose to receive interrupt only on completion of receive, so if  I use UART that has 14 byte FIFO, I will receive EDMA completion interrupt every 14 bytes (if configured this way) - it is impossible to get interrupt only after 100 bytes, unless using chaning or linking.

    Right, the completion interrupts will be tied into your ACNT/BCNT values.  Do you have to send 14 bytes to your 14 byte FIFO?  Why not just send 10 bytes at a time?  Normally you wouldn't want to wait for the FIFO to completely empty before refilling.  Is there a reason why it must be sent 14 bytes?  Perhaps this is a bad assumption, but does the FIFO have a programmable threshold in terms of when it requests more data, or does it only have an "empty" signal?

  • Hello,

    Thank You for the fast reply.

    I choosed 14 bytes since it is a maximal trigger value for RX FIFO. I need to receive up to 1000 (not fixed length) bytes @ 115200 bps simultaneosly with performing other operations, so I need to enter interrupts as less as possible. I am forced to use interrupts instead of chaning since transmission length is encodded in transmission itself.

    Regards.

  • You're talking about an external UART, right?

    Why don't you just use an interrupt for the first few bytes so you can program the EDMA transfer length but then use EDMA for the rest?  I would not set the external UART FIFO threshold to the max size.  You will end up with degraded throughput.  That is, the FIFO will empty and then stall while it waits for more data to arrive.  You should trigger the event a little earlier, perhaps when 10 bytes have emptied rather than all 14.

  • Hi,

    Thank you, I'll do that, it is a good idea!

    I am using interrupt at the start, and then trying to activate EDMA in linking to the same PaRAM set.

    I managed to activate second transfer, and I get the data from second transfer, just for some reason an event interrupt is not generated the second time.

    Thank You.

    Arye

    P.S. By the way, I am not sure, but I think the FIFO trigger level is probrammable only for 14,8,4,1 bytes, so I perform an estimation in receive interrupt of how many bytes are left, and set the FIFO trigger level accordind to that.

  • Sorry, I've read your post a few times but I'm not sure I understand your issue.  Will you please provide more details as to what exactly you're doing and what behavior you observe?

    Specifically I didn't understand what you meant by "activate EDMA in linking to the same PaRAM set".  Also, when you say you "activate the second transfer" are you referring to the remainder of your packet or are you talking about a second packet altogether?

  • Hi,

    It was a stupid bug of mine, never mind, I've solved the problem. [:$]

    Thank You