Forum: Digitale Signalverarbeitung / DSP / Machine Learning C6747 EDMA zu langsam?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von YouJin (Gast)


Lesenswert?

Hi alle,

ich habe ein bloedes Problem feststellen muessen. Ich habe ein System 
bestehend aus dem TI C6747 und den AD-Wandler ADS1610, auch von TI. Die 
Hardware ist aufgebaut und Software auch, nun muss ich leider 
feststellen, dass etwas mit der Samplerate zwischen ADC und der DSP 
nicht stimmt. Folgendes is konfiguriert.
Ein GPIO Pin fungiert als Interupt signal um den EDMA zu steuern. An 
diesem Interupt-Eingang ist der Data Ready Ausgang des ADC verbunden. 
Und dieser Taktet halt mit 10 MHz vor sich hin (da der ADC ja 10 MSPS 
hat). Scopetechnisch ist alles ueberprueft.
Bei jedem Interupt schreibt der EDMA halt immer 2 byte von der GPIO 
Bank, an dem der ADC angeschlossen ist, an eine definnierte Adresse. Die 
Parameter sind self-linked. Also ein Ringbuffer.
Die DSP lauft auf maximalen Frequenzen (CPU = 300 MHz, EDMA = 150 MHz, 
GPIO = 75 MHz). Nun sieht es so aus, als ob der EDMA zu langsam ist, 
also den 10 MHz des ADC nicht hinterherkommt. Beim Uebertakten der DSP 
reicht es annaehernd. Kann es wirklich sein, dass der EDMA zu langsam 
ist???

Irgendwie blicke ich da erlichgesagt in Datasheet von TI nicht durch. 
Die DSP hat lauf Daten eine Max. Frequenz (SYSCLK1) von 375/456 MHZ, 
weiter im Datasheed steht dann aber, dass SYSCLK1 nicht mehr wie 300 MHZ 
haben darf. Irgendwie koennen die sich nicht entscheiden :).

http://www.ti.com/lit/gpn/tms320c6747
In Punkt 5.2 stehen die Empfohlenen Parameter, da steht SYSCLK1 bei 375 
MHz. Spaeter steht da aber, das alle SYSCLKs nur bis 300 MHz 
unterstuetzen. Wie soll man das verstehen?

von TI-Unbegeisterter (Gast)


Lesenswert?

Tach. Ich hab mich hier in letzter Zeit mit dem 6416T abgekämpft. 
Wirklich durchgeblickt habe ich immer noch nicht, hab aber zumindest so 
viel rausbekommen, dass Schreibzugriffe über den GPIO übelst viel Zeit 
brauchen. Guck vielleicht mal, ob du deinen Interrupt woanders 
herbekommst.

Viel Erfolg!

von You Jin (Gast)


Lesenswert?

Tach! Ach wenn ich den EDMA ohne Interrups steuer, sondern einfach 
einmal anschmeisse und laufen lasse aendert sich an den Aufgenommenen 
Samples nichts. Ich habe den AD-Wandler heute mal auf 5 MPSP Mode 
estellt, und dann funktioniert alles Perfekt. Sobald ich aber wieder auf 
10 MSPS stelle verliert der EDMA beim übertragen leider an Samples. 
Sitze schon seit mehreren Tagen vor diesem Problem, ohne Erfolg.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Wenn die Ansteuerung des EDMA über eine Interrupt-Serviceroutine läuft, 
kann ich mir duchaus vorstellen, dass das zu langsam ist. Damit das 
richtig schnell funktioniert, muss man den Transfer über das 
Eventmanagement-System auslösen.

Siehe:
http://www.ti.com/lit/gpn/tms320c6747
Kapitel 6.9

Ein GPIO kann Interrupts oder EDMA-Events auslösen. Eventgesteuert 
sollten 10 MSPS überhaupt kein Problem sein.

Grüße,

Peter

von You Jin (Gast)


Lesenswert?

So mache ich es auch. Ich benutze die GPIO Bank 2, angeschlossen an Data 
Ready vom ADC, um den EDMA Event 7 auszulösen. Ich habe bislang immer 
von Interrupt gesprochen, weil man für die Eventauslösung die GPIO Bank 
auch als Interrupt definieren muss. Erst dann funktioniert die 
Eventauslösung des EDMA Channels.

von You Jin (Gast)


Lesenswert?

Sorry kleiner Fehler: Die GPIO Bank 1 lösst natürlich den EDMA Event 7 
aus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.