Zynqberry als Knoten für ein CAN Bus System

Gast #5174049
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
(Firma: Student) #5174164
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
Gast #5174189
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.
Persönliche Seite #5174431
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?
(Firma: Student) #5176969
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
Gast #5177142
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 :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren