Guten Tag, ich habe einen GPIO mit EDK in einem Projekt an den AXI Bus anlegt. Dieser erscheint auch im Projekt in SDK von Xilinx. In einem Beispiel wird "xgpiops.h" als GPIO-Treiber eingebunden. Diesen gibt es bei mir nicht. Stattdessen schlägt die Xilinx-Hilfe "xgpio.h" (gpio v3_01_a) vor. Damit funktioniert es. Nun die Frage: "xgpiops.h" = ältere Version "xgpio.h" = neuere Version? In "xgpio.h" vermisse ich soetwas wie XGpioPs_SetDirectionPin(), XGpioPs_SetOutputEnablePin(). Es wird stattdessen XGpio_mSetDataDirection() als Alternative geboten.
Ich glaube die xgpiops.h gehört zum Zynq Prozessor-Subsystem. Der hat eigene GPIO-Blöcke. Was du im EDK hinzufügst ist der Standard-AXI-GPIO von Xilinx und der geht mit der xgpio.h. Gruß Marius
Ok. Klar leuchtet ein. xgpio funktioniert auch super. Das einzige was nicht recht funktionieren will ist das korrekte Setzen des DDR mit XGpio_SetDataDirection(). Nach dem Initialisieren schreibe ich hier z.B. XGpio_SetDataDirection(1,0x01); Damit sind bei einem 8-Bit-Register Pin 7 bis Pin 1 als Ausgang definiert, Pin 0 ist ein Eingang. Pin 0: IN (-> Schalter 0) pin 1: OUT (-> Schalter 1) NUR ZUM TESTEN, OB FUNKTION KORREKT ARBEITET Pin 2: OUT (-> LED 2) pin 3: OUT ... Pin 4: OUT pin 5: OUT Pin 6: OUT pin 7: OUT ( Probe: XGpio_GetDataDirection(1) = 0x01) Liegt an Pin 0 und Pin 1 ein Schalter, an Pin 2 bis Pin 7 jeweils eine LED, dann tritt folgendes Problem auf: Lese ich den Port mit result = XGpio_DiscreteRead(&GPIO_Instance,1) aus, dann erwarte ich, dass ich mit dem Schalter 0 an Pin 0 das letzte Bit zwischen "0" und "1" kippen kann. Unabhängig davon, ob LED3,..,LED7 leuchten. Wenn ich Schalter 1 kippe, sollte sich nichts an dem "result" ändern (Da Pin 1 ja als Ausgang und nicht als Eingang definiert wurde). Sehe ich das so richtig? Mit Schalter 1 kippe ich gegen meine Erwartungen das zweite Bit zwischen "0" und "1". In EDK Studio ist für den betreffenden GPIO IO als Direction voreingestellt (müsste ich ja mit der XGpio_SetDataDirection() eigentlich überschrieben haben?!).
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.