Poradnik elektronika

FAQ Forum dyskusyjnego



Polecamy

Dyskusja na temat:



SPOSOBY LOKALIZACJI USZKODZEŃ MAGISTRALI I2C
TYPOWE PRZYPADKI USZKODZEŃ

monitor magistrali i2c

Przed przystąpieniem do lokalizacji jakichkolwiek uszkodzeń, które mogą mieć związek z magistralą sterującą, należy sprawdzić, czy na liniach SDA i SCL występują jakiekolwiek przebiegi oraz czy panujące na niej poziomy logiczne są poprawne. Przypomnijmy, że dla większości układów scalonych poziomy te są określone następująco: stan niski odpowiada napięciu poniżej 1.5 V, zaś stan wysoki powyżej 3.0 V.

Do obserwacji przebiegów zaleca się stosowanie oscyloskopu, próbnika stanów logicznych albo specjalizowanych testerów. Nie należy natomiast używać mierników uniwersalnych, gdyż ich wskazania nie informują jednoznacznie o stanie magistrali. Pokazują one, bowiem zwykle wartość średnią przebiegu cyfrowego, która zależna jest od tego, czy w określonym przedziale czasu częściej występuje stan niski czy też wysoki.

Obserwacji poziomów logicznych należy dokonywać przy urządzeniu włączonym do stanu pracy. Może się, bowiem okazać, że w przypadku, gdy występuje jedynie napięcie standby, magistrala I2C znajduje się stale w stanie niskim wyłącznie dlatego, że podłączone do niej układy (np. dekodera teletekstu, głowicy czy stereo dekodera), na skutek braku zasilania stanowią duże obciążenie nie pozwalając na powrót do stanu wysokiego. W prawidłowo działającym urządzeniu, z chwilą pojawienia się wszystkich napięć zasilających, obydwie linie szyny I2C powinny zostać natychmiast zwolnione.

O uszkodzeniu magistrali możemy więc mówić dopiero, jeśli po sprawdzeniu zasilania wszystkich dołączonych do niej układów poziomy na liniach pozostają nieprawidłowe, albo gdy badany układ nie reaguje mimo poprawnych stanów. Wtedy przystępujemy do lokalizacji awarii. Poniżej opisano typowe przykłady uszkodzeń magistrali:

1. Zwarcie dowolnej linii szyny I2C do masy

Najczęściej spotykanym, a zarazem stosunkowo prostym w zlokalizowaniu jest uszkodzenie, polegające na zwarciu jednej linii (SDA lub SCL) do masy. Ściślej biorąc, nie jest to zwykle "czyste" zwarcie, gdyż zawsze istnieje pewne szczątkowe napięcie, którego wartość (w całym obserwowanym przedziale czasu) nie przekracza poziomu odpowiadającego stanowi niskiemu, w większości przypadków jest to nie więcej niż 0.5V. Ogólnie mówiąc chodzi tu o sytuację, w której na szynie nie można wymusić stanu wysokiego. W takim przypadku należy:

  • sprawdzić, czy nie nastąpiło uszkodzenie rezystorów podpinających obydwie linie szyny do napięcia zasilania +5V (zwykle są to rezystory o wartościach kilku [k om]),
  • a jeśli rezystory są sprawne, odłączać od magistrali I2C kolejno poszczególne układy, każdorazowo sprawdzając poziom napięcia na uszkodzonej linii, aż do momentu, kiedy zwarcie ustąpi, czyli do momentu zlokalizowania "winnego" układu.

2. Brak możliwości wymuszenia stanu niskiego na szynie

Odwrotną sytuacją do opisanej powyżej jest przypadek, w którym stany na liniach SDA lub SCL nie są przełączane od poziomu niskiego do wysokiego, lecz w ograniczonym (i to od dołu) zakresie, np.: 2 V = 5 V. Pomimo tego, że szyna nie jest zwarta do masy, to z punktu widzenia mikrokontrolera sterującego jest również uszkodzona, gdyż nie można wymusić na niej stanu niskiego.

Sposób postępowania jest identyczny jak w przypadku zwarcia szyny. Należy sukcesywnie odłączać od magistrali kolejne układy, dopóki uszkodzenie nie ustąpi.

Powodem takiego zachowania może być brak umasienia interfejsu I2C, zawartego wewnątrz układu scalonego. Jest to szczególnie istotne w przypadku rozbudowanych układów, w których wymagane jest doprowadzenie kilku mas do różnych wyprowadzeń (masa analogowa, cyfrowa itp.). Przy kilku wyprowadzeniach przeznaczonych do dołączenia masy, brak jest zazwyczaj połączeń wewnątrz samego układu. W takim przypadku należy koniecznie sprawdzić poprawność dołączenia zewnętrznych mas do każdego z wyprowadzeń.

Jeśli wszystkie połączenia są poprawne oznacza to uszkodzenie układu.

3. Wykrywanie uszkodzeń w przypadku, gdy poziomy napięć na magistrali są prawidłowe

Rzadziej występującym, lecz jednocześnie o wiele trudniejszym do naprawy jest takie uszkodzenie w obrębie magistrali, które nie uwidacznia się przesunięciem poziomów napięć. Sytuacja taka ma miejsce wówczas, gdy część układów dołączonych do szyny działa poprawnie, a część źle. Taki przypadek zwykle wyklucza winę mikrokontrolera sterującego, gdyż nie jest prawdopodobne, aby uszkodził się on w taki sposób, aby część układów obsługiwał, a o części nagle "zapomniał", pomimo że wcześniej potrafił się z nimi komunikować.

W takiej sytuacji zaleca się stosowanie odpowiednich przyrządów ułatwiających poszukiwanie uszkodzeń. Tanim, prostym i bardzo skutecznym jest tester układów I2C . Jego działanie polega na sprawdzeniu, czy układ potwierdza rozkazy kierowane do niego przez mikrokontroler (obowiązek generowania potwierdzenia wynika z protokołu komunikacji na magistrali). Jeśli potwierdza, oznacza to, że komunikacja pomiędzy mikrokontrolerem sterującym a sterowanym układem jest poprawna i uszkodzenia należy szukać poza magistralą sterującą. Jeśli podejrzany układ nie odpowiada, przed jego wymianą warto jeszcze na wszelki wypadek sprawdzić poprawność połączeń doprowadzających do niego sygnały SDA i SCL.

W niektórych sytuacjach cenna może się okazać możliwość wysłania na magistralę rozkazu bez udziału mikrokontrolera sterującego. Możliwość tworzenia i wysyłania informacji na magistralę przy użyciu komputera osobistego opisana została przy okazji opisu interfejsu I2C.