W przeciwieństwie do klasycznych komputerów, systemy wbudowane zawsze posiadają mocno ograniczoną pulę zasobów. I nie chodzi tu jedynie o czas CPU czy dostępną pamięć. Należy pamiętać, iż typowy mikrokontroler ma całą gamę wszelakich peryferiów… Ich liczba oraz możliwości również stanowią istotną kwestię dla developerów. W dzisiejszym artykule spróbujemy zastanowić się nad podziałem dostępnych peryferiów dla poszczególnych interfejsów i funkcjonalności.
Diagnostyka
Zaczynamy od diagnostyki, która stanowi podstawowe źródło informacji. Jak wspominałem w artykułach na jej temat, do jej obsługi będzie nam potrzebny jeden interfejs UART lub USART pracujący w trybie asynchronicznym.
CAN
Magistrala CAN jest drugim co do ważności źródłem danych. Ponieważ w pojazdach, które nas interesują mogą istnieć aż dwie, odrębne sieci CAN, będziemy potrzebowali obu dostępnych w procesorze STM32F407 kontrolerów CAN.
Wyświetlacz
W obecnej konfiguracji wyświetlacz korzysta z interfejsu bazującego na zwykłych pinach I/O (GPIO). W przyszłości jednak należy przewidywać przejście na rozwiązanie oparte o dedykowany kontroler pamięci FSMC lub magistralę SPI – oba peryferia muszą zostać wzięte pod uwagę przy parcelowaniu zasobów.
Karta pamięci SD
Tu akurat sytuacja jest prosta – nasz mikrokontroler posiada specjalizowany interfejs SDIO do obsługi kart pamięci. Musimy więc założyć, iż zostanie użyty.
Czujniki zewnętrzne
Przewidując rozbudowę systemu, należy zarezerwować pojedynczy interfejs szeregowy SPI lub I2C w celu ewentualnego podłączenia dodatkowych czujników czy innych układów peryferyjnych.
Pozostałe
- 3x GPIO do obsługi manetki,
- 1x PWM dla podświetlenia wyświetlacza,
- 2x zewnętrzne przerwanie do obsługi czujników: prędkości oraz oleju,
- 1x ADC dla czujnika temperatury,
- 1x UART/USART jako terminal do debugowania,
Podsumowanie
Prz przeczytaniu powyższej listy, ktoś może zapytać:
Po co cała ta rozpiska? Przecież procesor ma pod dostatkiem wszystkich peryferiów – wykorzystujemy raptem ułamek jego możliwości.
Racja – użyjemy zaledwie części dostępnych interfejsów, ale wciąż pamiętajmy, iż część fizycznych wyprowadzeń mikrokontrolera jest współdzielona przez kilka-kilkanaście różnych peryferiów. Nierzadko decydując się na użycie jednego z nich, wyłączamy możliwość użycia innego. Dodatkowo – routowanie płytki PCB (prowadzenie ścieżek) jest o wiele łatwiejsze, jeśli wiemy jak duży mamy stopień swobody w “przepinaniu” się między poszczególnymi pinami i peryferiami.