Teensy 3.5 i Teensy 3.6 (MK64FX512VMD12 / MK66FX1M0VMD18)
Teensy 3.5 oraz Teensy 3.6 to nowe płytki rozwojowe od amerykańskiej firmy PJRC wyposażone w 32-bitowe mikrokontrolery ARM Cortex-M4 z koprocesorem arytmetycznym FPU (Floating Point Unit). Oba modele różnią się głównie zastosowanym mikrokontrolerem. Teensy 3.5 jest wyposażony układ MK64FX512VMD12 taktowany zegarem 120 MHz, natomiast w wersji wyższej jest to MK66FX1M0VMD18 taktowany zegarem 180 MHz. Wymiary obu płytek wynoszą 61mm x 18mm.
Teensy 3.5 oraz Teensy 3.6
Pomimo cech wspólnych, różnią się ilością wyspecjalizowanych portów I/O, rozmiarem dostępnej pamięci Flash, RAM oraz EEPROM. Szczególną uwagę przykuwa Teensy 3.5, ponieważ posiada tolerancję napięcia 5V na wszystkich portach.
Ogólnie można powiedzieć, że specyfikacja obu wariantów robi bardzo mocne wrażenie:
Teensy 3.5 | Teensy 3.6 | |
Mikrokontroler | MK64FX512VMD12 | MK66FX1M0VMD18 |
Zegar | 120 MHz | 180 MHz |
Pamięć Flash | 512 kB | 1024 kB |
Pamięć RAM | 192 kB | 256 kB |
Pamięć EEPROM | 4 kB | 4 kB |
Port USB (High Speed) |
- | 1 |
CAN Bus | 1 | 2 |
Kanały DMA | 16 | 32 |
PWM | 20 | 22 |
I2C | 3 | 4 |
Touch Input | - | 11 |
Poziom logiczny | 3.3V (tolerancja 5V) | 3.3V |
To (aż) tyle, jeśli chodzi o różnice. Pozostałe, wspólne cechy prezentują się następująco:
Teensy 3.5 & Teensy 3.6 |
||
Porty I/O | 62 (42 na krawędzi) | |
SPI | 3 (1 z obsługą FIFO) | |
UART | 6 (2 z obsługą FIFO i Fast Baud Rates) | |
Wejścia analogowe | 25 (2 przetworniki ADC / 13-bit) | |
Wyjścia analogowe | 2 (przetwornik DAC / 12-bit) | |
Port audio I2S | 4 kanałowy (wejście / wyjście) | |
microSD / SDIO | Natywny, 4 bitowy | |
Timery sprzętowe | 14 | |
Ethernet | 100 Mbit | |
Port USB (Full Speed) | 1 | |
Dodatkowe | Cryptographic Acceleration Unit Random Number Generator CRC Computation Unit |
Budowa nowych Teensy jest na tyle sprytnie przemyślana, żę pierwsze 28 pinów (po 14 z każdej strony) jest w pełni kompatybilne z wcześniejszymi wersjami płytek, co pozwala na przyjemny i bezbolesny upgrade swoich obecnych projektów. Z prawej strony umieszczono z kolei wszystkie debiutujące nowinki. Teensy 3.6 posiada także dodatkowy port USB 2.0 (High Speed), który może pracować w trybie hosta - oznacza to, że możemy do niego podłączyć pamięć USB, klawiaturę lub inne urzędzenie. Pinout przedstawia się następująco:
Arduino IDE
PJRC zdołało nas już przyzwyczaić, że płytki Teensy są kompatybilne ze środowiskiem Arduino IDE - tak jest i tym razem za sprawą pakietu instalacyjnego Teensyduino 1.30 w której wprowadzono obsługę Teensy 3.5 oraz Teensy 3.6.
Teensyduino 1.30 jest możemy doinstalować do Arduino IDE w wersjach 1.0.6, 1.6.5-r5, 1.6.8, 1.6.9, 1.6.10 oraz 1.6.11. Kolejna wersja 1.31 ma przynieść również wsparcie dla Arduino 1.6.12. Instalacja praktycznie ogranicza się do pobrania, uruchomienia instalatora i wybrania katalogu domowego naszej instalacji Arduino IDE.
Dodatkowy krok będą musieli wykonać użytkownicy Linuksa, dodając do reguł udev nowy wpis:
- ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{ID_MM_DEVICE_IGNORE}="1"
- ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{MTP_NO_PROBE}="1"
- SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666"
- KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666"
Powyższe definicje możemy zapisać na przykład w pliku /etc/udev/rules.d/99-teensy.rules i ponownie uruchomić komputer. W Arduino IDE będziemy mieli już możliwość programowania nowych płytek oraz wyboru trybu pracy gniazda USB oraz częstotliwości taktowania zegara.
Arduino IDE 1.6.11 / Obsługa płytek Teensy
Arduino IDE 1.6.11 / Wybór trybu pracy portu USB
Arduino IDE 1.6.11 / Wybór prędkości taktowania zegara
Co ciekawe, programując Tennsy 3.6 możemy przetaktować układ z 180 MHz do 240 MHz!
Możliwość przetaktowania Teensy 3.6
Benchmark
Na początek użyjemy naszego nieśmiertelnego programu obliczającego 1 milion iteracji liczby Pi.
- #define ITERATIONS 1000000L // number of iterations
- #define FLASH 10000 // blink LED every 1000 iterations
- void setup() {
- pinMode(13, OUTPUT); // set the LED up to blink every 1000 iterations
- SerialUSB.begin(57600);
- }
- void loop() {
- unsigned long start, time;
- unsigned long niter=ITERATIONS;
- int LEDcounter = 0;
- boolean alternate = false;
- unsigned long i, count=0;
- float x = 1.0;
- float temp, pi=1.0;
- SerialUSB.print("Beginning ");
- SerialUSB.print(niter);
- SerialUSB.println(" iterations...");
- SerialUSB.println();
- start = millis();
- for ( i = 2; i < niter; i++) {
- x *= -1.0;
- pi += x / (2.0f*(float)i-1.0f);
- if (LEDcounter++ > FLASH) {
- LEDcounter = 0;
- if (alternate) {
- digitalWrite(13, HIGH);
- alternate = false;
- } else {
- digitalWrite(13, LOW);
- alternate = true;
- }
- temp = 40000000.0 * pi;
- }
- }
- time = millis() - start;
- pi = pi * 4.0;
- SerialUSB.print("# of trials = ");
- SerialUSB.println(niter);
- SerialUSB.print("Estimate of pi = ");
- SerialUSB.println(pi, 10);
- SerialUSB.print("Time: ");
- SerialUSB.print(time);
- SerialUSB.println(" ms");
- delay(10000);
- }
Wyniki
Płytka | Mikrokontroler | Zegar | Wynik |
Arduino UNO | ATmega328 | 16 MHz | 56,455 s |
Iteaduino Lite | LGT8F88A | 16 MHz | 52,307 s |
Iteaduino Lite | LGT8F88A | 32 MHz | 26,150 s |
Arduino Zero | ATSAMD21G18 | 48 MHz | 19,661 s |
Intel Galileo Gen2 | Intel Quark X1000 | 400 MHz | 0,396 s |
NodeMCU v2 | ESP8266 | 80 MHz | 6,251 s |
NodeMCU v2 | ESP8266 | 160 MHz | 3,176 s |
Teensy 3.5 | MK64FX512VMD12 | 48 MHz | 0,710 s |
Teensy 3.5 | MK64FX512VMD12 | 120 MHz | 0,283 s |
Teensy 3.6 | MK66FX1M0VMD18 | 48 MHz | 0,710 s |
Teensy 3.6 | MK66FX1M0VMD18 | 120 MHz | 0,284 s |
Teensy 3.6 | MK66FX1M0VMD18 | 180 MHz | 0,189 s |
Teensy 3.6 | MK66FX1M0VMD18 | 192 MHz | 0,177 s |
Teensy 3.6 | MK66FX1M0VMD18 | 216 MHz | 0,157 s |
Teensy 3.6 | MK66FX1M0VMD18 | 240 MHz | 0,142 s |
Na zakończenie sprawdźmy jaki wpływ ma przetaktowanie Teensy 3.6 do 240 MHz. O ile przy niskich częstotliwościach różnica jest zauważalna, to przetaktowanie układu z 180 MHz do 240 MHz praktycznie nie wpływa negatywnie na wzrost temperatury.
Teensy 3.6 @ @ 24 MHz
Teensy 3.6 @ @ 180 MHz
Teensy 3.6 @ @ 240 MHz
Reklama
Komentarze

Jest gdzieś jakiś ranking, benchmark pokazujący wydajność najlepszych procesorów ARM 8-10 rdzeniowych w porównaniu z procesorami AMD, intela? Jaki jest obecnie najwydajniejszy procesor ARM, dogania w ogóle i3?

Arduino Mega 2560
16MHz
59 030 ms