Fani mikrokontrolerów STM32 dość długo musieli czekać – od chwili pojawienia się pierwszych zapowiedzi – na wprowadzenie do sprzedaży mikrokontrolerów STM32F7, które są wyposażone w mikroprocesorowy rdzeń Cortex-M7. Obecnie dostępna jest już spora liczba mikrokontrolerów z tej rodziny i co ważne, dostępny jest także zestaw ewaluacyjny o ogromnym potencjale i doskonałym wyposażeniu – STM32F7-DISCOVERY.





Producentowi udało się utrzymać w rodzinie STM32F7 niewielki pobór mocy: szacowany pobór prądu przez CPU nie przekracza 420 μA/MHz!

Zestawienie dostępnych typów mikrokontrolerów STM32F7 i ich wybranego wyposażenia przedstawiamy w tabeli 1. W produkcji (status Active) ma aż 19 typów mikrokontrolerów zawartych w tabeli, producent zadbał o to, żeby dostępne były zarówno miniaturowe rozmiarami wersje w obudowach BGA/CSP, jak i łatwe w montażu wersje LQFP.







Rdzenie Cortex-M7 mikrokontrolerów prezentowanych w tabeli są przystosowane do taktowania sygnałem zegarowym o maksymalnej częstotliwości 216 MHz. Pozwala to uzyskać im wydajność obliczeniową 1082 CoreMark i prędkość wykonywania programu 462 DMIPS.


Tab. 1. Dostępne typy mikrokontrolerów STM32F7 (stan na 1.07.2015)





















































































































































































































































Typ Flash [kB] SRAM [kB] Timery 16-bitowe Timery 32-bitowe ADC Licbczba GPIO DAC Interfejsy Obudowa
STM32F745IE 512 320 12×16-bit 2×32-bit 24×12-bit 140 2×12-bit 6 x SPI BGA 176 LQFP 176
STM32F745IG 1024 320 12×16-bit 2×32-bit 24×12-bit 140 2×12-bit 1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC BGA 176 LQFP 176
STM32F745VE 512 320 12×16-bit 2×32-bit 16×12-bit 82 2×12-bit 2 x I2C;2 x SAI;6 x SPI LQFP 100
STM32F745VG 1024 320 12×16-bit 2×32-bit 16×12-bit 82 2×12-bit 1 x SDIO;2 x CAN;2 x I2C;2 x I2S;2 x USB OTG;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 100
STM32F745ZE 512 320 12×16-bit 2×32-bit 24×12-bit 114 2×12-bit 2 x SAI;6 x SPI LQFP 144
STM32F745ZG 1024 320 12×16-bit 2×32-bit 24×12-bit 114 2×12-bit 1 x SDIO;2 x CAN;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 144
STM32F746BE 512 320 12×16-bit 2×32-bit 24×12-bit 168 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 208
STM32F746BG 1024 320 12×16-bit 2×32-bit 24×12-bit 168 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 208
STM32F746IE 512 320 12×16-bit 2×32-bit 24×12-bit 140 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC BGA 176 LQFP 176
STM32F746IG 1024 320 12×16-bit 2×32-bit 24×12-bit 140 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC BGA 176 LQFP 176
STM32F746NE 512 320 12×16-bit 2×32-bit 24×12-bit 168 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC TFBGA 216L 0.8
STM32F746NG 1024 320 12×16-bit 2×32-bit 24×12-bit 168 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC TFBGA 216L 0.8
STM32F746VE 512 320 12×16-bit 2×32-bit 16×12-bit 82 2×12-bit 1 x CEC;2 x SAI;3 x I2C;4 x I2C;4 x SPI;4 x UART;4 x USART LQFP 100
STM32F746VG 1024 320 12×16-bit 2×32-bit 16×12-bit 82 2×12-bit 1 x SDIO;2 x I2C;2 x I2S;2 x SAI;2 x USB OTG;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 100
STM32F746ZE 512 320 12×16-bit 2×32-bit 24×12-bit 114 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 144 WLCSP 143L 0.4
STM32F746ZG 1024 320 12×16-bit 2×32-bit 24×12-bit 114 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 144 WLCSP 143L 0.4
STM32F756BG 1024 320 12×16-bit 2×32-bit 24×12-bit 168 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 208
STM32F756IG 1024 320 12×16-bit 2×32-bit 24×12-bit 140 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC BGA 176 LQFP 176
STM32F756NG 1024 320 12×16-bit 2×32-bit 24×12-bit 168 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC TFBGA 216L 0.8
STM32F756VG 1024 320 12×16-bit 2×32-bit 16×12-bit 82 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 100
STM32F756ZG 1024 320 12×16-bit 2×32-bit 24×12-bit 114 2×12-bit 1 x CEC;1 x SDIO;2 x CAN;2 x SAI;2 x USB OTG;4 x I2C;4 x UART;4 x USART;6 x SPI;Ethernet MAC LQFP 144 WLCSP 143L 0.4

 


Przypomnijmy, że od strony technicznej Cortex-M7 to rozbudowana wersja rdzenia Cortex-M4, wyposażona w szybką pamięć SRAM TCM (dla danych i instrukcji programu) oraz cache dla danych i instrukcji (rysunek 1). Dodatkowo zastosowano w tym rdzeniu zaawansowany 6-poziomowy mechanizm przetwarzania potokowego z predykcją oraz sprzętowym wsparciem superskalarnego wykonywania programu.




Rys. 1. Schemat blokowy rdzenia Cortex-M7 użytego w mikrokontrolerach STM32F7


 


Ważnym udoskonaleniem wprowadzonym w rdzeniu Cortex-M7 w stosunku do protoplasty jest magistrala służąca do komunikacji CPU z blokami peryferyjnymi, który ma wpływ na wypadkową prędkość pracy mikrokontrolera: Master AXI (AXIM). Zapewnia ona łączenie kilku kanałów magistrali AHB w jeden, bardzo szybki kanał dwukierunkowej komunikacji rdzenia z otoczeniem (w rdzeniach Cortex-M4 rdzeń komunikuje się z otoczeniem za pomocą „standardowych” interfejsów-magistral AHB). Rozwiązania zastosowane przez firmę ARM w rdzeniu Cortex-M7 pozwalają na szybszy niż w przypadku poprzedników dostęp rdzenia do zawartości pamięci SRAM i Flash, oczywiście przy założeniu, że konstrukcja pamięci umożliwia bezpośredni odczyt danych z częstotliwością 70…90 MHz.


 



Rys. 2. Budowa i zasada działania akceleratora ART


 


Żeby uniknąć efektu „wąskiego gardła” w dostępie do zawartości pamięci Flash, producenci stosują różne rozwiązania: w mikrokontrolerach STM32 pobieranie danych z pamięci Flash jest buforowane za pomocą sprzętowego akceleratora ART (Adaptive Real-Time). Jego działanie polega m.in. na dekompozycji 128-bitowych słów przechowywanych w pamięci Flash na słowa 16- lub 32-bitowe (rysunek 2), które są kolejkowane w lokalnej (wbudowanej w ART) pamięci cache. Według informacji publikowanych przez producenta, mechanizmy usprawniające dostęp do zawartości Flash spowodowały, że nie ma konieczności używania podczas odczytu wait-state’ów dotychczas istotnie zmniejszających realną prędkość transferu danych.


Producent opracowując mikrokontrolery STM32F7 zadbał o wyposażenie ich w bogaty zestaw elementów peryferyjnych, w skład którego wchodzą wszystkie interfejsy znane z poprzednich generacji mikrokontrolerów oraz kilka nowych rozwiązań, w tym m.in.:



  • zmodyfikowany podsystem generacji sygnałów zegarowych, pozwalający na modyfikację częstotliwości taktowania bloków peryferyjnych bez konieczności zmiany ustawień taktowania CPU,

  • dwukanałowy transceiver I2S z obsługą SPDIF oraz 3 półdupleksowe kanały wejściowe SPDIF, interfejsy USB-OTG z wydzielonym zasilaniem, co pozwala korzystać z tego interfejsu także przy zasilaniu mikrokontrolera napięciem 1,8 V,

  • dwa interfejsy QSPI, które sprzętowo realizują transmisję danych z pamięciami wyposażonymi w 1-, 4- lub 8-bitowe interfejsy komunikacyjne.

Realne możliwości nowego rdzenia oraz wyposażenia mikrokontrolerów STM32F7 można przetestować na zestawach ewaluacyjnych przygotowanych przez firmę STMicroelectronics oraz znacznie tańszym zestawie z serii DISCOVERY – STM32F7-DISCOVERY (32F746GDISCOVERY – fotografia 3), który jest bohaterem naszego artykułu. Wymiary fizyczne tego zestawu są znacznie większe niż dotychczasowych STM32 DISCOVERY, co wynika przede wszystkim z dużego wyświetlacza LCD-TFT, który stanowi integralną część zestawu. Jego przekątna wynosi 4,3 cala, wymiary matrycy 480×272 punktów, moduł wyświetlacza został wyposażony w zintegrowany, pojemnościowy touch-panel z kontrolerem na I2C.


 



Fot. 3. Wygląd „góry” zestawu STM32F7-DISCOVERY


 


Na fotografii – z prawej strony wyświetlacza – widać dwa mikrofony MEMS (MP34DT01) pracujące w konfiguracji stereofonicznej, pozostałe elementy zestawu zamontowano od spodu PCB (fotografia 4).


 



Fot. 4. Widok płytki zestawu STM32F7-DISCOVERY od strony „dolnej”


 


Po liczbie i wymiarach elementów łatwo oszacować, że wyposażenie zestawu należy do ponadstandardowych, w jego skład wchodzą:



  • pamięci NOR Flash z interfejsem QSPI (128 Mb) i pamięć SDRAM o pojemności 128 Mb (z czego w zestawie dla użytkownika jest dostępne 64 Mb),

  • kodek audio WM8994 ze stereofonicznymi: wyjściem słuchawkowym, wyjściami głośnikowymi i wejściem liniowym, zestaw wyposażono także w wejście cyfrowego audio SPDIF,

  • interfejs Ethernet 10/100 bazujący na zewnętrznym MAC 8742A, komunikującym się z mikrokontrolerem poprzez interfejs RMII,

  • złącza: kart MicroSD i kamery CCD (dołączony interfejs DCMI) oraz złącza Arduino Rev.3 (jak w zestawach STM32 NUCLEO), które umożliwiają montaż shieldów przystosowanych do zasilania napięciem 3,3V (fotografia 5),

 



Fot. 5. STM32F7-DISCOVERY wyposażono w złącza zgodne z Arduino Rev.3 (zgodność dotyczy także pinu Vin!)


 



  • interfejsy USB OTG w wersjach: FS (PHY wbudowany w mikrokontroler) oraz HS (z zewnętrznym PHY USB3320C (USB3300), który komunikuje się z mikrokontrolerem za pomocą interfejsu ULPI.

Prezentowany w artykule zestaw STM32F7-DISCOVERY wyposażono w dwa mikroswitche (w tym jeden dla użytkownika – jak w innych zestawach DISCOVERY), złącze dla ekspandera z pamięciami EEPROM NFC (M24SR/M24LR) oraz programator-debugger ST-Link/V2-1. Programator jest przystosowany do współpracy ze środowiskiem mbed.org, ale w chwili pisania artykułu zestaw DISCOVERY z STM32F7 nie znajdował się jeszcze na liście domyślnych platform sprzętowych obsługiwanych przez to środowisko.


Prezentowany zestaw jest dostarczany z zapisanym w pamięci Flash mikrokontrolera programem demonstracyjnym, który składa się z siedmiu części ilustrujących możliwości mikrokontrolerów STM32F7 – są to aplikacje: odtwarzacz audio z korektorem graficznym, odtwarzacz wideo, rejestrator audio z analizatorem widm, sterownik ogrodu, system alarmowy bazujący na kamerach wideo, jedna gra oraz serwer VNC (Virtual Network Computing).


Łatwo zauważyć, ze możliwości i wyposażenie prezentowanego zestawu przerastają dotychczasowe wersje DISCOVERY z STM32. Zestawy STM32F7-DISCOVERY są także droższe od protoplastów, co jest skutkiem ich bardzo bogatego wyposażenia, którego najkosztowniejszym elementem jest wysokiej jakości wyświetlacz LCD-TFT. Jest się czym bawić!