Płytka Teensy 4.0 ARM Cortex-M7 NXP iMXRT1062 600MHz [PJRC TEENSY40]

Kod:
TEN-1821
Waga: Help
4 g
Dostawca:

Malutka płytka rozwojowa w formacie Teensy 3.2 wyposażona w super wydajny procesor ARM Cortex-M7 o taktowaniu 600MHz.

W magazynie Help 116

PLN 159,00
PLN 129,27 bez VAT
Ile sztuk? Rabat Cena za szt
1 159,00
5+ 7,00 % 147,87
25+ 15,00 % 135,15
Rabaty ilościowe nie sumują się z innymi promocjami. Podano ceny brutto, obliczenia na podstawie cen netto.

Czysta moc obliczeniowa!

To malutka, niepozorna płytka programowalna z poziomu Arduino IDE, która skrywa w sobie ogromny potencjał. Teensy 4.0 zostało wyposażone w 32-bitowy procesor ARM Cortex-M7 taktowany zawrotnym zegarem 600 MHz. Zastosowanie układu NXP iMXRT1062 sprawia, że Teensy 4.0 to w chwili premiery najszybszy mikrokontroler na rynku. Deklasuje absolutnie wszystko co do tej pory widzieliśmy. Zostawia daleko w tyle superszybkie Teensy 3.6, od którego jest przynajmniej 5 razy szybsze. Z kolei od popularnego ESP32 jest szybsza przynajmniej 6 razy… Ale to nie koniec niespodzianek. Teensy 4.0 potrafi wróżyć (branch prediction), może modyfikować swój zegar podczas pracy, ma wydajne peryferia, które mogą korzystać z DMA i sprzętowe FPU obsługujące liczby zmiennoprzecinkowe podwójnej precyzji.

Co z tym zrobić?

Paul Stoffregen - autor płytki przewiduje, że Teensy 4.0 będzie wykorzystywane do polifonicznej syntezy audio, uruchamiania średnio złożonych algorytmów uczenia maszynowego i analizy audio w czasie rzeczywistym. W wielu przypadkach pierwszy poziom obróbki danych z urządzeń wejściowych można teraz przenieść z komputera na zewnętrzny mikrokontroler, zmniejszając przepustowość wymaganą pomiędzy mikrokontrolerem a komputerem. Z kolei w przypadku projektów wykorzystujących wyświetlacz wbudowany potok przetwarzania pikseli może znacząco przyspieszyć operacje graficzne, tym samym odciążając procesor.

Możesz też wgrać blinka i chełpić się tym, że Twoja płytka ma 600MHz :P

Specyfikacja:

  • Procesor: NXP iMXRT1062 ARM Cortex-M7 taktowany zegarem 600 MHz
  • RAM: 1024K (512K ściśle powiązane)
  • Flash: 2048K (64K zarezerwowane w celach odzyskiwania i emulacji EEPROM)
  • 2 x USB, pracujące z prędkością 480 mbps
  • 3 x CAN Bus (1 z CAN FD)
  • 2 x Cyfrowe Audio I2S
  • 1 x Cyfrowe Audio S/PDIF
  • 1 x SDIO (4 bit) natywne SD
  • 3 x SPI, wszystkie z 32 bajtowym FIFO (16 word)
  • 3 x I2C, wszystkie z 4 bajtowym FIFO
  • 7 x Serial, wszystkie z 4 bajtowym FIFO
  • 32 kanały DMA ogólnego przeznaczenia
  • 31 piny PWM
  • 40 pinów cyfrowych, wszystkie z obsługą przerwań
  • 14 pinów analogowych, 2 ADC wbudowane w układ
  • Sprzętowa akceleracja operacji kryptograficznych
  • Sprzętowy Generator liczb losowych
  • Zegar czasu rzeczywistego RTC (data/czas)
  • Programowalne FlexIO
  • Pixel Processing Pipeline
  • Peripheral cross triggering
  • Power On/Off management

Zużycie prądu, skalowanie zegara i zarządzanie zasilaniem

Komputery PC przyzwyczaiły nas, że wysoka wydajność zawsze idzie w parze z bardzo wysoka prądożernością. Podczas pracy z częstotliwością 600 MHz Teensy 4.0 pobiera około 100 mA prądu. To dużo i niedużo, zależy jak spojrzeć. Co ważne Teensy 4.0 wspiera obsługę dynamicznego skalowania zegara. W przeciwieństwie do tradycyjnych mikrokontrolerów, w których zmiana prędkości zegara powoduje błędy transmisji i inne “ciekawe” problemy, sprzęt Teensy 4.0 i oprogramowanie Teensyduino obsługujące funkcje taktowania są zaprojektowane tak, aby umożliwić dynamiczne zmiany prędkości. Prędkość transmisji szeregowej, częstotliwości próbkowania strumieniowego przesyłania audio oraz funkcje Arduino, takie jak delay() i millis(), oraz rozszerzenia Teensyduino, takie jak IntervalTimer i elapsedMillis, działają poprawnie podczas gdy procesor w najlepsze zmienia prędkość. A jak się domyślacie niższy zegar to niższe zużycie prądu.

Teensy 4.0 zapewnia również funkcję wyłączania zasilania bez potrzeby odłączania kabli. Po podłączeniu przycisku do styku On/Off mamy możliwość całkowitego wyłączenia sekcji zasilania 3.3V. Wystarczy przytrzymać przycisk przez 5 sekund. Ponowne włączenie odbywa się przez ponowne krótkie naciśnięcie przycisku. Jeśli do pinu VBAT jest podłączona bateria podtrzymująca RTC, Teensy 4.0 będzie śledzić datę i czas, gdy zasilanie jest wyłączone.

A teraz usiądźcie… Teensy 4.0 można również podkręcić! I to znacznie powyżej 600 MHz!

Kilka słów o procesorze Cortex-M7

2 instrukcje w 1 cyklu

ARM Cortex-M7 naszym zdaniem jest bardzo dobrym kandydatem do stworzenia platformy czasu rzeczywistego. Co prawda nie jest to procesor w pełni dwu wątkowy, ale dzięki architekturze superskalarnej może on wykonywać 2 instrukcje na cykl zegara. I to wszystko przy zawrotnych 600 MHz! Oczywiście możliwość jednoczesnego wykonania instrukcji zależy od ich typu i rejestrów porządkowych kompilatora, ale pierwsze testy porównawcze pokazały, że kod C++ skompilowany przez Arduino IDE ma tendencję do jednoczesnego wykonania 2 instrukcji w około 40-50% wypadków podczas wykonywania intensywnej obliczeniowo pracy na liczbach całkowitych i wskaźnikach. To tak jakbyśmy właśnie dołożyli dodatkowe 300MHz do zegara :)

Wróżbita (branch prediction)

Niespodzianek jest o wiele więcej! Cortex-M7 to pierwszy mikrokontroler z rodziny ARM, który potrafi wróżyć z kart tarota, fusów waniliowego Latte i szklanej kuli :) <żarcik? /> Posiada bowiem układ przewidywania rozgałęzień (branch prediction), który całkiem dobrze sobie radzi w mikrokontrolerowych warunkach. Zasada działania tego układu jest dość prosta. Cały czas monitoruje statystycznie pod jakie adresy skacze program i jeśli adres się powtarza kilka razy, to automatycznie przygotowuje strumień instrukcji z tego adresu do przetwarzania przez procesor. Dla porównania w rodzinie M4 (znanej z Teensy 3.x) wielokrotne wykonywanie kodu pętli na obsługę pożerało 3 cykle zegara za każdym razem. W Cortex-M7 po tym jak pętla zostanie wykonana kilka razy, mikrokontroler magicznie likwiduje narzut, pozwalając na wykonanie pętli z użyciem tylko jednego cyklu zegara. W świecie mikrokontrolerów oznacza to ogromną oszczędność czasu procesora. Kolejne cykle można wykorzystać na coś innego.

RAM ściśle powiązany/spięty/sprzężony… umagiczniony!

W Teensy 4.0 połowa RAMu jest “ściśle powiązana”. Czy jakkolwiek się tłumaczy termin “Tightly Coupled Memory”. W naszej mikrokontrolerowej karierze spotykamy się z tym pierwszy raz. Pamięć tę widać na schemacie blokowym kontrolera - znajduje się ona bezpośrednio w rdzeniu ARM. W rezultacie procesor ma do niej bardzo szybki i wyłączny dostęp. W praktyce oznacza to, że Cortex-M7 potrafi w pojedynczym cyklu zegara otrzymać dostęp do pamięci używając dwóch 64-bitowych magistrali. Jest szybko, bardzo szybko… Robi to dobrą robotę i przekłada się to na wzrost wydajności, więc nie narzekamy :)

Wydajne peryferia z obsługą DMA

Reszta pamięci jest zoptymalizowana pod DMA (Direct Memory Access - bezpośredni dostęp do pamięci). Oznacza to, że obustronna komunikacja z peryferiami odbywa się bardzo szybko i co ważne, procesor nie musi być pośrednikiem. Dla przykładu, dzięki temu można transferować dane do DAC bez udziału procesora w precyzyjnie ustalonych odstępach czasu. Wymagające peryferia mają zatem ogromne pole do popisu - jednym słowem mamy tu do czynienia z bardzo wydajnym I/O.

W dokumentacji procesora natrafiamy także na HS_GPIO czyli obsługę GPIO zaimplementowaną w rdzeniu ARM. Łatwo się domyślić, że jest to bardzo szybka obsługa. Są to co prawda tylko wybrane piny, ale w razie potrzeby natychmiastowej reakcji na sygnał, taka funkcjonalność może okazać się na wagę złota.

FPU podwójnej precyzji co robi zacną robotę!

Procesor Cortex-M7 w Teensy 4.0 posiada dedykowaną jednostkę do obliczeń zmiennoprzecinkowych (FPU), która obsługuje zarówno 64-bitowe liczby podwójnej precyzji (“double”), jak i standardowe 32-bitowe liczby zmiennoprzecinkowe (“float”). Należy pamiętać, że FPU było obecne już w rodzinie M4 (Teensy 3.5, 3.6, Atmel SAMD51). Ale tam wspierało tylko 32-bitowe liczby zmiennoprzecinkowe. Każde użycie liczb zmiennoprzecinkowych podwójnej precyzji, czy funkcji takich jak log(), sin(), cos() oznaczało przesiadkę na powolne obliczenia implementowane programowo. W Teensy 4.0 wszystkie te operacje wykonuje sprzętowy FPU. Niezły czad! Kolejne zaoszczędzone cykle!

Jak małe są płytki Teensy?

W chwili obecnej rodzina Teensy składa się z 7 płytek. Dwie z nich bazują na 8-bitowym mikrokontrolerze AVR, pozostałe 5 to zawierają 32-bitowe układy z rodziny ARM. Wymiary poszczególnych płytek:

  • Teensy 2.0 - 30 x 18 mm
  • Teensy++ 2.0 - 50 x 18 mm
  • Teensy LC - 36 x 18 mm
  • Teensy 3.2 - 36 x 18 mm
  • Teensy 3.5 - 61 x 18 mm
  • Teensy 3.6 - 61 x 18 mm
  • Teensy 4.0 - 36 x 18 mm
  • Teensy 4.1 - 61 x 18 mm

W zestawieniu z Arduino UNO R3 wyglądają następująco:

Płytki Teensy 8-bit AVR:
Płytki Teensy 32-bit ARM:
Dedykowane akcesoria:
Pasujące akcesoria:

Pliki