STM32 kontra EMC – poradnik dla projektantów

Udostępnij

Prototyp urządzenia może z sukcesem przejść wszystkie testy funkcjonalne na biurku konstruktora, a mimo to wykazywać zbyt silną emisję lub podatność na zakłócenia EMI. Przyczyna nie zawsze leży w pojedynczej pomyłce w projekcie płytki drukowanej bądź niewłaściwie dobranym komponencie. Znacznie częściej bowiem problemy dające o sobie znać w laboratorium EMC wynikają z koincydencji dwóch lub więcej czynników: fundamentalnych błędów w layoucie PCB, braku właściwych komponentów zabezpieczających, a nawet… z niewłaściwej konfiguracji niektórych rejestrów mikrokontrolera.

W ramach niniejszego poradnika przejdziemy wspólnie przez decyzje projektowe najważniejsze z punktu widzenia kompatybilności elektromagnetycznej urządzeń zbudowanych w oparciu o mikrokontrolery. O ile część aspektów opisanych w artykule jest uniwersalna dla (prawie) wszystkich urządzeń elektronicznych, to pozostałe są specyficzne stricte dla rodziny mikrokontrolerów STM32. Zwrócimy przy tym uwagę na aspekty leżące na trzech poziomach każdego projektu systemu wbudowanego: na schemacie, w layoucie PCB oraz w warstwie programowej.

O kompromisie na styku domen czasu i częstotliwości

Zacznijmy od krótkiego przypomnienia fundamentalnego faktu: każdy przebieg okresowy może być utworzony z odpowiedniej kombinacji składowej o częstotliwości podstawowej (f0) oraz wyższych harmonicznych o częstotliwościach: 2f0, 3f0, 4f0 itp. W przypadku idealnego przebiegu prostokątnego o amplitudzie Vp i współczynniku wypełnienia 50%, sygnał v(t) można zapisać jako sumę nieparzystych harmonicznych o amplitudach malejących asymptotycznie wraz ze wzrostem rzędu harmonicznej:

v(t)=4Vpπ[sin(ω0t)+13sin(3ω0t)+15sin(5ω0t)+...]v(t)= \frac {4V_p}{\pi}​​[sin(\omega_0​t)+\frac{1}{3}​sin(3\omega_0​t)+\frac{1}{5}​sin(5\omega_0​t) + …]
Wizualizacja złożenia odtworzenia przebiegu prostokątnego jako sumy nieparzystych harmonicznych (rys. HardwareDesigner.pl)

Jeżeli zatem w systemie mikroprocesorowym mamy linię zegara o częstotliwości 1 MHz, to przebieg ten nie zawiera wyłącznie składowej 1 MHz, ale także 3-krotnie słabszą składową 3 MHz, 5-krotnie słabszą harmoniczną 5 MHz itd. Teoretycznie widmo maleje w nieskończoność, choć w rzeczywistości w grę wchodzą ograniczenia aparatury pomiarowej, wynikające z jej zakresu dynamiki i poziomu szumów własnych – poniżej pewnego progu resztkowa energia na skraju mierzalnego przedziału częstotliwości będzie po prostu „ginęła” w podłodze szumowej analizatora.

Tak czy inaczej, na energię prostokątnego przebiegu składają się harmoniczne leżące daleko powyżej częstotliwości przełączania, a im bardziej strome są zbocza, tym dalej sięga mierzalny zakres widma. Widać to doskonale na powyższej animacji – w miarę dodawania kolejnych harmonicznych zbocza sygnału zbliżają się coraz bardziej do pionowego ideału. Przyjmuje się, że przybliżona częstotliwość „kolana” widma (czyli umowny próg, powyżej którego dalsze dokładanie wyższych harmonicznych nie wnosi znaczących różnic w kształcie sygnału) wynosi:

fknee0,5trf_{knee} ≈ \frac {0,5} {t_r}

Dla czasu narastania 1 ns otrzymujemy częstotliwość rzędu 500 MHz, a dla 7 ns około 70 MHz. Trzeba jednak wyraźnie podkreślić, że patrzymy tutaj wyłącznie z punktu widzenia wierności odwzorowania sygnału w domenie czasu. W praktyce pasmo rzeczywistego sygnału prostokątnego, które może wpłynąć na końcowe wyniki badań EMC, będzie z pewnych względów jeszcze szersze – a do tego, co gorsza, bardzo trudne do oszacowania na drodze obliczeń czy symulacji, bowiem wartości limitów w normach EMC są określone w sposób bezwzględny i dotyczą ściśle określonych warunków pomiaru. Wartości obliczone za pomocą popularnych wzorów nie wyznaczają zatem ostrej granicy widma, ale dobrze tłumaczą, dlaczego dwa piny przełączane z tą samą częstotliwością mogą dawać zupełnie inny wynik pomiaru emisji. Na szczęście w przypadku mikrokontrolerów STM32 można w dość szerokim zakresie kontrolować stromość zboczy za pomocą rejestrów GPIOx->OSPEEDR.

Zbocza sygnałów pod kontrolą

Znaczenie rejestrów OSPEEDR bywa przez początkujących błędnie interpretowane jako wybór częstotliwości przełączania pinu. Zawartość bitów OSPEEDR[1:0] w żaden sposób nie wpływa jednak na częstotliwość kluczowania wyjścia (tę determinuje wszak sam program, np. na drodze ustawień timera sprzętowego bądź taktowania interfejsu SPI), ale ustala orientacyjne wartości czasu narastania/opadania sygnału. Ten zaś, jak już wykazaliśmy, wpływa na mierzalne pasmo zaburzeń powstających w wyniku przełączania tranzystorów wyjściowych GPIO.

Pomiary opisane w artykule STM32 OSPEEDR – praktyczne pomiary dynamiki GPIO zostały wykonane na płytce STM32 NUCLEO z mikrokontrolerem STM32F411RE. Pin PC9 był przełączany z częstotliwością około 690 kHz, sterując różnymi obciążeniami pojemnościowymi. Bez dołączonego kondensatora (tj. przy obciążeniu samą sondą pasywną 10:1) czas narastania wynosił około 7,3 ns w trybie Low speed i około 1,3 ns w trybie Very high speed.

Wpływ OSPEEDR na czas narastania przy obciążeniu 10 pF
Animacja: porównanie dynamiki GPIO dla trybów OSPEEDR przy obciążeniu samą sondą pasywną oscyloskopu (źródło: HardwareDesigner.pl)

Druga część eksperymentu, opisana w artykule GPIO kontra EMC, została wykonana przy użyciu analizatora widma i komory TEM. Przy tej samej częstotliwości przełączania tryb najniższej szybkości wyjść GPIO dawał istotne harmoniczne w okolicy 100-120 MHz, a tryb medium rozszerzał widmo do okolic 240-300 MHz. W trybie high speed granice mierzalnego spektrum docierały do około 500 MHz, zaś przy najwyższym ustawieniu (OSPEEDR[1:0] = 0b11) – jeszcze dalej, do około 600 MHz.

Wpływ OSPEEDR na emisję mierzoną w komórce TEM
Animacja: porównanie widma emisji dla czterech ustawień OSPEEDR (źródło: HardwareDesigner.pl)

Podane częstotliwości nie są oczywiście granicami gwarantowanymi w jakikolwiek sposób przez ST, a to z bardzo prostej przyczyny: wynik tych konkretnych pomiarów zależał od szeregu czynników, w tym konkretnego modelu mikrokontrolera, długości przewodu podłączonego do GPIO (zastosowano 30-centymetrowy przewód z wykami BLS), a także samej aparatury (czułości analizatora, charakterystyki komory TEM, etc.). Celem przeprowadzonego eksperymentu było pokazanie, jak istotne jest znaczenie prawidłowego doboru ustawień OSPEEDR do danego zastosowania. Dobra praktyka zakłada zastosowanie najmniejszej dynamiki wyjść mikrokontrolera, przy której nie ucierpi jeszcze integralność sygnałowa danego interfejsu. Trzeba także mieć na uwadze, że w niektórych przypadkach konieczne będzie nadmiarowe ustawienie prędkości GPIO z uwagi na specyficzne zachowania niektórych serii mikrokontrolerów – przykładowo w rodzinie STM32F4 interfejs SPI może generować błędne dane, jeżeli prędkość będzie ustawiona na wartość zbyt niską (niezależnie od rzeczywistej częstotliwości sygnału zegarowego).

Komórki kompensacyjne jako remedium na tolerancje produkcyjne i wpływ warunków pracy

Parametry tranzystorów bufora wyjściowego GPIO zmieniają się wraz z rozrzutem procesu produkcyjnego, napięciem zasilania i temperaturą, czyli PVT (Process, Voltage, Temperature). Jednakowe ustawienie OSPEEDR może więc dać inne szybkości zboczy na dwóch egzemplarzach MCU albo w skrajnych temperaturach.

Komórka kompensacyjna (I/O compensation cell) koryguje charakterystyki buforów I/O, ograniczając ich zmienność wynikającą z procesu, napięcia i temperatury. Funkcja ta ma znaczenie zwłaszcza dla szybkich interfejsów takich jak FMC/FSMC, QSPI/OSPI/XSPI, SDIO/SDMMC itp. Warto przy tym podkreślić, że rejestr OSPEEDR wybiera zgrubną klasę dynamiki, a blok compensation cell ogranicza jedynie jej wahania. Użycie komórki kompensacyjnej różni się przy tym nie tylko w zależności od implementacji w danej rodzinie mikrokontrolerów, ale także w poszczególnych zakresach napięcia zasilania – każdorazowo trzeba zatem zweryfikować zalecenia producenta, odnosząc się do zapisów z noty katalogowej oraz dokumentu Reference manual danej serii STM32.

Obwody zasilania STM32

Podczas przełączania logiki prąd pobierany przez rdzeń i bufory I/O zmienia się w czasie liczonym w nanosekundach. Stabilizator oddalony na płytce o kilka centymetrów od mikrokontrolera nie jest w stanie efektywnie dostarczyć takiego impulsu bezpośrednio. Lokalny kondensator odsprzęgający zamyka krótką pętlę prądową, tworzoną przez obwody mikrokontrolera i linie zasilania. Im bliżej układu znajduje się element, tym mniejszą powierzchnię ma pętla prądowa. Mniejsza powierzchnia to z kolei zredukowana indukcyjność pasożytnicza, mniejsze wahania napięcia na liniach zasilania i słabsza emisja zaburzeń RFI.

Uwaga! To jest tylko fragment artykułu – całość można przeczytać na oficjalnym blogu ST.

Przemysław
Przemysław
Redaktor Naczelny portalu HardwareDesginer.pl. Konstruktor elektronik i programista embedded z ponad 20-letnim doświadczeniem w projektowaniu PCB. Z wykształcenia elektronik medyczny i elektroradiolog, specjalizuje się w projektowaniu i badaniach aparatury medycznej, laboratoryjnej i pomiarowej.

Czytaj więcej

Wybrane dla Ciebie