mlodedrwale - arcyciekawy i przewspaniały blog o wszystkim

DIY Wszystkie

Dzisiaj chciałbym zaprezentować niezwykły skaner i tester urządzeń magistrali i2c!

Magistrala i2c, mimo, że dość wiekowa, ani trochę nie straciła na swojej popularności, wręcz przeciwnie, ciągle pojawiają się coraz to nowe układy korzystające z jej dobrodziejstw. Często zdarza się (przynajmniej mi), że mając nowy układ, po przeczytaniu datasheeta mam ochotę sprawdzić, czy dobrze zrozumiałem funkcje poszczególnych rejestrów, czy wartości zwracane przez procesor są takie, jakich się spodziewam. Zwykle w takim wypadku piszę prosty programik na procesor, montuję procesor do płytki  prototypowej, podłączam go do ft232, programuję procesor i za pomocą terminala odczytuje dane. Jeśli coś pójdzie nie tak, odczytam nie ten rejestr, wpiszę złą wartość do innego, muszę poprawić program, przekompilować go, zaprogramować procesor i liczyć, że wszystko będzie ok!  Kilka dni temu wpadłem na pomysł, jak procedurę testowania uprościć i w tym celu napisałem program IIC Tester.

Program wykorzystuje moduł FT232 do komunikacji z urządeniem i2c. Dzięki funkcji „bitbang” układu ft232 obywa się to bez pośrednictwa procesora!

Podłączenie

Aby używać modułu, wystarczy podłączyć linie SDA i SCL badanego układu do którejś z następujących linii układu FT232 (lub przejściówki opartej na tym układzie): TXD; RXD; RTS#; CTS#; DTR#; DSR#; DCD#; RI#. Oczywiście pamiętać należy o rezystorach podciągających obie linie do VCC! Następnie zaznaczamy w programie, które linie zostały wybrane i nacisnąć „Scan for I2C devices”. Urządzenia powinny zostać wykryte:

Skanowanie magistrali i2c za pomocą programu z pc przez usb i ft232

UWAGA: adresy urządzeń podawane są w formie 7 bitowej, niektóre datasheety podają adresy w formacie 8 bitowym, aby zamienić format 7 bitowy na 8 bitowy, wystarczy adres pomnożyć przez 2  i na odwrót).

Testowanie urządzenia

W celu komunikacji z urządzeniem, zapisywania i odczytywania z niego danych stworzyłem kilka prostych komend, za pomocą których opisujemy transmisję. Oto te komendy:

oraz dwóch dodatkowych komend nie związanych z transmisją:

Testowanie urządzeń i2c za pomocą programu z pc przez usb i ft232

Dla osób znających transmisję i2c komendy powinny być jasne, dlatego opiszę je skrótowo:

start – rozpoczęcie transmisji adres – adres urządzenia – w formacie 7-bitowym, w formacie szestnastkowym, r/w – wybieramy, czy chcemy zapisywać, do urządzenia, czy odczytywać, noack – opcjonalnie możemy wybrać, by nie wyświetlać, czy urządzenie zwróciło, czy nie bit potwierdzenia (ACK)

write – zapis bajtu do urządzenia, bajt_do_zapisania – w formacie szestnastkowym;

read – odczyt bajtu z urządzenia; Etykieta – etykieta pod jaką pojawi się odczytany bajt;

repstart – powtórzony start (repeated start), argumenty jak w przypadku start

stop – koniec transmisji.

cls – czyści prawe pole tekstowe

delay – opóźnienie o podaną ilość milisekund

Uwaga, wszystkie zapisy w formacie szestnastkowym muszą być w formacie „0x”, potem wartość, np: 0xFA, 0x03 itd.

Myślę, że łatwiej to będzie zrozumieć patrząc na kilka przykładów:

Zapis bajtu 0x00 pod adresem 0x6B do urządzenia o adresie 0x68:

Odczyt dwóch bajtów z urządzenia o adresie 0x68 , rozpoczynając od pozycji 0x43:

Wynikiem powyżsego powinno być:

Gdzie 0xAB i 0xCD to przykładowe wartości odczytane z urządzenia.

Myślę, że teraz wszystko powinno być jasne. Jeśli jednak nie będzie – zapytaj w komentarzu!

Ściągnij IIC TESTER
Download IIC TESTER




Dodaj komentarz