Forum: Digitale Signalverarbeitung / DSP / Machine Learning uC Anbindung vom F28335 zu schnell - EtherCAT


von Tim R. (mugen)


Lesenswert?

Hallo liebes Forum!

Mit dem F28335 von TI spreche ich über das µC-Interface ein externes 
Modul von der Firma Beckhoff an. Diese EtherCAT Briefmarke (FB1111-0140) 
ist gegenüber dem DSP/DSC sehr langsam, da die Daten erst innerhalb von 
220ns bereitgestellt werden. Über die XINTF Einstellungen im F28335 kann 
diese Zeit nicht länger als 180ns eingestellt werden. Zwar bekomme ich 
einigermaßen die Daten sicher rüber und die Kommunikation verläuft bis 
jetzt recht gut. Hin und wieder habe ich allerdings falsche Daten, die 
meiner Meinung nach überhaupt nicht vertretbar sind. Zwar könnte ich 
weitere Variablen zur CRC Prüfung deklarieren, aber dadurch steigt die 
totale Auslesezeit vom DSP. Am Liebsten würde ich die Lesezeit von 220ns 
um den Faktor 10 niedriger sehen wollen, aber diesen Wunsch kann ich mal 
beiseite legen. Ich suche somit ein paar Lösungsmöglichkeiten!
Ein paar Gedanken habe ich mir schon gemacht:

1.Lösung:  Andere EtherCAT Briefmarke besorgen, die schneller ist. Evtl. 
anderer Hersteller oder auf FPGAs Basis (Beckhoff)

2.Lösung:  Zweiten Mikrocontroller auf das Board integrieren und die 
Kommunikation von Seriell auf µC wandeln. Die geht nur, wenn man McBSP 
benutzt.

Also wer ein paar Denkanstöße hat, die sind sehr herzlich willkommen.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Swoeit ich das verstanden habe, ist das Protokoll von EtherCAT offen und 
in der IEC 61158, Typ 12 erhältlich. Es sind ganz normale UDP-Packets, 
die kannst du auch über jeden anderen MAC senden. Du kannst also 
irgendeinen 100MBit/sec MAC und ein entsprechendes Phy aussuchen und den 
MAC ganz normal an den Bus von deinem DSP anschließen. Oder, wenn es 
nicht unbedingt ein DSP sein muss, einen AT91SAM7X256 oder 
vergleichbares einsetzen, der hat einen EthernetMAC on chip.

Wenns ganz einfach sein soll, würde ich das alles auf einem ATNGW100 
laufen lassen, da hast du gleich 2 100 MBit/sec Ethernetports.
Ich weiß natürlich nicht, ob dir das von der Geschwingikeit der 
DSP-Funktionen ausreicht.

Grüße,

Peter

von Martin L. (Gast)


Lesenswert?

Ethernet ist erst mal nicht Fehlergeschützt und man muss immer mit 
falschen Daten rechnen. Von daher macht es so oder so Sinn sich darüber 
Gedanken zu machen. (Ja - eine Verbindung mit einem Patchkabel von 
Buchse zu Buchse ist schon als fast Fehlerfrei zu betrachten - aber ab 
und zu soll es selbst dort mal ein falsches Paket geben.)

Viele Grüße,
 Martin L.

von Tim R. (mugen)


Lesenswert?

Vom Slave-Modul werden Fehler erkannt, dass ist nicht das Problem. Die 
Anbindung aber über µC ist nahezu unmöglich. Da der Pre-Scaler nicht 
soweit runter takten kann, damit er dieses langsame Modul richtig 
anspricht. Ich mein 220ns ist echt langsam.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Wie sieht das mit dem Timing denn aus, wenn du zweimal direkt 
hintereinander auf die selbe Adresse zugreifst und nur den Wert vom 
letzten Zugriff weiterverwendest? Dann sollte die Adresse schon lange 
genug anstehen, so dass nichts mehr passiert.

Optimalerweise baut man dann vielleicht noch etwas dazwischen, das nur 
immer den zweiten Strobe an das Modul weiterleitet. Wichtig ist ja nur, 
dass Daten und Adresse lange genug anstehen.

Grüße,

Peter

von Tim R. (mugen)


Lesenswert?

Hallo Peter,

dein letzter Tipp hat soweit recht gut geklappt. Diese EtherCAT 
Briefmarke von Beckhoff wird zurzeit über ein 8bit µc-Interface 
angesteuert. Die Datenübertragung erfolgt schon besser, aber bei 
gerade/ungeraden Adressen habe ich weiterhin das Problem. Dies liegt 
aber daran, dass der Controller auf der Briefmarke eigentlich die Daten 
intern mit 16bit verarbeitet. Somit hat er bereits die nächste Adresse 
schon verarbeitet, bzw. die nachfolgenden Daten im Cache. Ich werde 
morgen diese Briefmarke über den 16bit Adressbus ansteuern, wobei sich 
die maximale Lesezeit von 220ns auf ca. 320ns verlängert. Damit kommt 
mein DSP überhaupt nicht hin, aber evtl. wird dies durch das 
wiederholtes lesen kompensiert. Letztendlich gefällt mir die Lösung aber 
nicht, da ich eigentlich den Adressbereich über DMA auslesen wollte. Die 
BUSY Leitung könnte evtl. noch Abhilfe schaffen, dies werde ich mir aber 
am morgigen Tag nochmals näher ansehen. Für andere Lösungsvorschläge bin 
ich weiterhin offen.

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.