Forum: Mikrocontroller und Digitale Elektronik lpc1114: Verwendung open-drain pins im OD-Modus und als "normale" GPIO-Pins


von Roland H. (batchman)


Lesenswert?

Hallo,

beim lpc1114 sind Pins PIO0_4 und PIO0_5 als I2C-konforme 
Open-Drain-Pins ausgelegt. Sie können aber auch als "General purpose 
digital input/output pin (open-drain)" verwendet werden.

Im Datenblatt auf Seite 72 steht explizit "Selects function PIO0_4 
(open-drain pin)", im Gegensatz bspw. zu "Selects function PIOx_y.". Das 
explizite OD-Bit, das zwischen "Standard GPIO output" und "Open-drain 
output" umschaltet, gibt es konsequenterweise nicht.

Mir ist nicht klar, ob nun ausschliesslich "open-drain" als Modus zur 
Verfügung steht, und wie dieser verwendet wird.

Deshalb folgende Fragen:

- Können diese Pins als ganz normale als "input" oder "output"-Pins 
konfiguriert werden? M. E. sagt das Datenblatt "nein".

- Wenn nun der open-drain-Modus aktiv ist:
  GPIOxDIR-Bit auf 1, GPIOnDATA-Bit auf 0 => Pin zieht nach GND?
  GPIOxDIR-Bit auf 1, GPIOnDATA-Bit auf 1 => Pin macht "zu"?

  GPIOxDIR-Bit auf 0, aus dem GPIOxDATA kann hi/lo ausgelesen werden?

- Open-drain-Modus: Muss explizit zwischen "in" und "out" umgeschaltet 
werden, oder geht es auch ohne, wie in in 
Beitrag "Re: DS18x20 unter FreeRTOS und LPCXpresso 1769" ?


Danke

Ciao
Roland

von Lothar (Gast)


Lesenswert?

Open-Drain heisst nur dass diese Pins keine internen Pull-Widerstände 
haben, die man zuschalten kann. Die können aber ganz normal als GPIO 
genutzt werden, nur eben mit externem 10k Pull-Up (High) oder Pull-Down 
(Low).

von Jim M. (turboj)


Lesenswert?

Es ist möglich, das bei diesen I²C-kompatiblen Pins gar keine "High" 
Treiber Transistoren verbaut sind. Damit funktionieren diese nur als 
"Open Drain".

Hintergrund ist die vollständige Kompatibilität zu I²C, die fordert dass 
der Bus auch bei abgeschalteten Slaves funktionieren muss. Durch die 
parasitäre Diode in den High-Treibern - normalerweise intern wie ein 
MOSFET ausgeführt - würde der Bus aber bei normalen Pins auf "0" gezogen 
werden sobald der Chip nicht mit Spannung versorgt ist (VCC = 0V). Darum 
lässt NXP diese Treiber bei den I²C Pins weg.

von Roland H. (batchman)


Lesenswert?

Lothar schrieb:
> Die können aber ganz normal als GPIO
> genutzt werden, nur eben mit externem 10k Pull-Up (High)

So habe ich das inzwischen gemacht

Jim Meba schrieb:
> Hintergrund ist die vollständige Kompatibilität zu I²C, die fordert dass
> der Bus auch bei abgeschalteten Slaves funktionieren muss.

Danke für die ausführliche Info. Könnte sich NXP für ihr Datenblatt 
ausborgen :-)

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.