Forum: FPGA, VHDL & Co. Zynqberry als Knoten für ein CAN Bus System


von Mert (Gast)


Lesenswert?

Moin,

Ich versuche mit einem Zynqberry TE0726-03 (SoC XC7Z007SCLG225) einen 
CAN Bus Knoten zu entwickeln. Es soll eine bare-metal Applikation sein. 
Ich bin recht neu in diesem Themengebiete und in diesem Forum. Ich 
versuche alles wichtige aufzulisten, was für die Hilfe notwendig ist. Da 
der SoC in Processing System und Programable Logic aufgeteilt ist, soll 
die Kommunikation vom µC zum CAN-Controller im PS  über den EMIO zum PL 
und dann auf die Pins am Zynqberry stattfinden. Sowohl Senden und 
Empfangen.

Bis jetzt habe ich ein HW Design mit dem IP Integrator in Xilinx Vivado 
entwickelt. Welches aus dem PS besteht und darin den CAN_0 aktiviert, 
Die Ausgänge habe ich dann external gemacht. Danach wurde das Design in 
HDL gewrappt, synth., rtl analyse, I/0 ausgewählt und schlussendlich der 
Bitstream generiert. Die HW wurde im HW Manager connected. Danach wurde 
der Bitstream auf die HW exportiert und das SDK geöffnet.

Im SDK habe ich eine fsbl applikation erstellt. Aus der Xilinx 
Bibliothek habe ich die Source Datei xcanps_polled_example.c in ein 
standalone Projekt eingebettet. LOOPBACK Modus wurde auf Normal Modus 
umgeändert. Danach habe ich ein bootimage als mcs Datei angelegt und mit 
der Reihenfolge die Dateien angelegt, fsbl.elf(bootloader), 
bitstream(datafile), can-projekt(datafile). Das Bootimage habe ich auf 
den QSPI geflashed und danach den FPGA programmiert ( grüne LED ging 
dann aus :/). Nachdem habe ich das can_project gerunned und da beginnen 
die Probleme. Mit dem Oszilloskop kann ich nicht mal ordentliche Signale 
empfangen.

Meine Frage jetzt erstmal, hab ich Schritte vergessen? Ist was im Code 
falsch? Ich kann nicht mal debuggen aber bei run-> Launch on HW(gdb) 
läuft es aber ich kriege keine CAN Signale am Oszilloskop? Ich bedanke 
mich schon im Voraus.

mfg Mert

von Mert A. (Firma: Student) (me_ar)


Lesenswert?

Hier mein richtiger Account, habe mich wohl vergessen anzumelden.

mfg Mert

von Jens (Gast)


Lesenswert?

Hallo

Hast du den can bus terminiert?
Was heißt keine richtigen Signale?
Schau dir vor dem tranciever mal das can.tx Signal an

von Mert A. (Firma: Student) (me_ar)


Lesenswert?

Moin,

ich habe bis jetzt nicht den Transceiver angeschlossen. Ich habe 
lediglich den zynqberry via USB mit meinem Laptop angeschlossen und 
versuche mit Messspitzen (mit Oszi. angeschlossen) an den jeweiligen 
Pins Spannungen abzulesen, die wie ein CAN- Signal aussehen. Mache ich 
da was falsch. Ich entschuldige mich für meine Unerfahrenheit. Wie würde 
es richtig aussehen? Ist es normal dass beim *program FPGA* die grüne 
LED ausgeht?

mfg Mert

von Jens (Gast)


Lesenswert?

Ich kenne dein Board nicht und welches Signal liegt an der LED an?
Wenn es das Done Signal ist und bei nicht konfiguriertem Fpga leuchtet 
kann es sein das diese LED nur anzeigt das der Fpga korrekt konfiguriert 
wurde sprich das bitstream file geladen und akzeptiert wurde.

Can rx und tx kannst du verbinden und damit den tranciever für erste 
loopback Tests weg lassen.

von Jens (Gast)


Lesenswert?

https://wiki.trenz-electronic.de/display/PD/TE0726+CPLD
Schau mal in der Mitte die LED Beschreibung..

LED Description
GREEN  ON when Zynq Done pin is down else OFF
RED  UART activity

Heißt also das der Fpga konfiguriert ist wenn die LED aus ist.

von Mert A. (Firma: Student) (me_ar)


Lesenswert?

Moin,

ich habe jetzt die Pins verbunden und am Oszi. eine Spannung 
aufgenommen, jedoch sieht es nach einem Einschaltvorganng auf 5V aus. 
Könntest du eine detaillierte Anweisung geben, was ich machen sollte. 
Danke Voraus.

mfg Mert

von Jens (Gast)


Lesenswert?

5v wären schon mal zu viel an den io Pins von dem Fpga.
Auf welche Pins hast du die Signale denn gelegt.
Hast du im Schaltplan geschaut ob die Pins komplett frei sind vom Fpga 
bzw SoC

von Mert A. (Firma: Student) (me_ar)


Lesenswert?

Ja aufjedenfall es wäre zuviel. Ich habe es auf den GPIO2 und GPIO3, das 
wären dann Zynq PIN K15 und J14.

mfg Mert

von Jens D. (jens) Benutzerseite


Lesenswert?

Ich gehe davon aus, dass dein Oszi da etwas falsch misst.
Die 2 Pins haben einen Pullup auf 3,3V was erstmal nicht schlimm ist.
Das ist bei CAN TX auch der Idle Zustand der Pins.

Du solltest an den Core mal einen Pin durch routen und einen Userpin 
einfach toggeln lassen.

Was hast du eigentlich an Erfahrungen mit dem Thema Controller und 
FPGAs?

von Mert A. (Firma: Student) (me_ar)


Lesenswert?

Ich kenne mich mit der Theorie (Aufbau/Funktionsweise) aus und hatte mal 
ein paar kleine Programmieraufgaben gemacht, aber mit xilinx vivado und 
sdk nicht wirklich was am Hut. Ich habe mir bis jetzt alle Schritte 
durch Foren und Tutorials selber beigebracht. Sonst nichts.

Ich habe jetzt bei vivado die I/O auf PULLUP eingestellt.

"Du solltest an den Core mal einen Pin durch routen und einen Userpin
einfach toggeln lassen."

Was meinst du damit? Ich habe das nicht verstanden :/ Soll ich noch 
einen Pin aktivieren?

mfg Mert

von Jens (Gast)


Lesenswert?

Die Frage ist, ob der Core läuft und nicht nur die Logik konfiguiert 
ist.
Das sind zwei komplett verschidene Dinge.
Daher würde ich versuchen einen IO Pin vom Core mal durch die Logik mit 
einem Package Pin zu verbinden und durch ein "C" Programm wackeln zu 
lassen.

Kommst du per Jtag mit Vivado in einen Debug Modus um dein Programm zu 
debuggen?

Wenn du mir ein Board zur freien Verfügung stellst könnte ich es selbst 
mal zu Hause versuchen :)

von Mert A. (Firma: Student) (me_ar)


Lesenswert?

Ich schätze die Logik ist nur konfiguriert. Ich kann dir leider das 
Gerät nicht versenden. Ich habe dir jedoch eine pn geschrieben.

mfg Mert

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.