Teensy® LC Development Board
Unavailable | TEENSYLC | Teensy-LC USB Board | $12.85 |
PJRC recommends use of Teensy 4.0 / 4.1 for new projects. We do not believe supply of chips for Teensy 3.x is likely to ever fully recover. These chips are made with 90 nm silicon process. Most of the world's semiconductor fabs are focusing on 45 nm or smaller, leaving limited supply for older chips. We anticipate the cost of these chips is likely to increase as the supply continues to dwindle.
Update: August 15, 2023: We do not expect to ever have more Teensy LC available. We highly recommend migrating to Teensy 4.0.
|
Sections On This Page:
Photos
Specifications
- ARM Cortex-M0+ at 48 MHz
- 62K Flash, 8K RAM, 128 bytes EEPROM (emulated)
- USB device 12 Mbit/sec
- 27 digital input/output pins, 10 PWM output pins
- 13 analog input pins, 1 analog output pin, 11 capacitive sense pins
- 3 serial, 1 SPI, 2 I2C ports
- 4 simple DMA channels
Software
- Arduino IDE + Teensyduino
- Arduino's IDE software with the Teensyduino add-on is the primary programming environment for Teensy. On Windows, Linux and old Macs, Arduino is installed first and then the Teensyduino installer adds Teensy support to the Arduino IDE. On newer Macs, an all-in-one download is provided. Teensyduino includes a large collection of libraries which are tested and optimized for Teensy. Other libraries may be installed manually or by Arduino's library manager.
- Visual Micro
- Visual Micro allows use of Microsoft Visual Studio to program Arduino compatible boards, including Teensy. Only Windows is supported. Visual Micro is commercial paid software.
- PlatformIO
- PlatformIO IDE is a cross platform development environment with many advanced features. Windows, Linux and Macintosh are supported.
- Command Line with Makefile
- Makefiles for non-graphical use are provided with the Teensyduino installer.
- Teensy 4.x: {Arduino}/hardware/teensy/avr/cores/teensy4/Makefile
- Teensy LC & 3.x: {Arduino}/hardware/teensy/avr/cores/teensy3/Makefile
Processor
- Performance
- Cortex M0+ uses a 2 stage pipeline, optimized for low cost & low power.
- Memory Interface
- A single 32 bit bus is optimized for low power.
Pins
Teensy LC has a total of 27 input/output signal pins. 24 are easily accessible when used with a solderless breadboard.This pinout reference card comes with Teensy LC.
Pinout Card Files:
Front Side (PDF) /
Back Side (PDF)
Digital Pins
- Digital Input Pins
- Digital pins may be used to receive signals. Teensy LC pins default to a low power disabled state. The pinMode function with INPUT must be used to configure these pins to input mode. Then the input may be read with digitalRead. Teensy LC pins accept 0 to 3.3V signals. The pins are not 5V tolerant. Do not drive any digital pin higher than 3.3V.
- Input Pullup & Pulldown Resistors
- All digital pins have optional pullup and pulldown resistors. These are used to keep the pin at logic HIGH or logic LOW when it is not being actively driven by external circuity. Normally these resistors are used with pushbuttons & switches. The pinMode function with INPUT_PULLUP or INPUT_PULLDOWN must be used to configure these pins to input mode with the built-in resistor.
- Pin Change Interrupts
- 18 of the digital pins can detect changes. Use attachInterrupt to cause a function to be run automatically. Interrupts should only be used for clean signals. The Bounce library is recommended for detecting changes on pushbuttons, switches, and signals with noise or mechanical chatter.
- Digital Output Pins
- All digital pins can act at output. The pinMode function with OUTPUT or OUTPUT_OPENDRAIN must be used to configure these pins to output mode. The digitalWrite and digitalToggle functions are used to control the pin while in output mode. Output HIGH is 3.3V. The recommended maximum output current is 5mA for most pins. Pins 5, 16, 17, 21 can deliver 20mA current.
- Pulse Width Modulation (PWM)
- 10 of the digital pins support Pulse Width Modulation (PWM), which can be used to control motor speed, dim lights & LEDs, or other uses where rapid pulsing can control average power. PWM is controlled by the analogWrite function. 3 groups of PWM can have distinct frequencies, controlled by the analogWriteFrequency function.
- Slew Rate Limiting
- This optional feature greatly reduces high frequency noise when long wires are connected to digital output pins. The rate of voltage change on the pin is slowed. The extra time is only nanoseconds, which is enough to lower undesirable high frequency effects which can cause trouble with long wires.
- LED Pin
- Pin 13 has an orange LED connected. The LED can be very convenient to show status info. When pin 13 is used as an input, the external signal must be able to drive the LED when logic HIGH. pinMode INPUT_PULLUP should not be used with pin 13.
- 5V output pin 17
- A copy of the signal at pin 17 is increased to 5 volt range (or more specifically, the voltage at VIN which may be 3.7V to 5.5V) and output at the special "17-5V" pin. This 5V signal is meant for controlling WS2812B addressable LEDs which require 5 volt signal level.
Analog Pins
- Analog Inputs
- 13 pins can be used an analog inputs, for reading sensors or other analog signals. Basic analog input is done with the analogRead function. The default resolution is 10 bits (input range 0 to 1023), but can be adjusted with analogReadResolution. The hardware allows up to 16 bits of resolution, but in practice only up to 13 bits are normally usable due to noise. More advanced use is possible with the ADC library.
- Analog Range & Reference Voltage
- By default Teensy LC uses 3.3V power as its analog reference. An external reference voltage between 1.13V to 3.3V may be applied to AREF and used by analogReference(EXTERNAL).
- Analog Comparators
- These comparators allow an analog signal to be converted to digital, with a precisely defined voltage threshold for logic low versus high.
- Analog Outputs / Digital To Analog (DAC)
- One true analog output DAC is present on pin A12. This may be used with analogWrite, or the Audio library.
- Capacitive Touch Sensing
- 11 pins can measure ground-coupled capacitance. The touchRead(pin) function is used. When Teensy GND is connected to earth ground, or to a conductive enclosure the user holds, these pins may be connected to electrodes to for a touch sensitive user interface. Touch sensing can also be done on other pins with the CapacitiveSensor library, but the built in hardware on these 11 pins is more accurate and much faster.
Communication
Tools > USB Type menu configures the type of USB device Teensy will implement.
- USB Device
- Teensy's primary communication is its main USB port, which operatates in USB device /
peripheral mode at 12 Mbit/sec speed. The Teensyduino software supports many different
types of USB communication to your PC or Mac, selected by the Tools > USB Type menu.
Several of these devices types may be used simultaneously.
- Serial - Seen by your computer as a COM port (Windows) or serial device (Mac, Linux), Serial is the default and most commonly used communication type. Bytes are transfered in both directions at maximum USB speed (baud rate settings are ignored). Teensyduino has highly optimized code to allow fast USB serial data transfer. While normally used with the Arduino Serial Monitor, Teensy's USB Serial mode is compatible with software designed for serial ports, like CoolTerm. On Teensy, the seraild devices is accessed as "Serial". In the Dual & Triple Serial modes, the additional serial devices are "SerialUSB1" and "SerialUSB2".
- Emulated Serial - The USB Type settings lacking Serial use a HID interface to emulate serial. In these modes, your PC or Mac will not detect a COM port or serial device, but you can still use Serial.print() to send text to the Arduino Serial Monitor.
- MIDI - Musical Instrument Device. MIDI is often used to interface knobs, sliders and buttons to music & sound control software. MIDI messages may be sent in both directions. Teensyduino's MIDI is "class compliant" for compatibility with Macintosh, Linux, and Windows using only built-in drivers. The MIDIx4 mode provides 4 virtual MIDI ports / cables. The MIDI device name seen by your computer may be customized.
- Keyboard - Standard 104 key USB keyboard. Programs can transmit keystrokes to your computer, allowing control of nearly any software. Media control keys (play, pause, volume, etc) may also be used. Many non-US keyboard layouts are supported, using the Tools > Keyboard Layout menu.
- Mouse - A special USB mouse is emulated. Both relative motion of a normal mouse, and absolute screen position similar to a digitizer pen can be sent to your computer. Mouse buttons and scroll wheel are also supported.
- Joystick - A joystick / game controller with 6 axes (X, Y, Z, Zr, Slider1, Slider2), 32 buttons, and 1 hat switch are supported. The Joystick type is useful for controlling games or other software which responds to a joystick.
- Touchscreen - Emulates a touchscreen capable of detecting up to 10 finger positions.
- MTP Disk - Media Transfer, seen by your computer as a phone or camera which shares files.
- Flight Sim - Allows integration with the X-Plane flight simulator software. Variables and controls within the simulator are linked to variables in your code running on Teensy.
- Raw HID - Allows communicating 64 byte messages with custom written software on your computer.
- Serial
- 3 serial ports allow you to connect serial devices, such as MIDI, GPS receivers, DMX lighting, ESP wireless modules, etc. All 3 serial port are fully independent and can transfer data simultaneously. None are shared with USB (as is done on some Arduino boards).
- I2C
- 2 ports for I2C (signals SDA & SCL) allow connecting a wide variety of chips which use I2C communication. The Wire library is used for I2C. Each I2C chip connected to the same SDA/SCL wires needs a unique address. Multiple I2C ports allow you to easily use more than 1 chip with the same address. All I2C ports support 100, 400, and 1000 kbit/sec speeds.
- SPI
- 1 port for SPI (signals MOSI, MISO, SCK) allow connecting higher speed chips, SD cards, and displays which use SPI communication. The SPI library provides software support for SPI. Each SPI chip requires a chip select (CS) signal. Most libraries using SPI can use any digital pin. The SPI ports provide special hardware controlled CS pins, which are used by specially optimized libraries for higher performance.
Lights & LEDs
WS2812 LEDs controlled by 5V buffered pin 17.
- WS2812B / NeoPixel
- The WS2812Serial transmits a WS2812 data DMA for non-blocking transmission while your code is able to continue running. This much more allows complex animations or efficent communication than traditional blocking.
- DMX Lighting Control
- Serial may be used for efficient communication with DMX lighting controllers.
- RGB LEDs
- Ordinary LEDs by be variable-brightness controlled by PWM, or the SoftPWM & ShiftPWM libraries.
ShiftPWM controlling 16 RGB LEDs using six 74HCT595 chips
Timing
Tools > USB Speed menu configures the speed Teensy LC will run your code.
- Crystals & Clock Generation
- A 16 MHz crystal is the basis for the system clock and most peripherals. A phase locked loop (PLL) increases the 16 MHz up to the system clock speed.
- Interval Timers
- 2 timers are dedicated to running a function at precisely timed intervals. These are configured using the IntervalTimer class.
- PWM Timers
- 3 timers control PWM pins,
or may be used for other timing functions.
Normally these timers are accessed with analogWrite or libraries, but they
have many very advanced features which may be accessed by direct hardware
register use.
- TPM0 - Controls PWM pins 6, 9, 10, 20, 22, 23. Used by AltSoftSerial library and PulsePosition library.
- TPM1 - Controls PWM pins 16, 17.
- TPM2 - Controls PWM pins 3, 4.
- Watchdog Timer
- This timer is meant to reboot Teensy if your software crashes or gets stuck. Once started, the watchdog timer must be periodically reset. If the software stops resetting the timer for too long, Teensy reboots.
- Special Timers
- These extra timers allow delays, analog sample rate timing, carrier modulation,
and other special timing tasks to be performed, without consuming any of the
normal PWM-oriented timers.
- LPTMR - Generic Timer, used by FreqCount library.
- SysTick
- This system timer generates an interrupt every millisecond. Most of the software timing features use this Systick timer.
- Software Timing
- Many common timing requirements can be met using the software timing features.
- delay(), delayMicroseconds(), delayNanoseconds() - Simple delay for milliseconds, microseconds, or nanoseconds.
- elapsedMillis, elapsedMicros - These C++ classes act as a variable which automatically increments ever millisecond or microsecond. These can be written or modified as needed, which greatly simplifies implementation of repetitive tasks, measuring elapsed time, inactivity timeouts, and so on. The number of these variable is only limited to the available memory.
- millis(), micros() - Stardard Arduino functions for the system time in milliseconds and microseconds.
Power
- USB Power
- Normally Teensy is powered by your PC or USB hub, through a USB cable. The USB power arrives at the VUSB pin, which is connected VIN and powers the entire board.
- VIN Pin
- When USB power is not used, 5V power may be applied to the VIN pin.
Because VIN & VUSB are connected, power should not be applied to VIN
while a USB cable is used, to prevent the possibility of power flowing
back into your computer. Alternately, a pair of pads on the bottom side
may be cut apart, to separate VUSB from VIN, allowing power to be safely
applied while USB is in use.
- 3.3V Power
- Teensy LC has a voltage regulator built in to the main microcontroller, which reduces the 5V VUSB / VIN power to 3.3V for use by the main processor and most other parts. Additional circuitry may be powered from the 3.3V pin. The recommended maximum for external 3.3V usage is 100mA. When power is not applied to VUSB or VIN, it is possible to run by externally applying 3.3V power.
- Power Consumption
- (info here)
- Low Power Features
- (info here - Snooze library)
Memory
- Program / Flash Memory
- Teensy LC has 62 kbyte of flash memory intended for storing your code. The flash memory can also store read-only variables and arrays.
- RAM
- 8K of memory is available for variables and data. Functions may also be placed in RAM using the FASTRUN keyword.
- EEPROM
- 128 bytes of emulated EEPROM memory is supported. Writing to this memory temporarily stalls code execution from flash. The EEPROM library is typically used to access this memory. AVR libc functions may also be used.
- SD Card
- SD cards may be used via the SPI pins, using the SD library with SD.begin(cspin).
- SPI Flash
- Flash memory chips may be added using the SPI pins. These are supported by the SerialFlash and LittleFS libraries.
Programming
Teensy Loader Application
- Teensy Loader
- Programming of Teensy's flash memory is done by the Teensy Loader application. Normally the Arduino IDE or other software is used to compose code, and it automatically runs Teensy Loader as needed. If you have compiled code in HEX file format, Teensy Loader can be used stand-alone to write your HEX file into Teensy's flash memory.
- Automatic Software Entry to Program Mode
- While developing with Teensy, loading normally happens automatically after compiling your program. A "teensy_reboot" utility looks for your Teensy on all USB ports and sends a request (serial baud rate or HID feature report) to automatically switch to programming mode.
- Program Pushbutton / Pin
- If code previously written to Teensy is not listening for USB communication, automatic entry to programming mode is not possible. A physical pushbutton is provided to allow recovery from bad code. Pressing the button button puts Teensy into programming mode. It is not a "reset button" which restarts your program. The button is dedicated to recovery from bad code. A Program pin also allows external hardware to force entry to programming mode.
- Reset
- An active-low reset signal allows rebooting, which restarts the program loaded in Teensy's flash memory.
- Bootloader Chip
- Teensy LC's bootloader is stored in a dedicated chip. All of the main chip's memory is available to your program. Upon power up, your program runs immediately. The bootloader does not run automatically at startup, as is done with most Arduino compatible boards. The physically separate chip keeps Teensy's bootloader separate from your code and prevents flash programming from being able to damage or erase the bootloader.
- Code Security
- For applications requiring code secrecy or security, the FSEC setting may be edited in Teensy's startup code. When code with FSEC set to secure mode is loaded, the Program button function changes to fully erase the flash memory when pressed.
Special Features
- Nested Interrupt Controller
- Priority nesting allows low latency for critical interrupts while lower priority interrupts are in use. Teensyduino's libraries utilize interrupt nesting with priority level defaults which allow many types of libraries to work well when used together.
- Direct Memory Access (DMA)
- Teensy LC has a simple 4 channel DMA controller. A DMAChannel.h abstraction layer is provided. The USB device peripherals also has specialized DMA built in.
Technical Information
- MKL26Z64 Manual - This manual has all the useful programing info
- MKL26Z64 Datasheet - Only the electrical specifications
- Definitive Guide to ARM Cortex-M0 & Cortex-M0+ (book) - ARM Processor low-level details
- RoHS Certificate of Compliance