Jaka jest prędkość zabicia dla I2C?

10

Konfiguruję I 2 C na PIC18 przy użyciu wbudowanych funkcji kompilatora C18, jak opisano w sekcji 2.4 dokumentacji :

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

Nie jestem pewien, co powinienem zrobić slew. Mogę wybrać jedną z dwóch opcji zdefiniowanych w i2c.h:

  • SLEW_OFF: Szybkość wysyłania wyłączona dla trybu 100 kHz
  • SLEW_ON: Częstotliwość opadania włączona dla trybu 400 kHz

W arkuszu danych w rejestrze 15-1, strona 257, dwie opcje wyjaśniono nieco bardziej szczegółowo:

  • 1 = Kontrola prędkości opadania wyłączona dla trybu prędkości standardowej (100 kHz i 1 MHz)
  • 0 = Kontrola prędkości wlewu włączona dla trybu wysokiej prędkości (400 kHz)

Nie rozumiem tego jednak - mam kilka pytań:

  1. Co to jest szybkość zabijania?

  2. Dla mnie te dwie opcje nie mają sensu - co zrobić, jeśli chcę wyłączyć szybkość zmiany częstotliwości dla 400 kHz i włączyć ją dla 100 kHz? Dlaczego to?

  3. Kiedy powinienem wybrać SLEW_OFFi kiedy SLEW_ON?


źródło

Odpowiedzi:

8

Szybkość przesuwania to szybkość, z jaką sygnał zmienia się z niskiej na wysoką lub odwrotnie. Ograniczając to nagłe przejście, możesz zmniejszyć dzwonienie z odbić sygnału i ograniczyć przesłuch między liniami sygnałowymi.

Sposób, w jaki to działa, polega na tym, że przy częstotliwości 100 kHz częstotliwości sygnałów są tak wolne, że szybkość narastania tak naprawdę nie ma znaczenia; przy 400 kHz możesz być w stanie naprawić problematyczny obwód, ograniczając go; ale kiedy dojdziesz do 1MHz, naprawdę potrzebujesz całej prędkości przejścia, jaką możesz uzyskać, więc musisz po prostu dobrze dopasować sygnał i ostrożnie poprowadzić linie.

Ten bit nie ogranicza się do włączenia lub wyłączenia tej funkcji. Reszta to po prostu rada. Prędkości podano w nawiasach, ponieważ jest to tylko sugestia.

gbarry
źródło
Dzięki! Wydaje się to być dobrą opcją - dlaczego nie miałbym używać kontroli szybkości narastania?
2
@CamilStaps - Moje rozumienie, wygląda na to, że mogłeś źle odczytać odpowiedź. Ostre przejścia (SLEW_ON) powodują dodatkowy szum EMI i dzwonienie. Posiadanie powolnych przejść (SLEW_OFF) zmniejsza EMI, ale zmniejsza maksymalną użyteczną częstotliwość łącza. To jest kompromis.
Tim
@gbarry: Ach, więc przy wyłączonej kontroli szybkości narastania sygnał jest tak bliski falom kwadratowym, jak tylko może to zrobić uC. Dzięki kontroli szybkości narastania napięcia na standardu High / Low przejścia są bardziej nachylone (= mniej pionowym) niż miałoby to miejsce?
angelatlarge
1
Zgadza się, chociaż nie jestem pewien, jak dramatyczne jest to na PIC (powinienem to sprawdzić). Uwaga historyczna: specyfikacja RS232 miała ograniczenie szybkości narastania, więc ktoś wyszedł z układem sterownika, który miał ładne sygnały wyjściowe nachylone. A potem wszyscy zaczęliśmy używać coraz szybszych bps, więc nie mogliśmy użyć tego chipa ...
gbarry
1
Trzy lata później miałem to samo pytanie, ale właściwie to zmierzyłem. Dla przyszłego odniesienia, w przypadku PIC16F1454 z podciąganiem 4,7k i pojedynczym urządzeniem podrzędnym w autobusie, czas opadania wynosi 2,9 ns bez ograniczenia prędkości narastania (ewentualnie ograniczone przez moją sondę 150 MHz) i 151 ns z ograniczeniem prędkości narastania. Nie wpływa na czas narastania.
rura