Mikrokontrolery Infineon XMC4500 w praktyce, część 4. Obsługa GPIO

W artykule pokazano w jaki sposób, przy wykorzystaniu pakietu DAvE 3, napisać program sterujący portami wejścia/wyjścia mikrokontrolera z rodziny XMC4000 firmy Infineon. Jako platformę sprzętową wykorzystano płytkę uruchomieniową  XMC4500 Relax Kit (dostępna jest także jej tańsza wersja, pozbawiona interfejsu Ethernet –  XMC4500 Relax Kit Lite).

 

Porty wejścia/wyjścia to podstawowy zasób wewnętrzny każdego mikrokontrolera. Realizowane przez porty zadania to odczytywanie stanów logicznych z wyprowadzeń mikrokontrolera oraz wystawianie stanów logicznych na wyprowadzenia mikrokontrolera. Na podstawie pierwszej funkcjonalności możliwe jest np. zrealizowanie interfejsu użytkownika poprzez odczytywanie stanów przycisków klawiatury. Na bazie drugiej funkcjonalności możliwe jest np. zrealizowanie prostych systemów sterowania poprzez zmianę stanu przekaźników, kluczy tranzystorowych, diod LED itp. Dodatkowo porty wejścia/wyjścia są wykorzystywane przez niektóre zasoby wewnętrzne mikrokontrolera np. do odczytu wartości napięcia przez przetwornik A/C, bądź do realizacji transmisji danych przez interfejsy komunikacyjne.

 

Budowa portów wejścia wyjścia w mikrokontrolerze z rodziny XMC4500

W mikrokontrolerach XMC4500 występują dwa rodzaje portów: typu cyfrowego oraz typu analogowego. Ich budowę przedstawiono na rysunku 1.

Port cyfrowy składa się z dwóch modułów: modułu cyfrowego ( slice ) z rejestrami i logiką sterującą oraz modułu analogowego ze stopniem buforującym wejście/wyjście. Port tego typu może być używany zarówno do wystawiania stanów logicznych na wyprowadzeniu mikrokontrolera, jak też do odczytywania stanów logicznych z wyprowadzeniu mikrokontrolera. W przypadku wystawiania stanu logicznego 0, sygnał ma poziom napięcia równy ujemnemu potencjałowi napięcia zasilania. W przypadku wystawiania stanu logicznego 1, sygnał ma poziom napięcia równy dodatniemu potencjałowi napięcia zasilania. Gdy port odczytuje stan logiczny, umieszczony w bloku analogowym portu przerzutnik Schmidta klasyfikuje poziom napięcia do wartości logicznej 0 lub 1.

Port analogowy ma za zadanie tylko odczytywać sygnał z wyprowadzenia mikrokontrolera, dlatego w jego module cyfrowym i analogowym, w porównaniu do modułu cyfrowego i analogowego w  porcie cyfrowym, nie ma elementów odpowiedzialnych za wystawianie stanów logicznych na wyprowadzeniu mikrokontrolera.

 

Rys. 1. Budowa portu mikrokontrolera XMC-4000 (z lewej strony port cyfrowy, z prawej strony port analogowy) [1]

Rys. 1. Budowa portu mikrokontrolera XMC4500 (z lewej strony port cyfrowy, z prawej strony port analogowy) [1]

 

 

Oznaczenia rejestrów sterujących portami wejścia/wyjścia wraz z pełną ich nazwą przedstawiono w tabeli 1 [1].

 

Tab. 1. Oznaczenia oraz nazwy rejestrów sterujących portami wejścia/wyjścia

Rejestr Pełna nazwa rejestru
Pn_OUT Port n Output Register
Pn_OMR Port n Output Modification Register
Pn_IOCR0 Port n Input/Output Control Register 0
Pn_IOCR4 Port n Input/Output Control Register 4
Pn_IOCR8 Port n Input/Output Control Register 8
Pn_IOCR12 Port n Input/Output Control Register 12
Pn_IN Port n Input Register
Pn_PDR0 Port n Pad Driver Mode 0 Register
Pn_PDR1 Port n Pad Driver Mode 1 Register
Pn_PDISC Port n Pin Function Decision Control Register (non-ADC ports)
P14_PDISC Port 14 Pin Function Decision Control Register (ADC ports)
P15_PDISC Port 15 Pin Function Decision Control Register (ADC ports)
Pn_PPS Port n Pin Power Save Register
Pn_HWSEL Port n Hardware Select Register

 

DAvE Apps przewidziane do sterowania portami wejścia/wyjścia

Firma Infineon opracowała cztery komponenty oprogramowania DAvE Apps przewidziane do sterowania portami wejścia/wyjścia: IO001, IO002, IO003 oraz IO004. W tabeli 2 przedstawiono krótki opis komponentów oraz ich API ( Application Programming Interface ). Kompletna dokumentacja dotycząca komponentów IO001, IO002, IO003 oraz IO004 znajduje się w systemie pomocy pakietu DAvE 3.

 

Tab. 2. Opis komponentów DAvE Apps (i ich funkcji) umożliwiających sterowanie portami wejścia/wyjścia [2]

Nazwa komponentu DAvE App API (funkcje i definicje) komponentów DAvE Apps Opis
IO001   Sterowanie portami analogowymi
IO001_Init() Inicjalizacja portu
IO001_ReadPin() Odczyt stanu logicznego z wyprowadzenia mikrokontrolera
IO001_EnableAnalogInput() Ustawienie portu do pracy w trybie analogowym
IO001_EnableDigitalInput() Ustawienie portu do pracy w trybie cyfrowym
IO002/IO004           Sterowanie portami cyfrowymi
IO002_Init()
IO004_Init()
Inicjalizacja portu
IO002_DisableOutputDriver()
IO004_DisableOutputDriver()
Ustawienie portu do pracy w trybie wejścia
IO002_EnableOutputDriver()
IO004_EnableOutputDriver()
Ustawienie portu do pracy w trybie wyjścia
IO002_ReadPin()
IO004_ReadPin()
Odczyt stanu logicznego z wyprowadzenia mikrokontrolera
IO002_SetPin()
IO004_SetPin()
Ustawienie wartości 1 na wyprowadzenia mikrokontrolera
IO002_ResetPin() Ustawienie wartości 0 na wyprowadzenia mikrokontrolera
IO002_SetOutputValue()
IO004_SetOutputValue()
Ustawienie wskazanego stanu logicznego na wyprowadzeniu mikrokontrolera
IO002_TogglePin()
IO004_TogglePin()
Zmiana stanu logicznego na przeciwny na wyprowadzeniu mikrokontrolera
IO003      Sterowanie grupą wyprowadzeń mikrokontrolera
IO003_ReadPort() Odczyt wartości z wyprowadzeń mikrokontrolera
IO003_WritePort() Ustawienie wskazanej wartości na wyprowadzeniach mikrokontrolera
IO003_TogglePort() Zmiana wartości na przeciwny na wyprowadzeniach mikrokontrolera

 

Do pobrania

O autorze