Teensy 4.0

Prévenez moi quand ce produit est à nouveau en stock
28.80 € TTC
24.00 € HT
Quantité en stock : 0

Le Teensy-4.0 est tout simplement la plateforme la plus puissante de l'environnement Arduino :

 

  • Processeur ARM Cortex-M7 cadencé à 600 Mhz avec FPU 32 et 64 bits
  • 2Mo de Flash, 1 Mo de RAM, 4K EEPROM (émulée)
  • 2 ports USB à 480 MBits/s
  • 7 ports série, 3 ports SPI, 3 ports I2C
  • 3 bus CAN (dont un en CAN FD)
  • 2 ports I2S, 1 port d'entrée / sortie S/PDIF
  • 1 port SDIO (4 bits) pour la gestion native des cartes SD
  • 32 cannaux DMA 
  • 31 sorties PWM
  • 40 E/S numériques, toutes capables de générer des interruptions, dont 24 accessibles directement
  • 14 entrées analogiques sur 12 bits / 2 ADCs
  • Accélération cryptographique, Générateur de nombres aléatoires
  • Horloge temps réel pour la date/heure
  • Processeur de rendu de pixel
  • Gestion dynamique de l'horloge et de l'alimentation pour la mise en veille 

 

Le Teensy 4.0 utilise le même format que le Teensy 3.2, la majorité des broches offrant les mêmes fonctionnalités.

 

Téléchargement Pilotes : Pilotes Teensy

DescriptionSchémasBranchementsDimensions

Consommation d'énergie et gestion

 

Lorsqu'il fonctionne à 600 MHz, le Teensy 4 consomme environ 100 mA de courant.
 
 
Contrairement aux microcontrôleurs traditionnels, où le changement dynamique de la vitesse d'horloge provoque des taux de transmission incorrects et d'autres problèmes, le Teensy 4 est conçu pour permettre des changements dynamiques de la fréquence horloge. Les vitesses de transmission des ports série, les fréquences d'échantillonnage du streaming audio et les fonctions Arduino comme delay() et millis(), et les extensions de Teensyduino comme IntervalTimer et elapsedMillis, continuent de fonctionner correctement pendant que le CPU change de fréquence.
 
 
Le Teensy 4 propose également une fonction de mise hors tension. En connectant un bouton-poussoir à la broche On / Off, l'alimentation 3,3 V peut être complètement désactivée en maintenant le bouton enfoncé pendant 5 secondes, puis réactivée par une brève pression sur le bouton. Si une pile bouton est connectée au VBAT, l'horloge temps réel du Teensy 4 continue également de garder une trace de la date et de l'heure lorsque l'alimentation est coupée.
 
 
Le Teensy 4 peut également être surcadencé bien au-delà de 600 MHz, à plus de 1 GHz avec un radiateur !
 

Détails du processeur Cortex-M7

 

L'ARM Cortex-M7 apporte de nombreuses fonctionnalités puissantes. Le Cortex-M7 est un processeur superscalaire et peut exécuter 2 instructions par cycle d'horloge, à 600 MHz ! Bien sûr, cette exécution simultanée dépend des instructions de commande et des registres du compilateur. Les tests ont montré que le code C ++ compilé par Arduino parvient à executer 2 instructions simultanément environ 40% à 50% du temps, tout en effectuant un travail intensif sur des entiers et des pointeurs.

 

Le Cortex-M7 est le premier microcontrôleur ARM à utiliser la prédiction de branche. Sur le M4, les boucles et autres codes dont la plupart des branches prennent 3 cycles d'horloge. Avec le M7, après qu'une boucle ait été exécutée plusieurs fois, la prédiction de branchement supprime cette surcharge, permettant à l'instruction de branchement de s'exécuter en un seul cycle d'horloge.

 

La mémoire à couplage étroit est une fonction spéciale qui permet un accès rapide en un cycle du Cortex-M7 à l'aide de 2 bus de 64 bits. Le bus ITCM de 64 bits sert à récupérer les instructions. Le bus DTCM est en fait une paire de bus 32 bits, permettant à M7 d'effectuer jusqu'à 2 accès mémoire distincts dans le même cycle. Ces bus à très haute vitesse sont séparés du bus AXI principal du M7, qui accède à d'autres mémoires et périphériques. 512 Ko de mémoire sont accessibles en tant que mémoire étroitement couplée. Teensyduino installe automatiquement votre code dans l'ITCM et toute la mémoire non-malloc utilisée utilise la mémoire DTCM rapide, sauf si vous ajoutez des mots clés supplémentaires pour remplacer la valeur par défaut optimisée.

 

La mémoire non accessible sur les bus étroitement couplés est optimisée pour l'accès DMA par les périphériques. Étant donné que l'essentiel de l'accès à la mémoire du M7 se fait sur les 2 bus étroitement couplés, les puissants périphériques basés sur DMA ont un excellent accès à la mémoire non-TCM pour des E / S très efficaces.

 

Le processeur Cortex-M7 de Teensy 4 comprend une unité à virgule flottante (FPU) qui prend en charge les "double" 64 bits et les "float" 32 bits. Avec les FPU des M4 présents sur Teensy 3.5 et 3.6, ainsi que sur les Atmel SAMD51, seul les calculs sur les flottants 32 bits sont accélérés matériellement. Toute utilisation de fonctions doubles, comme log (), sin (), cos () signifient des calculs lents mis en œuvre par logiciel. Le Teensy 4 exécute tout cela avec le matériel.

 

Organisation de la Mémoire

 

Le Teensy 4.0 a 1 Mo de RAM et 2 Mo de mémoire Flash, le Teensy 4.1 a 8 Mo de mémoire Flash. La RAM est divisée en 2 banques physiquement distinctes.

 

 

La mémoire est utilisée de la manière suivante :

  • Variables initialisées - Ce sont des variables globales et statiques qui ont des valeurs non nulles définies. Leurs données sont copiées de la méoire Flash vers la RAM1 au démarrage.
  • Variables mises à zéro - Ce sont toutes les autres variables globales et statiques.
  • Variables locales - Les variables locales, ainsi que les adresses de retour des appels de fonction et l'état enregistré des interruptions, sont placés sur une pile qui commence à partir du haut de RAM1 et croît vers le bas. La quantité d'espace pour les variables locales est la partie de RAM1 non utilisée par le code FASTRUN et les variables initialisées et mises à zéro.
  • Variables DMAMEM - Les variables définies avec "DMAMEM" sont placées au début de RAM2. Normalement, des tampons et de grands tableaux sont placés ici. Ces variables ne peuvent pas être initialisées.
  • Variables PROGMEM - Les variables définies avec "PROGMEM" sont placées uniquement dans la mémoire flash. Ils sont accessibles normalement.
  • new / malloc () - La mémoire allouée par C ++ "new" et C malloc () provient de RAM2, commençant immédiatement après les variables DMAMEM.
  • Code FASTRUN - Les fonctions définies avec "FASTRUN" sont attribuées au début de RAM1. Une copie est également stockée dans Flash et copiée sur RAM1 au démarrage. Ces fonctions sont accessibles par le bus Cortex-M7 ITCM, pour des performances les plus rapides possibles. Par défaut, les fonctions sans type de mémoire défini sont traitées comme FASTRUN. Une petite quantité de mémoire est généralement inutilisée, car le bus ITCM doit accéder à une région de mémoire qui est un multiple de 32 Ko.
  • Code PROGMEM - Fonctions définies avec "PROGMEM" exécutées directement à partir de Flash. Si le cache Cortex-M7 ne contient pas déjà une copie de la fonction, un retard se produit pendant que la mémoire Flash est lue dans le cache du M7. PROGMEM doit être utilisé sur le code de démarrage et d'autres fonctions où la vitesse n'est pas importante.
  • Émulation EEPROM - 60 Ko de mémoire Flash sont réservés à l'émulation EEPROM. Normalement, la bibliothèque Arduino EEPROM est utilisée, mais les fonctions AVR eeprom sont également prises en charge pour la compatibilité avec le code hérité. Pendant le téléchargement, cette partie de la mémoire Flash n'est ni effacée ni modifiée, donc vos données enregistrées dans cette zone seront conservées.
  • Programme de restauration - Lorsque vous appuyez sur le bouton-poussoir Teensy 4 pendant 15 secondes (un flash rapide sur la LED rouge vous indiquera le moment de relâcher), tout le flash, sauf 4K, est effacé, et un programme de clignotement LED est copié au début de la mémoire Flash. Ces 4K sont une mémoire spéciale accessible uniquement en lecture seule, vous pouvez donc toujours utiliser cette pression de 15 secondes pour effacer complètement votre Teensy 4 et le restaurer avec un programme de clignotement de référence.

 

La RAM1 est accessible par 2 bus 64 bits à très haute vitesse, ITCM pour exécuter le code et DTCM pour accéder aux données. Pour des performances optimales, placez le code et les variables dans RAM1. La mise en cache n'est pas utilisée avec RAM1, car tous les emplacements dans RAM1 sont accessibles à la même vitesse que les caches du processeur M7.

 

La RAM2 est accessible par un bus AXI 64 bits qui fonctionne à 1/4 de la fréquence d'horloge du processeur. Bien que plus lent que ITCM et DTCM, il est tout de même très rapide. Normalement, les tampons de données et les grands tableaux sont placés dans cette RAM2. Le cache de données ARM Cortex-M7 est utilisé avec cette mémoire. Lorsque des transferts DMA sont utilisés, les fonctions de gestion du cache de données doivent être utilisées pour vider ou supprimer les données mises en cache. Les DMA des périphériques peuvent accéder à la RAM2 sans rivaliser avec l'utilisation extrêmement large de la bande passante de RAM1 par les bus ITCM et DTCM.

 

La mémoire Flash est accessible par FlexSPI, qui mappe l'intégralité du Flash dans la mémoire du M7. Tout emplacement dans la puce Flash peut être lu comme s'il s'agissait d'une mémoire ordinaire. La mise en cache est utilisée, il y a donc souvent peu de perte de performances. Mais un échec de cache nécessite de nombreux cycles d'horloge pour remplir une ligne de cache à partir de la puce Flash. Normalement, seuls les grands tableaux, le code de démarrage et d'autres ressources qui ne sont pas critiques en termes de vitesse doivent être accessibles à partir de la mémoire Flash. Les constantes de chaîne ne peuvent être placées que dans le flash en utilisant la syntaxe F ("chaîne").