Obliczenia rezystora pullup I2C

10

Próbuję obsługiwać ten wyświetlacz LCD I2C za pomocą mikrokontrolera ATxmega16A4U .

Oba urządzenia są wymienione na liście pracujące z częstotliwościami zegara I2C do 400 kHz. Oba urządzenia są jedynymi urządzeniami na magistrali I2C.

Jednak opracowanie obliczeń dla granic rezystora podciągającego daje pewne dość dziwne wartości.

Obliczanie minimalnej wartości rezystora pullup I2C:

Rmin=Vcc0.43mA=966.7Ω

Patrząc na karty danych uC, na stronie 92 podano maksymalną pojemność wejściową pinów wynoszącą 10pF.

Jednak w przypadku LCD ma on na stronie 8 coś o nazwie Capacitive load represent by each bus lineoznaczonej jako Cb i jest wymieniony przy maksymalnej wartości 400pF. Zakładam, że powinienem po prostu dodać tę wartość do pojemności wejściowej 10pF uC, ale wydaje się to naprawdę wysokie, a obliczenia są niepewne.

Na przykład, kiedy próbuję obliczyć maksymalną wartość rezystora podciągającego dla zegara 400 kHz:

Rmax=300ns10pF+400pF=731.7Ω

Czy źle interpretuję arkusz danych LCD? Oczywiście maksymalna dopuszczalna wartość rezystora podciągającego nie może być mniejsza niż minimalna dopuszczalna wartość.

podobnie, jeśli założę maksymalną pojemność magistrali netto 400 pF, otrzymam:

Rmax=300ns400pF=750Ω

wciąż poniżej maksymalnej dopuszczalnej wartości.

helloworld922
źródło

Odpowiedzi:

11

W arkuszu danych Atmel znajduje się literówka, czas narastania dla przypadku 100 kHz powinien wynosić 1000ns, a nie 100ns (nie musiałby być mniejszy niż przypadek 400 kHz 300ns), wtedy otrzymasz:

1us400pF=2.5kΩ ; dla obudowy 100 kHz

Karta danych LCD (prawie na pewno) oznacza maksymalną pojemność magistrali, a nie pojemność, którą dodaje do magistrali. Prawdopodobnie dodaje około 10pF. Możesz to sprawdzić za pomocą miernika LCR lub po prostu ustawić rezystor 2k i spojrzeć na czasy narastania.

Wiele urządzeń nie jest w pełni zgodnych z oficjalnymi specyfikacjami 400 kHz , dlatego najlepiej zapoznać się z nimi, aby zrozumieć warunki, w których 400 kHz może działać (pojemność magistrali, źródło podciągania / źródła prądu itp.) Patrz w szczególności sekcja 6 (na przykład patrz Uwaga 4 na str. 47:

[4] Aby sterować pełnym obciążeniem magistrali przy 400 kHz, wymagane jest 6 mA IOL przy 0,6 V VOL. Części niespełniające tej specyfikacji mogą nadal działać, ale nie przy 400 kHz i 400 pF)

Ponadto te tabele są bardzo pomocne i wyglądają na zgodne z obliczeniami:

I2C Pullups

Oli Glaser
źródło
Tak, zauważam to w arkuszu danych. sygnał 400 kHz powinien mieć krótszy czas narastania niż sygnał 100 kHz: D
helloworld922
1

Twoje obliczenia mają sens. Podobne obliczenia znajdują się w tej notatce aplikacji TI (sekcja 4.1) . Zauważ, że używają V cc = 1,8 V do obliczania R min .

Można sobie wyobrazić, że C b to maksymalna pojemność magistrali, z którą LCD może współpracować, a nie pojemność, którą LCD dodaje do magistrali. Możesz przetestować pojemność wejść I 2 C, mierząc ich stałą RC. Zapewniłoby to kontrolę rozsądku rzędu wielkości.

Nick Alexeev
źródło