Walka o przykrótką kołderkę – czyli alokowanie zasobów sprzętowych procesora.

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.

Posted in Sto dni w kolorze.