Zynqberry als Knoten für ein CAN Bus System

Gast #5174049
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)
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
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.
(Firma: Student)
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
Gast
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
Persönliche Seite
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)
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.