Calcoli della resistenza pullup I2C


10

Sto cercando di guidare questo display LCD I2C con un microcontrollore ATxmega16A4U .

Entrambi i dispositivi sono elencati per funzionare con frequenze di clock I2C fino a 400 kHz. I due dispositivi sono gli unici dispositivi sul bus I2C.

Tuttavia, elaborare i calcoli per i limiti della resistenza di pull-up fornisce alcuni valori piuttosto strani.

Calcolo del valore minimo della resistenza pullup I2C:

Rmion=Vcc-0.43mUN=966,7Ω

Guardando i fogli dati uC, a pagina 92 ​​elenca la capacità di ingresso pin massima di 10pF.

Tuttavia, per l'LCD, ha a pagina 8 qualcosa chiamato Capacitive load represent by each bus lineetichettato come Cb, ed è elencato ad un valore massimo di 400pF. Suppongo che dovrei semplicemente aggiungere questo valore alla capacità di input di 10pF uC, ma questo sembra davvero alto e i calcoli sono complicati.

Ad esempio, quando provo a calcolare il valore massimo della resistenza pullup per un orologio a 400 kHz:

Rmun'X=300nS10pF+400pF=731,7Ω

Sto interpretando male il foglio dati LCD? Ovviamente il valore di resistenza di pullup massimo consentito non può essere inferiore al valore minimo consentito.

allo stesso modo, se presumo una capacità netta massima del bus di 400pF, ottengo:

Rmun'X=300nS400pF=750Ω

ancora al di sotto del valore massimo consentito.

Risposte:


11

C'è un errore di battitura nel foglio dati Atmel, il tempo di salita per il caso 100kHz dovrebbe essere 1000ns, non 100ns (non dovrebbe essere inferiore al caso 400kHz di 300ns) quindi si ottiene:

1uS400pF=2.5KΩ; per il caso 100kHz

Il foglio dati LCD (quasi certamente) indica la capacità massima del bus, non la capacità che aggiunge al bus. Probabilmente aggiunge circa 10pF. Puoi verificare con un misuratore LCR o semplicemente impostarlo con un resistore 2k e guardare i tempi di salita.

Molti dispositivi non sono pienamente conformi alle specifiche ufficiali a 400 kHz , quindi è meglio fare riferimento a queste per comprendere le condizioni in cui 400 kHz possono funzionare (capacità del bus, pullup / sorgente di corrente / ecc.) Vedi in particolare la sezione 6 (vedi ad esempio nota 4 a pag.47:

[4] Per pilotare il carico del bus completo a 400 kHz, è necessario IOL 6 mA a 0,6 V VOL. Le parti che non soddisfano questa specifica possono ancora funzionare, ma non a 400 kHz e 400 pF)

Più avanti, queste tabelle sono piuttosto utili e sembrano concordare con i tuoi calcoli:

Pullup I2C


Sì, lo noto sul foglio dati. un segnale a 400kHz dovrebbe avere un tempo di salita più breve di un segnale a 100kHz: D
helloworld922

1

Il tuo calcolo ha senso. C'è un calcolo simile in questa nota dell'app TI (sezione 4.1) . Si noti che usano V cc = 1,8 V per calcolare R min .

È ipotizzabile che C b sia la capacità massima del bus con cui LCD può lavorare, e non la capacità che LCD aggiunge al bus. È possibile testare la capacità degli ingressi I 2 C misurando la loro costante RC. Ciò fornirebbe il controllo di integrità dell'ordine di grandezza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.