Forum: FPGA, VHDL & Co. xgpiops.h vs. xgpio.h


von User (Gast)


Lesenswert?

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.

von Marius W. (mw1987)


Lesenswert?

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

von User (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.