PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LPC1768 internal Pullup



Siro
15.03.2011, 14:21
Hallo,
ich habe eben folgendes beim LPC1768 festgestellt:
Nach einem Reset sind normalerweise die IO Pins auf Input geschaltet, zudem ist laut Datenblatt auch ein interner Pullup aktiviert. Wenn ich mir die Pins ansehe, ohne daß ich überhaupt eine Software gestartet habe, ich halte den ResetPin auf LOW, messe ich 2,3 Volt. Das scheint auf fast allen Portpins so zu sein. Meine Versorgung ist 3,3 Volt.
Dann habe ich mittels Software die Pins konfiguriert. Input, Normal IO kein Open Drain und den internen Pullup eingeschaltet. Auch wieder 2,3 Volt zu messen. Nach meinen Berechnungen, muß da in der CPU ein zusätzlicher interner Pulldown von ca. 130 Kilo sein, sonst würde ich nicht auf solche Werte kommen, oder die Pullups hängen irgendwie intern an 2,3 Volt. Kann mir viellicht jemand etwas dazu sagen ?
Laut Datenblatt gibt es für die IO-Leitungen separate Versorgungspins, die sind bei mir alle an 3,3 Volt. ...Ich hoffe mal, mein Innenwiderstand des Messgerätes ist es auch nicht....:-)
Fluke 87, auch das zweite Instrument zeigt identische Werte. Mit einem zusätzlichen 1M Widerstand nach 3,3Volt bekomme ich den Portin auf ca. 3,0 Volt hoch gezogen. Da muss irgendwo intern noch Strom wegfließen.
Oder messe ich tatsächlich etwas verkehrt ? Oder ist der interne Pullup tatsächlich > 4 MOhm, dann wäre es tatsächlich ein Messfehler.

Hier der Code:


int main(void)
{

LPC_PINSEL3.bits.P1_29 = 0; /* GPIO Mode RESET-STATE = 00 */
/* 00 = GPIO-Port */
/* 01 = MCOB2 */
/* 10 = PCAP.1.1 */
/* 11 = MAT0.1 */

LPC_PINMODE3.bits.P1_29 = 0; /* pin mode select RESET-STATE = 00 */
/* 00 = Pin has an on-chip pull-up resistor enabled. */
/* 01 = Repeater mode (see text below). */
/* 10 = Pin has neither pull-up nor pull-down resistor enabled. */
/* 11 = Pin has an on-chip pull-down resistor enabled. */

LPC_PINMODE_OD1.bits.P1_29 = 0; /* open drain mode RESET = 0 */
/* 0 = Pin is in the normal (not open drain) mode. */
/* 1 = Pin is in the open drain mode. */

LPC_FIO1DIR.bits.P1_29 = 0; /* direction RESET-STATE = 0 */
/* 0 = input */
/* 1 = output */

/* normaly the pin must set to High = VCC = 3,3 Volt */
/* because of input-mode with internal pull up in GPIO-mode */
/* the measured pin value is 2,3 Volt */
/* i think there must be an additional internal pulldown in the range of 130K */
/* i have short circuit the pin to ground an a current flows from 58 mikro Ampere */
/* this is identical to the the datashett "internal pullup current" */
/* if i measure with a 20MOhm input impeadance Voltmeter to ground, i see 2,3 Volt */
/* this is on all GPIO-Pins. */
/* to ensure, there is no software problem, i holds the Resetpin of the processor */
/* at low. All GPIOs have 2,3 Volt. */

Danke Euch,

Bei einem zusätzlichen, externen Pulldown von 1K, messe ich 58mV, bei 10K 580mV.bei 22K 1,26V
Also hat der interne Pullup, irgendetwas zwischen 35 und 60 K, entspricht auch dem Datenblatt mit I-Pullup-Current von typisch 50 mikro Ampere, gemessen hab ich 58 mikro Ampere wenn ich den Pin dirket nach Masse ziehe.

Siro

Siro
16.03.2011, 16:28
Ich habe soeben Rückmeldung von der Firma NXP erhalten:
Mit meiner Messung lag ich also richtig. In der CPU befinden sich keine Pullup oder Pulldown Widerstände sondern Stromquellen. Schaltungsbedingt können diese keine höheren Pegel am Ausgang als ca. 2,3 Volt liefern. Der eigentliche Pulldown bzw. Pullupstrom ist zudem Lastabhängig und hat keine lineare Funktion. Spezielle Informationen gibt es bei den Beschreibungen des LPC2000, hier wurde mir auch freundlicherweise gleich ein Auszug aus dem Datenblatt mit angehangen.
welches ich Euch gleich mit reingestellt habe.
------------------------------------------------------------------------
Originaltext von NXP:

The pull-ups are not resistors, but current sources. Their behavior is quite non-linear, as shown in the attached document (which is for LPC2300, but the effect is the same). As you can see, the pull-ups cannot deliver current above ~2.3V. Even the load of a multi-meter brings the pin down to 2.1V.

We specify the pull-ups as an effective resistor which would give the same short-circuit current when then pin were grounded. Since the current source delivers typically 50 µA (at least on all chips I've seen so far), the effective resistor would be 3.3V/50µA = 66 kOhm.

The pull-up guarantees that our pins see a high level when left floating as inputs. They might not be sufficient to guarantee a "1" for external hardware! In that case an external pull-up may be nee
--------------------------------------------------
Das wars dann schon, bis zur nächsten Frage...
Siro