wtorek, 16 sierpnia 2016

Źródła sygnału zegarowego dla mikrokontrolerów

Ten post chciałbym poświęcić na opis sposobu dobrania źródła sygnału zegarowego dla mikrokontrolera.

Opis


Sygnał jest potrzebny do synchronizacji przesyłanych danych pomiędzy zintegrowanymi blokami. Pozwala on także określić z jaką prędkością układ będzie działał. Przy czym należy pamiętać, że im większa częstotliwość tym większe potencjalne zakłócenia oraz zwiększony pobór prądu przez układ.


Same mikrokontrolery mogą mieć częstotliwość większą od maksymalnej zalecanej, natomiast może to spowodować gorszą stabilność pracy. Wobec tego przy dobraniu większej częstotliwości należy sprawdzić jak dany układ się zachowuje. Trzeba także pamiętać, że taki układ będzie powodował wydzielanie większej ilości ciepła oraz pobierał więcej prądu, co znacząco może wpłynąć na jego żywotność. Ogólnie o kilka procent można taki układ zwiększyć, np. mikrokontroler montowany na płytce STM32F4 - Discovery, pozwala na zwiększenie swoich parametrów z 180 MHz do nawet 250 MHz, co jednak jak już wspomniałem wcześniej o ile ze stabilnością nawet się trzyma, to z żywotnością może być znacznie gorzej.

Podział źródeł sygnału


Generatory można podzielić na wbudowane oraz zewnętrzne. Mikrokontrolery pozwalają na stosowanie obu wymienionych rozwiązań.

Generatory wbudowane są dosyć często montowane w nowszych mikrokontrolerach jak np. ATxmega czy STM32. Zastosowanie takiego rozwiązania zmniejsza ilość pieniędzy jakie należy poświęcić na stworzenie układu. Co prawda takie źródło posiada mniejszą stabilność, natomiast nie jest to odczuwane przy tworzeniu prostych aplikacji.

Generator wbudowany stworzony jest z obwodu RC. Błędy deklarowane przez producenta oscylują przeważnie w okolicach 1% dla temperatury pracy około 25 st.C. Przy przekroczeniu tej wartości mogą one się znacznie powiększyć. Taka dokładność jest osiągnięta poprzez programowe dodanie przez producenta wartości poprawki dla układu generatora. Częstotliwość takich układów może wynosić np. 4, 8 czy 16 MHz.

Obecnie najczęściej wykonywane są układy w postaci zewnętrznego rezonatora kwarcowego lub ceramicznego z wewnętrznym generatorem wbudowanym w mikrokontroler. Obwodów zewnętrznych RC obecnie się nie stosuje. Dają one natomiast możliwość dynamicznej zmiany wartości poprzez zastosowanie rezystora ze zmienną wartością rezystancji.

Generatory z rezonatorem pozwalają na uzyskanie najlepszych parametrów stabilności. Do poprawnego działania należy zastosować układ kwarcu wraz z dwoma jednakowymi kondensatorami. Ich wartość zależy od typu układu. Ich wartość waha się od 10pF do 100pF, przeważnie dobiera się wartość około 20 do 22 pF. Należy je umieszczać bardzo blisko kwarcu. Sam układ należy umieścić bardzo blisko wyprowadzeń od mikrokontrolera.

Należy pamiętać, że kwarc sam w sobie nie jest generatorem sygnału, on natomiast stabilizuje drgania układu oscylatora.

Rys. 1. Montaż kwarcu na płytce widok schematu

Rys. 2. Montaż kwarcu na płytce widok PCB

Rys. 3. Montaż kwarcu do RTC widok schematu oraz PCB

Na parametry zewnętrznych źródeł wpływają nie tylko wartości samego kwarcu ale także jego stabilność, wiek, napięcie zasilania czy pojemności pasożytnicze prowadzonych ścieżek.

Czasami mogą zachodzić problemy wzbudzenia układu z kwarcem. W takim przypadku należy zwiększyć wartości pojemności kondensatorów nawet do 470pF, bądź obniżyć napięcie zasilania. Zwiększenie pojemności jest stosowane także wtedy gdy układ nie wzbudzi się poprawnie.

Do większości nowszych mikrokontrolerów można zamontować nie tylko kwarc podstawowy ale także jeden dodatkowy o częstotliwości 32,768 kHz. Służy on do taktowania zegara czasu rzeczywistego. Ważne jest jego odpowiednie dobranie ponieważ gdy jego częstotliwość będzie inna od znamionowej to zegar będzie śpieszył lub spóźniał w zależności od tego parametru. Przy różnicach wynoszących tylko kilka sekund, rozwiązanie powinno zapewnić zmiana kondensatorów w układzie generatora. Dodanie większej pojemności spowoduje zmniejszenie częstotliwości co będzie skutkowało zwolnieniem zegara. Odwrotnie w przypadku zmniejszenia pojemności. Jeśli występują większe rozbieżności to należy wraz z rezonatorem włączyć szeregowo indukcyjność lub pojemność rzędu kilku pF. Dodanie indukcyjności zmniejszy częstotliwość, natomiast pojemność spowoduje zwiększenie częstotliwości.

Jeśli chodzi o pomiar kwarcu to należy to robić za pomocą sondy oscyloskopu podłączonej za pośrednictwem kondensatora o pojemności 1 do 2 pF lub stosować sondy posiadające wysoką impedancję wejściową. Bezpośrednie przyłożenie sondy bardzo często będzie powodowało wygaszenie układu. Innym sposobem jest przesłanie sygnału zegarowego na inną nogę mikrokontrolera, np. w STM32. Dzięki temu pomiar można dokonać bezpośrednio sondą od oscyloskopu.

Do zewnętrznych źródeł sygnału można także zaliczyć zewnętrzne generatory sygnału. Sygnał wtedy jest wpuszczany na jedną nogę od oscylatora. Sygnał taktujący prostokątny lepiej podłączyć Bufor CMOS. Powoduje on zmniejszenie ilości zakłóceń podawanych na wejście mikrokontrolera. Takie zewnętrzne źródło na płytce jest stosowane przeważnie do taktowania większej ilości podzespołów znajdujących się na jednej płytce. Zegar należy tak umieścić aby miał on jak najkrótszą drogę do wszystkich układów. Należy pamiętać o dostosowaniu trwania czasu niskiego i wysokiego generowanego z takiego układu. Jest to rozwiązanie opłacalne gdy potrzebna częstotliwość musi posiadać niestandardową wartość, co obecnie jest mało wymagane, ponieważ mikrokontrolery oferują bardzo rozbudowane metody dostosowywania częstotliwości.

Drugie zastosowanie sprawdza się gdy kilka układów na jednej płytce wymaga zastosowania źródła taktującego. Takie źródło cechuje się także bardzo dobrą stabilnością oraz dokładnością.