Pod magistralę I2C jest dostępna mnogość scalaków: sensorów temperatury, przetworników AD / DA, sterowników wyświetlaczy, ekspanderów i wielu innych. Ażby się chciało to wszystko podłączyć do PC i się pobawić ;). Na niniejszej stronie zaprezentuję prostą przystawkę mojej konstrukcji, dzięki której komputer PC staje się urządzeniem master w magistrali I2C. Przystawka korzysta z portu szeregowego. Schemat poniżej:
Całość można spokojnie zmontować metodą "pająka" i zapakować w obudowę DB9. Układ był testowany z ekspanderem PCF8574 i czujnikiem temperatury TMP100 - żadnych nieprawidłowości wynikających z drobnych niezgodności ze specyfikacją I2C nie stwierdziłem. Zasilanie podłączanych układów można pociągnąć również z portu - tu z linii TxD, na której programowo jest wystawiony stan wysoki. To tyle o przystawce. Teraz czas na oprogramowanie.
Program współpracuje z opisywaną przystawką. Umożliwia: wykrycie obecności urządzeń - podaje ich adresy (zakładka skaner). Oprócz tego możliwe jest próbne zrealizowanie komunikacji z urządzeniem slave (zakładka tester). Omówienie zakładek:
Ustawienia - wybór portu, do którego podłączona jest przystawka, określanie długości taktu SCL, testowanie przystawki
Skaner - skaner magistrali - po wybraniu przycisku "start" program wysyła na magistralę sygnał "start" i kolejny adres od 0 do 255 - jeśli otrzyma odpowiedź (ACK) wyświetla adres. Dodatkowo dla adresów nieparzystych, które służą do odczytywania danych, odczytuje jeden bajt;
Tester - umożliwia próbne zrealizowanie komunikacji z urządzeniem przy pomocy poleceń, które są kolejno wykonywane po wybraniu przycisku "start". Polecenia i ich parametry trzeba określić w tabeli - pierwsza kolumna zawiera polecenia, druga wartość do wysłania (przez write) lub odebraną (przez read), trzecia komentarz. Dostępne polecenia sterujące magistralą: start, stop, restart, read, write.Inne polecenia i zbędne parametry są ignorowane. Parametr (bajt) jest obowiązkowy tylko dla polecenia write zapisującego bajt do magistrali. Polecenie read czyta bajt z magistrali i zapisuje w kolumnie obok. Uwaga: polecenie read wysyła sygnał ACK natomiast write informuje tylko o jego braku.
Jest możliwa pod warunkiem, że korzystają z linii portu szeregowego. W tym przypadku należy poddać edycji plik i2c.ini:
[I2C] SDALOW=CLRDTR SDAHIGH=SETDTR SCLLOW=CLRRTS SCLHIGH=SETRTS SDAWe=DSR SDANeg=false POWERON=SETTXD [PORT] port=com2 TimeSCL=10
i pozmieniać wartości odpowiednich pozycji w sekcji I2C. Uwaga: program nie jest odporny na błędne definicje.
Program jest darmowy. Jeśli jesteś zainteresowany kodem źródłowym w Delphi 5 skontaktuj się ze mną.