Mikrokontrolery Infineon XMC4500 w praktyce, część 2

Produkowane przez firmę Infineon mikrokontrolery XMC4000 (Cortex-M4) należą do najnowocześniejszych układów tego typu na rynku, a dzięki udostępnieniu przez producenta bezpłatnego, kompletnego pakietu narzędziowego – DAvE 3 – także do jednych z najwygodniejszych w praktycznym stosowaniu.

Z myślą o praktykach chcących poznać mikrokontrolery XMC4000 przygotowaliśmy kilkuodcinkowy kurs, w którym bazujemy na tanim zestawie startowym Relax Kit oraz bezpłatnym środowisku projektowym DAvE, od prezentacji którego zaczynamy.

 

 

 

 

Poprzedni odcinek kursu jest dostępny tu.
Następny odcinek kursu jest dostępny tu.
Podstawowe informacje o zestawie Relax Kit firmy Infineon są dostępne tu.
Artykuł o zestawie Hexagon firmy Infineon jest dostępny tu.
Przegląd rodziny XMC4000 jest dostępny tu.

 

DAvE 3 – tworzenie aplikacji w oparciu o gotowe komponenty oprogramowania i generator kodu

Mikrokontrolery to niezwykle dynamicznie rozwijający się segment rynku układów elektronicznych. Ważniejsze czynniki stymulujące taki postęp to między innymi zapotrzebowanie na coraz bardziej zaawansowane urządzenia elektroniczne, rozwój technologii i silna konkurencja. Sprawiają one, że kolejne wprowadzane do sprzedaży rodziny mikrokontrolerów są układami dającymi projektantom coraz większe możliwości. Bardziej rozbudowana struktura wewnętrzna mikrokontrolerów i możliwość realizacji przy ich pomocy bardziej skomplikowanych i zaawansowanych aplikacji powoduje jednak, że poziom trudności tworzenia oprogramowania staje się coraz wyższy. Producenci pakietów do tworzenia oprogramowania dla systemów wbudowanych mają tego świadomość, dlatego w oferowanych przez siebie narzędziach implementują mechanizmy ułatwiające i przyspieszające tworzenie kodu. W przypadku pakietu DAvE 3 dla mikrokontrolerów Infineon XMC4000 z rdzeniem ARM Cortex-M4 wykorzystana została idea tworzenia oprogramowania o nazwie CBP (Component-Based Programming), znana też jako CBSD (Component-Based Software Development) oraz wykorzystujący ją generator kodu.

Idea CBP/CBSD

Idea CBP/CBSD polega na tworzeniu oprogramowania korzystając z gotowych, prefabrykowanych modułów oprogramowania zwanych komponentami. Ważniejsze cechy komponentów [1]:

  • każdy komponent ma zdefiniowaną funkcjonalność,
  • komponent może mieć postać tak zwanej „czarnej skrzynki”, co oznacza, że użytkownik nie musi wiedzieć w jaki sposób funkcjonalność komponentu została zaimplementowana,
  • każdy z komponentów może być wielokrotnie wykorzystywany,
  • każdy komponent musi posiadać interfejs pozwalający na komunikowanie się z innymi komponentami i aplikacją użytkownika,
  • komponenty są niezależne od siebie.

Więcej informacji o CBP/CBSD można znaleźć w literaturze dotyczącej tej dziedziny [2].

DAvE Apps

Firma Infineon wykorzystała ideę CBP/CBSD w swoim pakiecie do tworzenia oprogramowania DAvE 3 [3]. Zaimplementowane komponenty noszą nazwę DAvE Apps. Pojedynczy komponent DAvE App może reprezentować albo jeden zasób wewnętrzny mikrokontrolera XMC4000 (np. przetwornik A/C), albo też może reprezentować aplikację dla tego mikrokontrolera (np. system plików, serwer www). Aktualne repozytorium dostępnych komponentów DAvE Apps przedstawiono w tabeli 1.

 

Tab. 1. Nazwy i funkcje komponentów DAvE Apps

Nazwa DAvE App Rodzaj zasobu/aplikacji Nazwa DAvE App Rodzaj zasobu/aplikacji
adc001…adc003 Analog to digital converter ledts001 LED and touch sense control unit
adcch001 Analog to digital converter channel libs Library for PWMSP001…PWMSP002 apps
adccmp001 Analog to digital comparator lmm001 App local memory manager
adcglob001 Analog to digital clocks lval001 App logical value provider
adcgroup001 Analog to digital group specific configurations nvic001…nvic002  Interrupt handler
aes001 Advanced encryption standard nvic_dma001 DMA interrupt handler
can001 Controller area network nvic_scu001 App specific handling of interrupt events
canglobal Controller Area Network module clocks poshl001 Motor speed and position detection using hall sensors
cap001 Period and duty cycle capture module posqe001 Motor speed and position detection with quadrature encoder
ccu4global Four Capture/Compare Units for use as general purpose timers pwmmp001 Pulse width modulated multi phase signal
ccu8global Four Capture/Compare Units for motor control and power conversion pwmsp001…pwmsp002 Pulse width modulated single phase signal
clk001 SCU module system clocks pwmsvm001 Space vector pulse width modulated signal
cnt001 CCU4 event counter reset001 Reset
crc001…crc007 Cyclic redundancy code rtc001 Real time clock
dacwg001…dacwg005 Digital to analog converter rtos001 CMSIS-RTOS API
dma001…dma004 Direct memory access sdmmc001…sdmmc004 SD & MMC block layer
dsdglobal Delta sigma demodulator sltha001…sltha003 Wrapper to FAT file system (Newlib)
dsdif003 Delta sigma demodulator interface snmp001 Simple network management protocol
dsdrv001 Delta sigma demodulator resolver spi001 Serial peripheral interface
eru001…eru002 Event request unit systm001 System timer (Systick)
eth001…eth004 Ethernet tmps001 Die temperature sensor
fatfs002…fatfs005 FAT file systems (FatFs) uart001…uart002 Universal asynchronous receiver/transmitter
gmm001 CPU global memory manager usbbl001 USB block layer
guikb001 Gui keyboard (emWin) usbcdc001 USB CDC device
guilc001 GUI OLED display controller (emWin) usbcore001 USB core driver (USB OTG host/device)
guims001 GUI mouse (emWin) usbhid001 USB HID class
guisl001 GUI Segger library (emWin) usbjs001 USB joystick
guits001 GUI touchpad usbld001 USB low level driver
i2c001…I2c002 I2C usbms001 USB mass storage device
io001…io004 IO pins usbvc001 USB virtual COM device
iodbg001 Debugger IO pins webserver001 Http webserver

 

O autorze