| ||
Shopping Cart Download Website |
Home | Products | Teensy | Blog | Forum |
You are here: Teensy Hardware Tech Specs |
|
Teensy Technical Specifications
AVR Processor
AVR is an 8 bit processor introduced by Atmel in 1996.
It performs quite well for simple control tasks, but the 8 bit architecture performs poorly
for complex code involving numerical tasks or data processing.
Originally, Arduino only supported AVR chips. Today nearly all programs and libraries work with 32 bit Cortex-M processors, but a few very old programs may only work with AVR. Cortex M0+ Processor
Cortex-M0+ is a 32 bit ARM processor optimized for low power and lower
cost chips. It is a true 32 bit processor, able to perform 32 bit
math with the same single-cycle instructions as 8 bit operations.
However, Cortex-M0+ supports fewer instructions than the more powerful ARM processors. When the compiler builds your program, certain complex operations which require only 1 instruction on Cortex-M4 may require 2 or 3. The reduced instruction set works remarkably well for simpler programs, but costs performance for numerically intensive ones. Cortex-M0+ uses a single 32 bit bus to access all memory. This too works very well for simpler programs, but can decrease performance when processing large amounts of data. Cortex M4 Processor
Cortex-M4 is a 32 bit ARM processor optimized for high performance
control applications. The full set of ARM Thumb & Thumb2
instructions are supported, including hardware divide and multiplies
producing 64 bit results.
Special Digital Signal Processing (DSP) instructions are provided. The Teensy Audio Library and arm_math.h utilize these instructions to accelerate sound and signal processing. Cortex-M4 (without "F") does not include a floating point unit. All math done with floating point numbers uses software. Cortex M4F Processor
Cortex-M4F is a 32 bit ARM processor optimized for high performance
control applications. The full set of ARM Thumb & Thumb2
instructions are supported, including hardware divide and multiplies
producing 64 bit results.
Cortex-M4F (with "F") includes a floating point processor for 32 bit (single precision) float variables. The FPU is approximately 30 times faster than software-based float math. 64 bit (double precision) floating point math is still done with software. Special Digital Signal Processing (DSP) instructions are provided. The Teensy Audio Library and arm_math.h utilize these instructions to accelerate sound and signal processing. Cortex M4F Processor
Cortex-M7 is a 32 bit ARM processor optimized for high performance
control applications. Cortex-M7 is loaded with high performance
features, such as dual-issue superscaler architecture (able to
execute 2 instructions per clock), large caches, branch prediction,
and two 64 bit buses to tightly coupled memory.
The full set of ARM Thumb & Thumb2 instructions are supported, including hardware divide and multiplies producing 64 bit results. Cortex-M7 includes a floating point processor for 32 bit (single precision) float and 64 bit (double precision) variables. Special Digital Signal Processing (DSP) instructions are provided. The Teensy Audio Library and arm_math.h utilize these instructions to accelerate sound and signal processing. Flash Memory
Your program is stored in the flash memory. The flash memory
size determines how large your program may be.
Unlike a traditional computer or single-board computer (eg: Raspberry Pi) where programs are loaded from storage media as the computer "boots", your program in flash memory is immediately available and begins running as soon as the processor starts executing. Most programs written with Arduino and using 2 or 3 Arduino libraries need between 20K to 50K. Of course, as more libraries are used, or you write more code, program size grows. Embedding fonts, sound clips or graphics into your program can quickly increase its size. Flash Memory Bandwidth
Individual Flash memory cells are limited by silicon technology to
approximately 20-30 MHz access rates.
To support faster software execution from Flash memory, a "row" of flash memory bits is accessed simultaneously to increase the total bandwidth. Older & slower chips lock the processor and flash memory clocks in sync. Newer & faster chips allow them to be configured separately. Even when the processor runs faster (overclocked), the flash memory bandwidth remains fixed. Flash Memory Caching
Chips supporting faster speeds use a fast cache memory, to speed
up access random and non-sequential access to slower Flash memory.
Larger cache memory allows more complex code with many branches to run faster, but additional cache memory can also increase power consumption. RAM
All of your program's variables and temporary data are stored in RAM.
Many libraries also require RAM to hold data.
Programs which generate graphics, process sound effects, or control large numbers of addressable LEDs often need larger RAM. Some types of data processing are possible to write without much RAM, but much easier if a large array can be used. A board with more RAM may cost a few dollars extra, but save a tremendous amount of time and effort designing your code. On ARM processors, RAM may also be used for speed critical functions with the FASTRUN keyword. EEPROM Memory
EEPROM memory permanently retains data, but is easy to read &
write using the EEPROM library.
Usually EEPROM is used for storing settings or calibration data. EEPROM Emulation
On Teensy LC, EEPROM memory is emulated by software, using a 2K portion
of the Flash memory which is reserved for this purpose. This is why
Teensy LC provides only 62K Flash memory for your program.
The emulation provides 128 bytes of usable EEPROM space. While writing, your entire program stops, because the Flash memory can not be read. These times are usually well under 1 millisecond. If your program must remain responsive while writing to EEPROM, an external chip or a board with proper EEPROM memory should be used. Direct Memory Access (DMA)
The DMA controller can automatically move data between peripherals and
memory, for vastly reduced software overhead.
Each DMA channel can be programmed to respond to different events. More channels allows more hardware to simultaneously leverage DMA. USB ports, Ethernet and SD Card have their own specialized DMA engines which do not consume the general purpose DMA channels. Digital I/O Pins
Digital pins are used to connect to almost almost anything.
...
TODO, expand on this...
Breadboard Friendly Pins
When used on a solderless breadboard, only the pins on Teensy's 2 outside
edges can be used.
These are the number of I/O pins which can actually be used with a breadboard. Other pins in the center, left side, or as only pads on the bottom side are not compatible with breadboard usage. Digital Output Voltage
When digital pins output logic high, the voltage used is the chip's main
power. On newer 32 bit Teensy, this is 3.3V. The older 8 bit boards
use 5V power, unless modified to run at 3.3V.
Output voltage is important because it affects compatibility with other electronics you connect. Most modern electronic devices use 3.3V signals. Many older devices use 5V signals. Some can accept 3.3V signals, but others require a full 5V signal at their inputs. Teensy LC 5 Volt Output
Teensy LC uses 3.3V output for its digital pins. However, it has one
3.3V to 5V buffer connected to pin 17, so you get a copy of the signal
at pin 17 amplified to 5V. This is intended for connection to WS2812B
or similar addressable LED strips, which sometimes do not work reliably
with a 3.3V signal.
Digital Output Current
When acting as a digital output, the pins are capable of delivering current
which can be useful for powering small loads, like a LED. Larger loads
than the pin can supply generally require use of a transistor or solid state relay.
Current limits are specified different ways. These numbers are the recommended maximum, which are design guidelines. Some other sites publish much higher "absolute maximum" ratings, which are based on possible damange to the chip. Usually you should design your project to use no more than the recommended maximum under normal usage, and stay below the absolute maximum in temporary & abnormal conditions. These maximums allow 0.5V drop within the chip. For example, when running from 3.3V power and delivering the full 10 mA maximum, a pin may output as little as 2.7V. Limits also exist for the total current of all pins. Just because each pin is capable of a certain current does not mean you can expect to safely use all pins simultaneously delivering their maximum. Teensy LC Output Current
Teensy LC has 4 digital pins capable of higher 20 mA current. If loads
requiring more current need to be driven, they should be connected to
these 4 pins.
The special 5V buffer chip, which provides a copy of the signal at pin 17 amplified to 5V, is rated for 8 mA output. The other 23 digital pins are rated for 5 mA current. Digital Input Voltage
When digital pins are used as inputs, they expect a digital signal with
a specific voltage level.
3.3V Only means signals higher than 3.3V may damage your Teensy. 5V Tolerant means the pins expects a 3.3V signal, but is designed to allow up to 5 volts. 5V means the pin is designed to accept a 5V signal. Usually 3.3V signals can also be properly received by these pins. Interrupt Pins
Some pins can trigger a function to run, configured by the attachInterrupt()
function. These functions are called Interrupts, because the normal
execution of your program is interrupted when the input voltage changes,
to run your special function.
Analog Inputs
Analog inputs allow you to measure analog voltages, typically from sensors
and knobs (potentiometers). More inputs allow you to connect more sensors
or inputs, without resorting to extra hardware.
Number of Analog to Digital Converters
Even though many pins can be used as analog inputs, they are routed
to a shared circuit which makes the voltage measurement. These
measurement take time, usually 2 to 100 microseconds, depending on
the speed of your chip.
With more than 1 converter present, you can (with the right software) measure more than 1 analog signal simultaneously. This can improve speed. It also allows measuring related signals at the same moment, such as a voltage and a signal representing current, which can be useful if you wish to compute power. Analog to Digital Resolution
Analog to digital conversion gives you a digital number which represents
the analog voltage to a specific resolution. 10 bits resolves your signal
to 1 of 1024 possible levels. More bits give you a finer measurement.
These numbers are the "usable" resolution, or "effective number of bits" in cases where the conversion provides more bits. PJRC believe specification of the total bits gives a misleading impression, because any extra bits provided by the hardware are not usable. They are usually just noise. Fully utilizing the analog resolution depends on good circuit design, particularly use of low impedance signals and careful attention to ground current paths. Programmable Gain Amplifiers
These special amplifiers allow you to measure very small signals.
The voltages at 2 pins are subtracted and that difference is amplified. Thermocouples, strain gauges and other small signals which could normally make a slight change can be mapped onto some or all of the analog to digitial conversion resolution. Capacitive Touch Sensing
Touch sensing measures the capacitance present at a pin. These pins
are used with the touchRead(pin) function. When the pin is
connected to a large metal surface, the presence of a finger (or any other
large object which is grounded or coupled to ground) can be detected by
the change in capacitance.
Touch can also be detected using ordinary digital pins with the CapacitiveSensor library. But the special hardware built into these pins makes the measurement much faster, and usually with better long-term stability. Analog Signal Comparators
Analog comparators allow you to receive the difference of 2 voltages as
a digital signal. If one input is higher, the digital signal will be high,
and if the other is higher, the digital result will be low.
This can be useful for comparing voltages to thresholds, such as a battery discharging below a safe level. While the analog to digital converter is more flexible and usually easier to use, these comparators can be useful for some special applications. Digital To Analog Converters
True analog output (DAC) allows you to create an analog voltage under
software control. These are used with analogWrite(), the same way as
PWM pins, but the result is an actual analog voltage rather than a
pulsing digital waveform.
The Teensy Audio Library supports playing sounds to these DAC pins. Two pins allows stereo output. DAC Resolution
The analog voltage is created in fine steps. 12 bits resolution provides
4096 steps in voltage. Higher resolution allows you to create voltages
closer to the desired output. For sound, higher resolution results in
better sound quality.
General Purpose Timers
with Pulse Width Modulation
These general purpose timers are the most flexible, usable for many
tasks. They also create the PWM outputs.
When used for another purpose, the PWM pins associated with a timer may be limited or may not function at all as PWM. More of these timers allows you to dedicate some to specific uses, and still have more for PWM outputs. When used as PWM, all the pins for a specific timer pulse at the same frequency, controlled by analogWriteFrequency(). More timers allows you to use more individual PWM frequencies. Timers with 16 bits are very flexible for alternate uses, like the FreqMeasure library. The 8 & 10 bit timers are still quite useful, but can not perform some tasks the 16 bit timers can. PWM Pins
Pulse Width Modulation (PWM) pins are very useful. The rapid pulsing
can be used to control the amount of power delivered to LEDs, motors
or other devices where the rapid pulsing is averaged over time.
Remember some PWM pins may become unusable if their timer is reprogrammed for a different purpose. Delay Timer
The Programmable Delay Block is a timer specialized for creating
delays and triggering the analog to digital and digital to analog
conversions with precise timing.
Use of this special timer allows the general purpose timers to be used for PWM other tasks. The Teensy Audio library uses this timer if the ADC or DAC objects are used. The Servo library also defaults to use of this timer, but can also use the LPTMR. Carrier Modulator Timer
This timer is meant for special communication tasks, typically
infrared remote control.
Use of this special timer allows the general purpose timers to be used for PWM other tasks. The IRremote library makes use of this timer. The FrequencyTimer2 library can be used to allow this timer to generate another frequency independent of the PWM timers. Low Power Timers
LPTMR is a timer optimized for low power applications. It is the
only timer which can function in all low power and sleep modes.
The Snooze library uses this timer for low power wakeup. The Entropy, FreqCount, and Servo libraries can also make use of this timer. Programmable Interval Timers
These timers are used to trigger events are regular repeating
intervals. They are accessed using
IntervalTimer.
Many libraries make use of IntervalTimer, rather than requiring the general purpose PWM timers. See the IntervalTimer page for a list of libraries known to use IntervalTimer. Because 2 or 4 of these timers are present, up to 2 or 4 libraries which need IntervalTimer can be used simultaneously without conflict, and without interfering with any other timers. IEEE1588 Timers
IEEE1588 are associated with the Ethernet module. Currently there
is no software supporting these timers.
System Tick Timer
The System Tick is a special timer built into the ARM processor,
meant for keep track of system time. Teensyduino uses this to
implement millis() and other Arduino compatible timing functions.
Use of this dedicated timer allows reliable time keeping, even if the general purpose timers are changed to different frequencies with analogWriteFrequency() or used for other tasks. Real Time Clock/Calendar
The RTC is meant for keeping track of date & time. This timer
uses a dedicated 32.768 kHz crystal, and continues to run while
power is off if a 3V coin cell is connected to VBAT.
See the Time Library for details. Teensy LC RTC
Teensy-LC has RTC logic on-chip, but lacks the 32.786 kHz crystal oscillator &
VBAT battery backup power pin.
An internal oscillator can be used but the
accuracy is poor. This table shows zero, to give you an honest
summary of the hardware's real capability. Even though the RTC
technically exists, it's not useful for most practical purposes.
Teensy 3.2 RTC
Teensy 3.2 has a location to solder a 32.786 kHz crystal for its RTC.
This crystal must be added for the RTC to function. See the
Time Library Page for
details and recommended crystal part numbers.
USB Port
Every Teensy has at least one USB port, used for programming and
a variety of types of USB device communication. The USB port is
configured from the Tools > USB Type menu in Arduino.
Serial Ports
Serial ports are useful for communicating with many different serial
devices, like GPS receivers, wireless modules, RS-485 control networks
and others.
Serial FIFO Feature
Some serial ports have a FIFO, which is a small buffer built into the
port. This buffer allows the serial port to generate fewer interrupts
and consume less CPU overhead when transmitting or receiving data.
The FIFO also allows a longer time for interrupts to be blocked without
losing data.
The FIFOs are used automatically by the serial objects in Teensyduino. Teensyduino implements interrupt-based software buffers for both transmit and receive on all serial ports. These FIFOs do not increase the length of time software may spend without reading incoming data becoming lost, or without writing to obtain full no-gap transmission. The FIFOs are only about reducing the software overhead and tolerating longer interrupt disable times without data loss. High Resolution Baud Rates
Serial baud rates are created by dividing the chip's CPU clock.
Normally at higher baud rates, the selection of possible baud rates
becomes coarse and limited to relatively few specific speeds. High
resolution baud rate hardware slightly varies the times of each
individual bit, to allow much finer control of baud rates, even
at high speeds.
SPI Ports
SPI is a fast clocked serial communication protocol used by many chips.
Usually several chips can share the same SPI port, if a separate pin
is used for their "chip select" signal. More ports allows dedicated
SPI connections.
SPI FIFO Feature
This FIFO is a small hardware buffer which allows faster SPI communication
by reducing the "dead time" between individual bytes communicated. This
FIFO is not automatically used. Special programming is needed. Only
specific libraries, like ILI9341_t3, ST7735_t3 and Ethernet make use of
this feature.
I2C Ports
I2C is a moderate speed clocked communication protocol used by many
chips. Usually many chips can share the same I2C port, as long as
they have unique 7 bit addresses. Multiple ports allows dedicated
connections without sharing, and use of multiple chips with the same
address which would have conflicted if sharing the same port.
CAN Bus
CAN bus is a communication protocol used on automobiles and some
industrial control systems. A CAN transceiver chip is needed to
convert the signals to CAN bus levels to communicate with other
CAN devices.
CAN-FD
CAN-FD (Flexible Data Rate) is an extension to the CAN protocol
which allows much higher data rates than the normal 1 Mbit/sec
CAN maximum.
I2S Digital Audio
I2S is a digital audio streaming protocol, used to communicate with
nearby chips for high quality audio input and output. Each I2S
supports one stereo input and one stereo output.
I2S Digital Audio
Teensy 4.0 & 4.1 have 3 pins which can transmit or receive stereo
audio, but not both. 2 pins are always input and 2 are always output.
For example, if you use the 3 configurable pins as output, you can transmit 5 stereo streams (10 audio channels) and receive 2 stereo streams (4 audio channels). Or you could choose to receive 4 stereo inputs (8 audio channels) by using 2 of the configurable pins, leaving 1 configurable pin and 2 output-only pins to be able to transmit 3 stereo streams (6 audio channels). If only 14 simultaneous audio channels is too limiting, you can also use TDM protocol which supports up to 16 channels of audio per pin! Currently the Teensy Audio Library only supports TDM on the 2 input-only and 2 output-only pins, for a maximum of 32 audio channels input and 32 audio channels output. S/PDIF Input
S/PDIF is a single-wire or optical fiber communication protocol
for digital audio. S/PDIF Input allows Teensy to receive audio
in this digital format.
S/PDIF Output
S/PDIF is a single-wire or optical fiber communication protocol
for digital audio. S/PDIF Output allows Teensy to transmit
audio in this digital format.
S/PDIF Using I2S Port
S/PDIF digital audio may be transmitted using the normal I2S
digital audio port. But while using the I2S hardware for S/PDIF,
it can not be used for I2S for the
audio shield
or other audio ADC, DAC or Codec chips.
MQS Audio Output
MQS (Medium Quality Sound) is a digital pulsed output, similar to
PWM, but with noise shaping to improve audio quality. MSQ can be
used to drive speakers, or it can be low-pass filtered to give an
analog audio signal.
Native SD Card
SD cards can use 2 different protocols, SPI or 4 bit SDIO. This
port allows use of a SD card with the much faster SDIO communication,
for improved performance and to eliminate the need to share SPI
signals between a SD card and other SPI chips.
Ethernet
Ethernet is a fast computer networking protocol. The ethernet port
supports 10 and 100 MBit/sec communication with efficient DMA transfer
to memory. A special shield is required to connect an Ethernet PHY
chip and magnetics to actually communicate with other computers.
|