Kolejny problem zdiagnozowany podczas realizacji praktycznych układów daje się zauważyć w przypadku takich „pacjentów”, jak np. popularny mikrokontroler STM32F103RBT6. Pracuje on w układzie, który okresowo nadaje pakiet danych poprzez GPRS, a podczas realizacji tego zadania wymaga się minimalizacji poboru prądu. Oprócz zegara wysokiej częstotliwości (HSE), służącego do taktowania rdzenia, w tej aplikacji używany jest również sygnał zegarowy o niskiej częstotliwości (LSE) do odmierzania czasu. Całość jest zasilana z ogniw 18650 ze stabilizatorem o napięciu wyjściowym 3 V.
Pierwsza wersja otoczenia „zegarkowego” rezonatora kwarcowego, ukazana została na rysunku 1. Producent mikrokontrolera, firma ST, przestrzega przed używaniem kwarców o pojemności 12,5 pF, dopuszcza natomiast te o pojemności nie większej niż 7 pF. W nocie katalogowej znajduje się piękny wzór pozwalający obliczyć pojemność kondensatorów przy rezonatorze kwarcowym. Według moich obliczeń kondensatory 4,7 pF powinny być idealne do kwarcu LFXTAL016178 o pojemności obciążenia 6 pF.
Po podłączeniu program przechodzi do uruchomienia LSE i… zatrzymuje się. Kwarc nie wytwarza drgań. Dopiero po przytknięciu sondy oscyloskopu do wejścia generatora kwarcowego oscylacje się pojawiają. Druga płytka wypada jeszcze gorzej, kwarc w ogóle nie rusza. Próbuję wymienić zarówno kwarc - na inny egzemplarz, jak i kondensatory - na takie o lekko odmiennej pojemności, jednak bez rezultatu. Układ rusza, kiedy jest jeszcze gorący po lutowaniu, lecz godzinę później dramat powraca: generator znów traci zdolność do samodzielnego wzbudzania oscylacji rezonatora kwarcowego.
Szukam więc winnych: gdzie zrobiłem błąd? Projektuję elektronikę już od wielu lat, różne rzeczy widziałem, niejedną pomyłkę popełniłem, lecz taka sytuacja nie zdarza mi się często: producent podaje wzory do obliczeń, stosuję się do nich, po czym uruchomienie układu kończy się kompletną klapą. Akurat układ STM32F103RBT6 ma generator kwarcowy o niskiej transkonduktacji, której na dodatek nie można w żaden sposób regulować, więc będzie on wybitnie czuły na wszelkie niedoskonałości układowe. Odszukałem zatem dokument o oznaczeniu AN2867, traktujący właśnie o projektowaniu oscylatorów dla mikrokontrolerów ST, po czym zacząłem go szczegółowo wertować.
Pierwszą rzeczą, jaką zauważyłem, są bardzo restrykcyjne wymagania dotyczące obwodu drukowanego. Przykład takiej poprawnie zaprojektowanej płytki znajduje się na rysunku 2.
Odległość między rezonatorem w obudowie THT a mikrokontrolerem wynosząca dosłownie 2...3 mm (na rysunku nie uwidoczniono skali) oraz elementy w obudowach 0603 lub nawet 0402 wyglądają pięknie. Tymczasem moja rzeczywistość okazała się nieco inna i obejmowała kwarc w relatywnie dużej obudowie SMD, elementy 1206 (wymóg klienta) oraz druk dwustronny (rysunek 3).
Nie ma tu mowy o tak małych odległościach między podzespołami, jak wspomniane wcześniej, ponieważ same komponenty są po prostu duże. W moim projekcie jako ekranowanie dla kwarcu dałem płaszczyznę miedzi na dolnej warstwie, tymczasem ST bardzo poważnie traktuje wykonywanie „otoczek” z masy zarówno wokół samego rezonatora, jak i współpracujących z nim elementów. Co ciekawe, układ z rysunku 2, podany jako przykład poprawnego projektu, nie spełnia tych wymogów i to może się wydawać podejrzane.
Uzasadnieniem dla szczególnych wymagań dotyczących ekranowania podzespołów było zmniejszenie ich wrażliwości na zewnętrzne zakłócenia elektromagnetyczne. Tyle że mój układ był wystarczająco odporny, gdyż w ogóle się nie włączał! Gdyby na wejściu oscylatora pojawiały się zakłócenia, miałyby one szanse zainicjować drgania kwarcu, jednak do tego etapu w ogóle nie dochodziło. Przyjrzałem się zatem samemu układowi oscylatora, który znajduje się na rysunku 4. Ot, zwykły generator w układzie Pierce’a, nic odkrywczego. Rezystor REXT jest stosowany w sytuacjach, w których mogłoby dochodzić do przesterowania kwarcu, jednak w generatorach LSE z reguły się ich nie stosuje.
Charakterystyka przejściowa tego tworu powinna wyglądać tak, jak na rysunku 5. Jeżeli inwerter znajdował się w obszarze nasycenia, niewiele mogło mu pomóc. Trzeba byłoby go skłonić do wejścia w obszar liniowy, kiedy to zachowywał się jak zwykły wzmacniacz odwracający, gdyż tylko wtedy miałyby szansę powstawać jakieś oscylacje. Mój układ z jakichś powodów nie chciał utrzymać inwertera w obszarze liniowym.
Zainteresował mnie rezystor RF, ponieważ powinien on przecież linearyzować inwerter - ujemne sprzężenie zwrotne, które realizuje, do tego właśnie dąży. Według schematu z rysunku 5 powinien się on znajdować wewnątrz mikrokontrolera. Tymczasem tabela 1 sugeruje, że ten rezystor należy podłączyć dodatkowo, jakby nie był wbudowany w strukturę układu.
Przeprowadziłem więc szybki test: odlutowałem wszystkie elementy współpracujące z generatorem LSE i do jego wejścia podłączyłem regulowany zasilacz poprzez rezystor 10 MΩ. Gdyby RF istniał w układzie, próg przerzutu inwertera w oscylatorze wypadałby przy napięciu innym niż połowa napięcia zasilającego (rysunek 5). Tymczasem obserwacja napięcia na wyjściu tegoż inwertera przy zmieniającym się napięciu wejściowym potwierdziła, że RF nie jest wbudowany w układ, ponieważ charakterystyka przejściowa wykazuje bardzo strome przejście właśnie w połowie napięcia zasilającego. Bingo!
Idąc za ciosem, dodałem RF samodzielnie. Stosowałem już kiedyś tę sztuczkę, gdy ATtiny24 nie chciał wzbudzać drgań w „zegarkowym” rezonatorze kwarcowym, lecz tutaj nie chciałem uciekać się do podobnej metody, ponieważ miałem na uwadze, że ten rezystor jest już wbudowany. Po modyfikacji schemat wygląda jak na rysunku 6.
Na próbę wlutowałem rezystor 10 MΩ w obudowie 0805 pod rezonatorem kwarcowym w kilku egzemplarzach tego układu, wykonanych na potrzeby testowania prototypów. Efekt okazał się wspaniały: wszystkie układy zadziałały idealnie od pierwszego uruchomienia, zmierzona częstotliwość drgań LSE wynosiła tyle, ile trzeba (brak odstrojenia od częstotliwości rezonansowej kwarcu), ponadto uruchomienie LSE następuje w niezauważalnie krótkim czasie. Tymczasem nota katalogowa zakłada typowy czas potrzebny do uruchomienia LSE na poziomie 3 s. Pobór energii przez układ nie zmienił się z kolei ani trochę. Nie zauważyłem też jakiejś wyjątkowej podatności LSE na zakłócenia elektromagnetyczne. Mówiąc krótko - jeden rezystor zmienił wszystko na lepsze.
Michał Kurzela, EP
Bibliografia:
- AN2867. Application note: Oscillator design guide for STM8AF/AL/S, STM32 MCUs and MPUs