Qual è la velocità di risposta per I2C?


10

Sto configurando I 2 C su un PIC18 usando le funzioni integrate del compilatore C18 come descritto nella sezione 2.4 della documentazione :

void OpenI2C2( unsigned char sync_mode,
    unsigned char slew );

Non sono sicuro di cosa dovrei fare slew. Posso scegliere tra due opzioni, definite in i2c.h:

  • SLEW_OFF: Velocità di risposta disabilitata per la modalità 100 kHz
  • SLEW_ON: Velocità di risposta abilitata per la modalità 400 kHz

Nel foglio dati nel registro 15-1, pagina 257, le due opzioni sono spiegate in modo un po 'più dettagliato:

  • 1 = Controllo della velocità di risposta disabilitato per la modalità di velocità standard (100 kHz e 1 MHz)
  • 0 = Controllo della velocità di risposta abilitato per la modalità ad alta velocità (400 kHz)

Non capisco però - ho un paio di domande:

  1. Qual è slew rate?

  2. Per me, le due opzioni non hanno senso: cosa succede se desidero disabilitare la velocità di risposta per 400kHz e abilitarla per 100kHz? Perchè è questo?

  3. Quando dovrei scegliere SLEW_OFFe quando SLEW_ON?

pic  c  i2c  software  c18 

Risposte:


8

La velocità di risposta è la velocità con cui il segnale passa da basso ad alto o viceversa. Limitando questa transizione improvvisa, è possibile ridurre la suoneria dai riflessi del segnale e limitare la diafonia tra le linee del segnale.

Il modo in cui funziona, tuttavia, è che a 100kHz, le velocità del segnale sono così lente che la velocità di risposta non ha importanza; a 400kHz potresti essere in grado di riparare un circuito altrimenti problematico limitandolo; ma poi quando arrivi a 1MHz hai davvero bisogno di tutta la velocità di transizione che puoi ottenere, e quindi devi solo fare una buona corrispondenza del segnale e instradare le tue linee più attentamente.

Il bit in questione non fa altro che abilitare o disabilitare la funzione. Il resto è semplicemente un consiglio. Le velocità sono tra parentesi, in quanto è solo un suggerimento.


Grazie! Sembra essere una buona opzione - perché non dovrei usare il controllo della velocità di risposta?

2
@CamilStaps - La mia comprensione, sembra che potresti aver letto male la risposta. Avere transizioni nitide (SLEW_ON) provoca rumore e squilli extra EMI. Avere transizioni lente (SLEW_OFF) riduce l'IME ma riduce la frequenza massima utilizzabile del collegamento. È un compromesso.
Tim

@gbarry: Ah, quindi con il controllo della velocità di risposta disattivato il segnale è il più vicino possibile alle onde quadrate. Con il controllo della velocità sul l'onda alta / bassa transazioni sono più inclinati (= meno verticale) di quello che altrimenti sarebbero?
angelatlarge,

1
È corretto, anche se non sono sicuro di quanto sia drammatico sul PIC (dovrei verificarlo). Nota storica: le specifiche RS232 avevano un limite di velocità di risposta, quindi qualcuno è uscito con un chip driver che aveva buoni segnali di uscita in pendenza. E poi tutti abbiamo iniziato a utilizzare frequenze bps sempre più veloci, quindi non potevamo usare quel chip ...
gbarry

1
Tre anni dopo, e ho avuto la stessa domanda, ma in realtà l'ho misurata. Per riferimento futuro, su un PIC16F1454 con pull-up da 4,7k e un singolo slave sul bus, il tempo di caduta è di 2,9 ns senza limitazione della velocità di risposta (possibilmente limitato dalla mia sonda da 150 MHz) e 151 ns con limitazione della velocità di risposta. Non influisce sui tempi di salita.
pipe
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.