Re: EDMA Event-Triggered Synchronization



On 3月23日, 下午8時20分, Brad Griffis <bradgrif...@xxxxxxxxxxx> wrote:
edwi...@xxxxxxxxx wrote:
On Mar 22, 9:25 pm, Brad Griffis <bradgrif...@xxxxxxxxxxx> wrote:
edwi...@xxxxxxxxx wrote:
Hi,
In TI C671x or similar DSP, what is the function of Event-Triggered
Array Synchronization? Does it means that every times an interrupt
event arrived (eg EXT_INT) , the EDMA controller will transfer one
array?
In 2D mode with FS=0 you will get an array-synchronized transfer which
you described correctly, i.e. one array per sync event.

Besides the parameter for the channel such as OPT/SRC/FRMCNT,
what should be configured in order to enable event-triggered
synchronization ?
In order to synchronize to the correct event, in your case the external
interrupt, you need to write to the Parameter Set corresponding to that
event. Note that the parameter set gets modified during the transfer so
you will probably want to setup a second Parameter Set with the exact
same initial parameters such that the active parameter set always links
to that same reload (assuming you're going to do this 2D transfer more
than once).

You'll also need to enable the corresponding bit in the event enable
register EER.

Suppose I have an 2D array data[20][100], is it possible to configure
the EDMA to transmit the whole data[0] when the EXT_INT event is
triggered, transmit data[1] when another EXT_INT event is triggered,
and transmit one array when each EXT_INT event is trigger until
data[19] ?
Yes, that is possible. In fact, that specific scenario is shown in
Section A.3 of the EDMA Reference Guide, spru234c.

Thanks for your reply. Yes, I want to do this 2D transfer
continuously, the case is same as Figure A-36 in "spru234". Does it
means that I need to configure the channel as linked transfer?

Actually I have read the "spru234" and "spra636" before, and get
confused with the setting of "event triggered transfer request" and
"event triggered synchronization"! The reference guide said that a bit
in EER should be enabled in order to enable the corresponding event to
trigger the transfer request. For example, if I want to trigger the
transfer request by EXT_INT5, the EER should be configured as
"0x0020". If this is correct, then how can I enable the "event
triggered synchronization"? Is it simply configure the EER as "0x0010"
if I want the send one array when EXT_INT4 is triggered?

Thanks again!

For the 6713 GPINT4 maps to channel 4 and GPINT5 maps to channel 5.
Therefore if you want an event triggered by GPINT4 then you need to
program Parameter Set 4 with the correct transfer info and set bit 4 of
the EER (i.e. EER |= 0x10;).

When the documentation talks about a "transfer request" that is talking
about the specific hardware details of the EDMA. In your case when an
event occurs (i.e. GPINT4) then if you have set it up as I mentioned
above then a "transfer request" will automatically happen inside the
EDMA causing one array of data to be transferred.

Note that Parameter Set 4 will be modified/updated by the EDMA during
the transfers. For example, after the first sync event the source and
destination addresses will be updated to point to the current location
in the data and the counts will be correspondingly decremented. At the
end of the complete transfer (all the arrays) the counts will all be
zero. In order for your transfer to happen automatically forever you
need to LINK to a second parameter set. When you link this tells the
EDMA at the end of the ENTIRE transfer to copy the data from the linked
set into the set that you're working on. In doing this your source
address, dest address, counts, etc. will all be restored to their
original values and your transfers can keep going forever.

Another good reference which I recommend you read is spra996. This is
much shorter than the EDMA Reference Guide and gives a lot of good
details about how the EDMA works.

Brad- 隱藏被引用文字 -

- 顯示被引用文字 -

Thanks a lot! I can see the arrays are synchronizated now! :> But I
don't know the second 2D array be transmitted immediately just after
the first 2D array. Instead of this, I want it to be transmitted when
the EXT_INT5 event occured (The arrays are syncrhonizated by using
EXT_INT4 event). Is the link transfer still suitable in my case?

I tried to initiate the EDMA channel in the EXT_INT5 ISR, but the
effect was not good. The time between the event occur and the transfer
begin sometimes shorter, sometimes longer. I also thought to disable
the EER bit when the transfer completed, and enable the EER bit in the
EXT_INT5 ISR. Is there any "cleverer" method?

Thanks
Edwin

.



Relevant Pages

  • Re: EDMA Event-Triggered Synchronization
    ... Array Synchronization? ... the EDMA controller will transfer one ... Note that the parameter set gets modified during the transfer so ... trigger the transfer request. ...
    (comp.dsp)
  • Re: EDMA Event-Triggered Synchronization
    ... Array Synchronization? ... Note that the parameter set gets modified during the transfer so ... trigger the transfer request. ...
    (comp.dsp)
  • Re: EDMA Event-Triggered Synchronization
    ... Array Synchronization? ... Does it means that every times an interrupt ... Note that the parameter set gets modified during the transfer so ...
    (comp.dsp)
  • Re: First message sent is lost (TCP)
    ... for now and it hasn't triggered. ... I had some problems first with message corruption that was very weird, ... byte array and clear the receiving array each time those problems ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Curve Fitting of Real Data
    ... (but the noise array is 128 elements), resulting in a 50 element array ... and is supposed to return 1000 points after the trigger, ... being passed to the fitting routine is still only 50 points long, ...
    (comp.lang.labview)