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
Hier mein richtiger Account, habe mich wohl vergessen anzumelden. mfg Mert
Hallo Hast du den can bus terminiert? Was heißt keine richtigen Signale? Schau dir vor dem tranciever mal das can.tx Signal an
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
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.
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.
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
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
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
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?
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
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 :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.