Niech moc będzie z Tobą, czyli jak zasilać nasz system – cz.4

Pewnie wielu z Was zastanawiało się dlaczego przerwałem serię o zasilaniu systemu pozornie niezwiązanym postem o ekranie powitalnym. Miałem w tym swój bardzo konkretny cel 🙂

Jak pamiętacie, na ekranie było widoczne delikatne “przeskakiwanie” obrazu – szczególnie w momencie wyświetlania tapety z heksagonalnym wzorem. Wspomniałem również pod filmem, iż powodem tego zachowania jest niewystarczające odsprzęgnięcie linii zasilających procesor oraz wyświetlacz. Po przesiadce na interfejs FSMC znacząco wzrosła szybkość taktowania magistrali danych między panelem LCD a mikrokontrolerem, co oczywiście pociągnęło za sobą zwiększenie wrażliwości przesyłanych cyfrowo sygnałów na zakłócenia zewnętrzne.

Dodatkowym źródłem problemów jest tu również samo zasilanie – szybsze przełączanie stanów logicznych skutkuje bowiem powstawaniem niewielkich “szpilek” zakłóceń na liniach zasilających. Ich bezpośrednim źródłem jest konieczność “naładowania” lub “rozładowania” niewielkich pojemności wejść cyfrowych. Są one niewielkie, rzędu pojedynczych pikofaradów, jednak wraz ze wzrostem częstotliwości przebiegu cyfrowego, zwiększa się wpływ tych pojemności na jego kształt.

Wspomniana pojemność (a ściślej: pojemność bramki tranzystora) musi zostać skądś naładowana – źródłem energii jest oczywiście szyna zasilająca. Rozwiązaniem które stosuje się powszechnie, jest użycie dużej liczby niewielkich kondensatorów o pojemności około 100nF, położonych w bezpośrednim sąsiedztwie układów scalonych. W idealnych warunkach każdy pin zasilający powinien posiadać własny kondensator odsprzęgający. Stanowi on lokalny, niewielki rezerwuar energii elektrycznej, który jest w stanie szybko dostarczyć odpowiednią jej ilość, niezbędną do przełączenia stanów logicznych.

Jaki ma to związek ze skaczącym obrazem?

Wysyłanie poszczególnych pikseli na ekran wymaga wysłania odpowiedniej sekwencji sygnałów cyfrowych, z których każdy zmienia swój stan nawet do kilku razy na jedną taką operację. Jeśli dołożymy do tego przełączanie się stanów logicznych na magistrali danych, zależne od koloru wysyłanego aktualnie piksela, okaże się że każdorazowo może to być do 20 wejść, które muszą zostać “przeładowane”. To powoduje powstanie znacznych zakłóceń na szynach zasilania, a te przenoszą się na linie danych, powodując przekłamania w sygnale. I to właśnie przekłada się na “skoki” obrazu.

Być może bardziej spostrzegawczy Czytelnicy zauważyli, iż wspomniane “skakanie” nie występowało na ekranie powitalnym…

Dlaczego?

A czym różnił się on od ekranu głównego? Brakiem tła! Obszary ekrany zawierające jednolity kolor nie wymagają od nas zmiany stanu linii danych, służących do ustawienia koloru piksela. Pozostają one niezmienne przez dłuższy czas i nie generują tak dużej ilości zakłóceń. Z drugiej strony nasze tło, zawierające szybkie przejścia tonalne od czerni do bieli, do tego w regularnych odstępach powodowało konieczność cyklicznego przełączania niemal wszystkich linii. Czerń jest przedstawiana jako same zera, biel – jako same jedynki (zapis binarny typu RGB).

Mam nadzieję, że w ten sposób udało mi się zwrócić Waszą uwagę na dwa ważne, powiązane tematy: po pierwsze nie wolno lekceważyć odsprzęgania, po drugie projektując pozornie tak prostą i nieistotną część systemu wbudowanego jak zasilanie, trzeba mimo wszystko głęboko przemyśleć wszystkie potencjalne scenariusze działania urządzenia, które mogą stać się… źródłem poważnych zakłóceń. Nawet coś tak pozornie niezwiązanego z zasilaniem jak kolor naszej tapety!

Posted in Sto dni w kolorze.