Minimalna szybkość zegara i niezawodność I2C

12

Czy istnieje minimalna częstotliwość taktowania określona przez I2C? Wiem, że najczęściej stosowana częstotliwość taktowania to 100 kHz i istnieje tryb „szybki” 400 kHz obsługiwany przez niektóre urządzenia oraz szybszy tryb jeszcze obsługiwany przez inne urządzenia (myślę, że 1 MHz?). Ponieważ sygnał SCK jest generowany przez urządzenie nadrzędne, zakładam, że można by pracować z dużo wolniejszą prędkością niż którykolwiek z nich - czy w praktyce istnieje dolna granica? W jakim stopniu urządzenia podrzędne troszczą się o częstotliwość taktowania (np. Czy często mają krótkie limity czasu)? Pytam dlatego, że zastanawiam się, czy nie mogę uruchomić I2C na dłuższą odległość (np. 20 stóp), aby niezawodnie programować EEPROM I2C w konfiguracji testera produkcyjnego. Zakładam, że nie będzie działać niezawodnie na tej odległości przy standardowych szybkościach transmisji danych.

vicatcu
źródło
Tryb Hi-Speed ​​pozwala na zegar 3,4 MHz przy maks. Pojemność magistrali 100 pF.
stevenvh

Odpowiedzi:

16

Nie, nie ma minimalnej częstotliwości, minimalna częstotliwość zegara wynosi 0 lub DC. Patrz specyfikacja , strona 48.

Ale będziesz musiał zwracać uwagę na czasy wschodów i upadków. Są to odpowiednio 1000 ns i 300 ns. A dłuższy kabel o pewnej pojemności wpłynie na zbocza, niezależnie od częstotliwości.

To właśnie pojemność wraz z rezystancjami podciągającymi determinuje czas narastania. Czas opadania nie stanowi problemu, ponieważ FET, który ciągnie linię w dół, ma bardzo niski opór, a następnie stała czasu opadania będzie również bardzo mała. Pozostaje nam czas narastania. Aby uzyskać czas narastania 1000 ns na kablu 200 pF, rezystory podciągające nie powinny być większe niż 2,2 kΩ. (czas wzrostu do 90% wartości końcowej).

wprowadź opis zdjęcia tutaj

Wykres pokazuje maksymalną rezystancję podciągania (w Ω) w funkcji pojemności kabla (w pF), aby uzyskać 1000 ns rosnących krawędzi. Należy pamiętać, że urządzenia I2C nie muszą pochłaniać więcej niż 3 mA, dlatego przy 3,3 V pojemność magistrali nie powinna być wyższa niż około 395 pF, w przeciwnym razie rezystancja podciągania musiałaby być mniejsza niż 1100 Ω i pozwolić na więcej niż 3 mA. To zielonkawe przerywane linie. Dla pracy 5 V dopuszczalna pojemność wynosi nawet 260 pF, dla wartości podciągania 1667 Ω (fioletowe przerywane linie).

stevenvh
źródło
Kto powiedział, że urządzenie I2C może zatopić maksymalnie 3 mA? Moje urządzenia I2C mają VOL = 0,4 V dla IOL = 20mA. Oznacza to, że może pochłaniać znacznie więcej prądu, więc rezystory podciągające mogą być mniejsze. To powoduje, że można obsłużyć większą pojemność. @stevenvh
Kono
Przykładem są niewolnicy Arduino. Mogą opadać do 10 mA przed VOL = 0,4-0,5 V. Oznacza to, że mogą jeździć autobusami o znacznie większym obciążeniu.
Kono
Większość urządzeń I2C może rzeczywiście zatopić tylko 3mA, ale obecnie jest o wiele więcej urządzeń o większych możliwościach zatapiania. Szczęściarz!
Kono
4

Uruchomiłem I2C przy około 100Hz bez problemu. Jak powiedział @stevenvh, martw się o maksymalną prędkość i pojemność linii.

Sérgio Sena
źródło
2
Mam jednoetapowy i2c. Nie gwarantuje to, że każde znalezione urządzenie zostanie wykonane w ten sposób, ale technicznie nic nie stoi na przeszkodzie, aby działało „aż do prądu stałego”.
gbarry
4

Powinieneś być w stanie rozwiązać problemy z długością linii dzięki starannemu doborowi sterowników i dopasowaniu impedancji.

Inną opcją, zakładającą, że długi bieg jest częścią konfiguracji, a nie produktu, może być użycie czegoś, co dobrze radzi sobie z odległością, takiego jak RS422 (lub praktycznie mówiąc RS232), aby porozmawiać z mikrokontrolerem umieszczonym w złączu wiązki testowej, który wtedy mówiłby i2c na dość krótkim dystansie do celu.

Lub możesz to zrobić prawdopodobnie bez inteligencji, używając małej płytki, która stanowiła mostek dla protokołu sygnalizacji różnicowej z odbiornikami wyzwalającymi Schmidta do i od sygnalizacji i2c w celu.

Twoje przebiegi prawdopodobnie nie są wystarczająco długie, aby czasy propagacji sygnału (przy braku problemów z rozliczeniem) wymagałyby szczególnie niskich częstotliwości taktowania, aby uniknąć zawracania autobusu, gdy stare dane są jeszcze w locie.

Oczywiście będziesz chciał wykonać weryfikację odczytu danych, które właśnie zaprogramowałeś.

Dla porównania, monitory VGA IIRC mają odczyt ID i2c (czy to i2c-podobny), który prawdopodobnie nadal działa, jeśli dodasz 6-metrowy przedłużacz do standardowego kabla 3 lub 4 stóp.

Chris Stratton
źródło