XMC4000: Cortex-M4F nie tylko dla przemysłu

Jak widać na rysunku 1, nie tylko jednostka centralna (CPU), ale też DMA, Ethernet i port USB mogą pracować jako urządzenia sterujące magistralami (master). W układzie jest łącznie 12 kanałów DMA, z których dwa zostały zaprojektowane jako rozszerzone. Oprócz 32-bajtowego bufora (zwykłe kanały mają bufory 8-bajtowe), mają one także dostęp, poprzez wskaźniki, do obszarów pamięci, w których zlokalizowane są adresy początkowy i końcowy transmisji danych. Dzięki temu można inicjować kolejne transfery danych poprzez specjalne „listy połączeń”, tworzące łańcuchy.

Obok peryferiów komunikacyjnych, nowe układy firmy Infineon wyposażone są także w cztery oscylatory, zegar czasu rzeczywistego i timer watchdoga, dzięki którym przyspieszona została procedura startu. Spośród wspomnianych oscylatorów ten o największej precyzji wykorzystywany jest przez rdzeń – może on być taktowany zewnętrznym sygnałem od 4 do 40 MHz. Oprócz tego, dostępny jest szybki oscylator RC wraz z taktowanym sygnałem zewnętrznym oscylatorem o bardzo niskim poborze energii, wykorzystywanym w trybie hibernacji oraz wewnętrzny oscylator RC, z których oba mogą pracować z częstotliwością 32 kHz.

Zewnętrzna magistrala, nazwana External Bus Unit (EBU), pozwala na podłączenie wielu typów pamięci (ROM, EPROM, NOR-Flash, NAND-Flash, PSRAM, FPGA, SDRAM) i urządzeń wejścia/wyjścia mapowanych na pamięć, takich jak wyświetlacze LCD. Interfejs kart SD/MMC może z kolei być używany do prowadzenia logów, aktualizacji fimware’u lub realizacji HMI.

Sterownik LED może obsłużyć do 64 diod (8 wierszy i 8 kolumn) lub, przy realizacji funkcji czujnika dotyku, która obsługiwana jest poprzez jeden pin przy użyciu multipleksacji czasowej, 56 diod (8 wierszy i 7 kolumn). W drugim wariacie przetwarzane są sygnały z maksymalnie ośmiu portów.

 

Rys. 3. Konfiguracja USIC do pracy jako quad-SPI

Rys. 3. Konfiguracja USIC do pracy jako quad-SPI

 

USIC (Universal Serial Interface Channel) zapewnia do sześciu kanałów interfejsów szeregowych, z których każdy można skonfigurować do pracy jako: UART, SPI, I2C lub I2S. Dla przykładu, cztery kanały ustawione do pracy jako SPI mogą obsługiwać quad-SPI (rysunek 3). Bufor FIFO o pojemności 64 słów można elastycznie podzielić między dane nadawane i odbierane. Co więcej, dzięki dynamicznemu odczytowi informacji sterujących podczas transmisji, można zmieniać np. kierunek transferu na danym wyprowadzeniu czy długość słowa, nie angażując do tego CPU.

 

Timery i określanie położenia

Jednostka pomiarowo-porównawcza CCU4 jest przeznaczona przede wszystkim do systemów z zasilaniem impulsowym. Może ona służyć, między innymi, do generacji impulsów dla przetwornic podwyższających i obniżających o różnych topologiach lub, przy wykorzystaniu ditheru, do stabilizacji wolniejszych pętli PLL. W połączeniu z POSIF możliwa jest też analiza sygnałów z enkodera przyrostowego (rysunek 4). POSIF (Position Interface) to programowalny interfejs do enkoderów przyrostowych i czujników Halla, generujący sygnały sterujące jednostką CCU4. Enkodery służą do realizacji pomiaru prędkości obrotowej, położenia i kierunku obrotu silnika, a POSIF pomaga poprawić precyzję i uprościć kod, dzięki równoległej rejestracji danych.

 

Rys. 4. Położenie i prędkość obrotową wału silnika można łatwo określać używając modułu timerów CCU4 i interfejsu POSIF

Rys. 4. Położenie i prędkość obrotową wału silnika można łatwo określać używając modułu timerów CCU4 i interfejsu POSIF

 

Dzięki wbudowanemu filtrowi dolnoprzepustowemu, eliminowane są natomiast szumy i impulsy zakłócające z czujnika Halla i/lub enkodera przyrostowego, które prowadzą do błędnego odczytu położenia i prędkości.

Jednostka CCU8 jest podobna do CCU4, ale dodatkowo wyposażona w kanał komparacji i możliwość definiowania różnych czasów martwych dla zboczy narastających i opadających oraz generacji asymetrycznych sygnałów PWM. Jest więc przygotowana do takich zastosowań jak: inwertery trójfazowe w systemach napędowych, trójstopniowe inwertery do modułów słonecznych czy przetwornice półmostkowe. W systemach z zasilaniem impulsowym i – szerzej – z przetwarzaniem energii (silniki, ogniwa słoneczne) często ważne jest, aby zwiększać efektywność o każdy możliwy ułamek procenta. Aby to osiągnąć rozwijane są coraz bardziej skomplikowane topologie, wymagające nie tylko wyższych częstotliwości przełączania, ale też bardziej złożonych sekwencji impulsów. Bardzo prostym tego przykładem jest przetwornica podwyższająca pracująca w trybie nieciągłego przewodzenia (Discontinuous Conduction Mode), wykorzystywana np. do korygowania współczynnika mocy, która wymaga sygnału PWM o zmiennej częstotliwości i zmiennym współczynniku wypełnienia. Jako że nie wiemy, jakie sekwencje impulsów mogą być potrzebne za kilka lat, sensownym jest mieć do dyspozycji narzędzie ogólnego przeznaczenia, które można wykorzystać wielokrotnie, takie jak CCU8, inne od dostępnych obecnie dedykowanych scalonych stabilizatorów impulsowych.

Tab. 1. Przegląd mikrokontrolerów z rodziny XMC4000

Podrodzina XMC4100 XMC4200 XMC4400 XMC4500 XMC4700
Rdzeń Cortex-M4F Cortex-M4F Cortex-M4F Cortex-M4F Cortex-M4F
Częstotliwość zegara przy 125oC 80 MHz 80 MHz 120 MHz 120 MHz 180 MHz
Pamięć Flash 128 kB 256 kB 512 kB 1 MB 2,5 MB
RAM 20 kB 40 kB 80 kB 160 kB 512 kB
Cache dla pamięci Flash 4 kB 4 kB 4 kB 4 kB 6 kB
POSIF 1 1 2 2 2
CCU4 (cztery kanały) 2 2 4 4 4
CCU8 (cztery kanały) 1 1 2 2 2
Generator PWM wysokiej rozdzielczości (150 ps) 1 1 1
IEEE 1588 Ethernet MAC 1 1 2
USB 2.0 FS DEV FS DEV FS OTG FS OTG HS OTG
SD/MMC Tak Tak
Interfejsy szeregowe (UART, SPI, I2C, I2S) 4 4 4 6 6
Interfejs do pamięci zewnętrznej Tak Tak
CAN 1 1 2 3 3
Przycisk dotykowy Tak Tak Tak Tak Tak
Przetwornik A/C 12-bitowy 2 2 4 4 4
Demodulator sigma-delta 4 4 4
Przetwornik C/A 2 2 2 2 2
Zastosowania Czujniki, serwomechanizmy Napędy (klasy low-end) Napędy (średnia półka), urządzenia zasilające, generatory energii Napędy (high-end), automatyka Automatyka (high-end)

 

Izolowane pomiary wysokoprądowe

W systemach napędowych, izolowany transformator w połączeniu z rezystorem bocznikującym pozwala mierzyć prądy o wartościach do kilkuset amperów z zachowaniem izolacji. Podstawowym pomysłem jest tu wykorzystanie jednobitowego modulatora sigma-delta pracującego z częstotliwością kilku megaherców po stronie dużych prądów i transmisja wyników w postaci strumienia bitów. Odpowiednia filtracja cyfrowa pozwala na bardzo elastyczny, dynamiczny i precyzyjny pomiar prądu silnika i sterowanie nim, włączając w to detekcję nadmiarowych prądów w czasie rzędu mikrosekund. Układy wytrzymują nagłe zmiany napięć w nowoczesnych sterownikach silników bez problemu i – w zależności od czasu całkowania – dostarczają wynik w rozdzielczości od 12 do 16 bitów.

Filtracja cyfrowa jest zwykle realizowana za pomocą układów ASIC lub FPGA. W systemach z mikrokontrolerami XMC4000 nie są one konieczne, dzięki wbudowanemu demodulatorowi sigma-delta (rysunek 5). Jest on czterokanałowy i demoduluje strumień bitów z pomocą filtra grzebieniowego. Okno całkowania można skonfigurować np. tak, by odfiltrować impulsy zakłócające wywołane przez operację przełączania.

 

Rys. 5. Demodulator sigma-delta może zastąpić zewnętrzny układ ASIC lub FPGA przy wykonywaniu izolowanych pomiarów wysokoprądowych w systemach napędowych

Rys. 5. Demodulator sigma-delta może zastąpić zewnętrzny układ ASIC lub FPGA przy wykonywaniu izolowanych pomiarów wysokoprądowych w systemach napędowych

 

Kolejną funkcją, w którą wyposażony jest demodulator, jest możliwość kompensacji sygnałów opóźnionych – jeśli jeden sygnał dociera do filtru decymacyjnego później niż drugi, proces filtracji musi oczywiście zostać opóźniony. Zapewnia to większą dokładność pomiarów kilku sygnałów wykonywanych równolegle. Jeśli natomiast chcemy określić bieg jałowy silnika, można to zrobić pobudzając cewkę w transformatorze położenia kątowego za pomocą wbudowanego generatora sinusa o programowalnej częstotliwości silnika (transformatory położenia kątowego wykorzystują bowiem przekładnię złożoną z cewek). Cewka stanowiąca uzwojenie pierwotne jest pobudzana prądem sinusoidalnym o częstotliwości od 5 do 20 kHz. Napięcie o tej samej częstotliwości indukuje się na cewce wtórnej. Amplituda zaindukowanego napięcia zależy od położenia rotora. Aby określić położenie bezwzględne, konieczny jest drugi sygnał przesunięty w fazie o 90 stopni – otrzymujemy więc dwa zmodulowane amplitudowo sygnały przesunięte względem siebie.

 

Cztery przetworniki A/C dla wszelkich możliwych scenariuszy

W wielu zastosowaniach, takich jak np. korekcja współczynnika mocy w systemach trójfazowych, oprócz wymogu dostarczania trzech strumieni danych, potrzebne są też dodatkowe informacje, takie jak np. wartości wybranych napięć wewnątrz układu, potrzebne do obliczenia wielkości sterujących generatorami PWM. Będąc pierwszymi produkowanymi przez firmę Infineon mikrokontrolerami z rdzeniem Cortex-M4, układy XMC4000 wyposażono w cztery przetworniki A/C o rozdzielczości 12 bitów i częstotliwości próbkowania 2 MS/s przy dokładności +/– 4 LSB. W trybie pracy z przeplotem, gdy wszystkie cztery przetworniki próbkują ten sam sygnał (rysunek 6), osiągana jest częstotliwość 6 MS/s przy 8-bitowej rozdzielczości i częstotliwość 4 MS/s przy rozdzielczości 12 bitów. Dzięki nadpróbkowaniu, możliwe jest uzyskanie nawet 14 bitów przy dokładności 1,5 mV. Minimalny czas próbkowania wynosi 70 ns, a czas konwersji 500 ns.

 

Rys. 6. W trybie przeplotu wszystkie cztery przetworniki A/C próbkują ten sam sygnał, osiągając częstotliwość nawet do 6 MS/s

Rys. 6. W trybie przeplotu wszystkie cztery przetworniki A/C próbkują ten sam sygnał, osiągając częstotliwość nawet do 6 MS/s

 

Kilka typów sygnałów może być konwertowanych automatycznie w programowalnej sekwencji bez konieczności angażowania oprogramowania aplikacyjnego. Przede wszystkim możliwe jest skonfigurowanie ograniczeń dla sygnałów wejściowych, których przekroczenie uruchamia alarm, dzięki czemu zbędny staje się zewnętrzny komparator. W charakterze funkcji zabezpieczającej zaimplementowana została detekcja przerwanego obwodu oraz autodiagnoza multipleksera i przetwornika. Cztery przetworniki A/C mogą też zostać zsynchronizowane, aby zapewnić próbkowanie w tych samych momentach.

Przetworniki C/A mają dwa kanały i także pracują z rozdzielczością 12 bitów. Ich rezystancja obciążenia wynosi 15 k?, a częstotliwość aktualizacji to 10 MHz. Deklarowana przez producenta nieliniowość różniczkowa (funkcja przenoszenia prawdziwego przetwornika odbiega od postaci teoretycznej, gdyż długości kroku nie są równe, odchylenie od docelowej wartości ULSB to właśnie nieliniowość różniczkowa) to +/–2 bity, a nieliniowość całkowa (opisująca odchylenie funkcji przenoszenia przetwornika od idealnej prostej) wynosi +/–4 bity.

Dzięki automatycznej i programowalnej generacji przebiegów, jednostka CPU nie jest w ogóle angażowana w to zadanie. To samo tyczy się 12-bitowego generatora sygnału narastającego liniowo (ramp generator) o programowalnych wartościach początku i końca. Dzięki szybkiemu dostępowi przez DMA, obsługiwana jest także aktywna eliminacja szumów.

 

Podsumowanie

XMC4000 to rodzina mikrokontrolerów świetnie przygotowana do zastosowań przemysłowych. Dzięki zintegrowanemu środowisku projektowemu DAVE 3, wyposażonemu w kompilator, debuger, a przede wszystkim generator kodu, można wyraźnie skrócić czas tworzenia oprogramowania – krytyczny punkt w każdym projekcie przemysłowym, gdzie oprogramowanie stanowi dziś między 60 a 70 procent kosztów.

O autorze

Frank Riemenschneider

Inż. Frank Riemenschneider Redaktor naczelny Design & Elektronik i członek rady Embedded World. Frank otrzymał dyplom magistra inżyniera elektryka na Uniwersytecie Leibnitz w Hanowerze i jest akredytowanym inżynierem ARM.