Teensy 3.0, Low-Cost 32 bit ARM-Cortex M4 for Arduino and C language projects:
Missed this Kickstarter? Teensy 3.0 will be available from PJRC at this page:
Teensy 3.0 is a small, breadboard-friendly development board designed by Paul Stoffregen and PJRC. Teensy 3.0 will bring a low-cost 32 bit ARM Cortex-M4 platform to hobbyists, students and engineers, using Arduino(R)** or programming directly in C language.
Based on a 32 bit ARM chip, Teensy 3.0 aims to greatly increase the computing capability and peripheral features, but maintain the same easy-to-use platform that has made Teensy 2.0 so successful.
Teensy 3.0 has been in development for well over 1 year. Many prototypes have been built. The photo above is the final prototype.
The goal for this Kickstarter project is to manufacture and ship the first 1 or 2 batches of Teensy 3.0 boards.
The hardware and initial software has already been designed (see the Project History section below), and most of the components have already been purchased on credit! Teensy 3.0 is very, very close. All rewards are actual Teensy 3.0 boards.
The photo above is the final, fully verified prototype. Actual Teensy 3.0 boards will have a black solder mask, instead of green, but otherwise will be virtually identical to the photo above. The board size is 1.4 by 0.7 inch (~3.5 by 1.8 cm).
Beyond the immediate goal of this Kickstarter, Teensy is about creating an affordable and easy-to-use electronics development board. Software development will be ongoing long after this Kickstarter project, to bring additional features and enable more types of uses for Teensy 3.0 in a wide variety of electronic projects.
Why use Teensy 3.0:
First and foremost, Teensy 3.0 is about bringing much more capability to the Arduino environment, at a very affordable price, and in a tiny size that works great on breadboards and embedded inside projects. Numerous 32 bit ARM boards have appeared on the market over the last year, but most are quite difficult to use, or only work with very expensive (or crippled demo) software. Teensyduino will support Teensy 3.0 on Arduino, running on Windows, Macintosh and Linux, with the same ease-of-use as Teensy 2.0 and official Arduino(R)** products.
A 32 bit processor and more memory are only the beginning of Teensy 3.0's hardware benefits. The chip has a 16 bit A/D converter (realistically, 13 bits are usable), for much better analog input resolution than any Arduino compatible board. There's an I2S interface, which can be used to connect CD quality audio input and output.
On top of 10 PWM capable pins, the chip features 4 interval timers and 4 delay timers which do not conflict with the PWM channels, which opens up the possibility of libraries which achieve their special timing features without disabling the PWM pins, as is common with most Arduino libraries today.
The USB port features dedicated DMA (direct memory access). Teensyduino will provide a USB stack which leverages this feature to allow better USB utilization. There are also 4 other DMA channels which can be used by the other peripherals, to allow fast data transfer without taxing the CPU. Not only is the processor faster and 32 bits, but these higher bandwidth peripherals are much more efficient.
As a stand-alone platform, or together with a laptop or Raspberry Pi (where Teensy 3.0 handles timing critical I/O and analog signals), Teensy 3.0 is intended to enable all sorts of electronic projects, with exceptional ease-of-use, and at a very affordable price.
- 32 bit ARM Cortex-M4 48 MHz CPU (M4 = DSP extensions)
- 128K Flash Memory, 16K RAM, 2K EEPROM
- 14* High Resolution Analog Inputs (13 bits usable, 16 bit hardware)
- 34* Digital I/O Pins (10 shared with analog)
- 10 PWM outputs
- 8 Timers for intervals/delays, separate from PWM
- USB with dedicated DMA memory transfers
- 3 UARTs (serial ports)
- SPI, I2C, I2S, IR modulator
- I2S (for high quality audio interface)
- Real Time Clock (with user-added 32.768 crystal and battery)
- 4 general purpose DMA channels (separate from USB)
- Touch Sensor Inputs
All pins have interrupt capability.
* 14 Digital-only and 10 Analog/Digital pins are accessible around the exterior of Teensy 3.0, and available when used on a breadboard. 10 more Digital-only pins, and 4 more Analog-only pins are accessible at interior and bottom-side pads.
The main chip is Freescale's "Kinetis" K-series PK20DX128VLH5 (first batch) or MK20DX128VLH5 (later batches). Freescale has confirmed the silicon die is unchanged, only a move from low volume to high volume testing is denoted by "PK" to "MK". The number printed on the chip in the photo above differs slightly. Here is Freescale's datasheet for the chip (warning 1227 pages): http://cache.freescale.com/files/32bit/doc/ref_manual/K20P64M50SF0RM.pdf
Teensyduino is about making things easy, so you do not need to read those 1227 pages!! But if you want to dig into these technical details, you certainly can.
A first batch of Teensy 3.0 boards is scheduled for mid-September. A second batch will be completed in October.
After all Kickstarter rewards are shipped, Teensy 3.0 will be available directly from PJRC.
Teensy 3.0 features an off-chip bootloader design. On Teensy 2.0 and all Arduino(R)** brand boards, the bootloader consumes a small portion of the available flash memory. On most boards, the bootloader executes briefly before your own program. By storing the bootloader in a separate chip, your code can use all of the flash memory. Your code can also run immediately after a reset event, without bootloader interference.
Like Teensy 2.0, a high quality (15 ppm) crystal is used for the main clock. Unlike Teensy 2.0, where the clock prescaler can only reduce the speed, Teensy 3.0 has a phase locked loop to increase the clock. The processor is specified to run up to 50 MHz, but the chip is fabricated on the same 90 nm silicon which supports 100 MHz models. Every prototype has been able to overclock to 96 MHz. Teensyduino's Tools > USB Type menu will offer options to try overclocking easily.
Every Teensy 3.0 board will come with a proper ethernet hardware address pre-loaded. The chip contains a small 64 byte "write once" memory. Six of those bytes will be pre-loaded with a valid ethernet number. When Teensy 3.0 is used with any ethernet shield, a properly assigned unique number will be available at no extra cost.
The USB port on Teensy 3.0 is capable of USB host mode. A Micro-AB connector allows future use of USB host mode. Initially, Teensy 3.0 will ship with only USB device support. USB host support, integrated in the Arduino(R)** environment with easy-to-use objects, is planned as a software-only upgrade in 2013. Programming a project using USB host mode will require a second Teensy 3.0 and a board-to-board link using the I2C pins (2 wires and ground), to provide a path for the Arduino IDE to upload code.
Teensy 3.0 has support for a Real Time Clock (RTC). Teensy 3.0 has a space to solder a 32.768 kHz crystal (on the bottom side, or laying across the top of the crystal). Pins on the right side provide a place to connect a 3 volt coin cell. A pair of diodes on Teensy 3.0 allow the RTC to run either with or without the battery backup. Many projects benefit from a proper time keeping clock. On Teensy 3.0, it will be easy to add this with just a couple inexpensive parts.
Teensy 3.0 began well over a year ago, when Paul attended a Freescale workshop introducing their upcoming Kinetis chips. Every major IC manufacturer was introducing new ARM-based microcontrollers, but it was clear this was the one for future Teensy boards!
At the time, only a large BGA-packaged part was available, and only on an early eval board. IAR was the only working toolchain. A decision was made to start from scratch. The first thing built was this programming adaptor:
The Kinetis chips have a programming interface called "EZ Port", which is similar to AVR's ISP programming. This little adaptor, plus custom code (after what seems like forever) was also to read the chip, erase, and write the previous (compiled by IAR) code back again.
Bringing up the gcc+binutils toolchain on a new chip is not simple. It took a very long time to be able to simply blink an LED. Then code for the UARTs and other peripherals followed quickly. A basic USB stack was written, all via EZ port uploads and serial port printing. The DMA-based USB is awesome, but requires a lot more work to manage memory and USB token details with Atmel's AVR-based hardware does automatically.
Developing a bootloader is always difficult, for any chip. Freescale publishes a couple application notes regarding bootloaders. Unlike the AVR, there's no nice hardware mechanism to boot from different code. Instead, to avoid having the bootloader take away valuable space, an overly ambitious plan was started to use another very small chip to hold the bootloader code, and copy it to the Kinetis chip only when needed.
After many false starts, like this ill-fated prototype, the bootloader replaced EZ Port programming. Things were really starting to come together.
Reducing the layout to Teensy form factor turned out to be quite difficult. Ultimately, a 4 layer PCB was needed to route all the traces in such limited space. This board was the first 4 layer prototype:
Freescale had confirmed the 48 pin package would be available in early August. But as the date approached, it was delayed by months! It seemed all hope was lost, or at least delayed by months. Then, in a series of all-night PCB routing sessions, the larger 64 pin chip was able to fit. 12 extra pins became available, and were routed to pads on the bottom side of the board. The result is the board you see at the top of this Kickstarter page, which will be Teensy 3.0.
Now, at the final stages of this project, the hardware is designed, the bootloader is working, and most of the essential functions work. Much testing is still going on. Here is the current test hardware:
Teensy 3.0 will be fully tested on a custom bed-of-nails that touches every pin. The final boards for that fixture are being fabricated now!
Teensy 3.0 has come a very long way over the last year and several months, from merely an ambitious idea to the final prototype, and shortly after this Kickstarter, the first batch of manufactured boards.
Long-Term Project Goals:
With the initial release, Teensyduino will support the normal Arduino functions, digitalWrite, pinMode, analogRead, and so on.
However, there are many libraries for Arduino(R)** which are not designed to be cross-platform. Paul Stoffregen has personally ported dozens of libraries to Teensy 2.0 (and in the process, also Arduino Mega and now Arduino Leonardo). Firmata, Servo, IRremote and OneWire are just a few of the well known Arduino libraries which work across many boards, due to Teensy's porting project. Teensy 3.0 will continue this process, for most major Arduino libraries, and in the process probably pave the way for easy porting to other 32 bit boards, like the upcoming Arduino Due.
Paul has also contributed numerous features and bug fixes to Arduino. Teensy 3.0 will continue this tradition. Here is a list of Arduino contributions to date:
This kickstarter, and continuing sales of Teensy afterwards, keep funding Paul's work on Arduino and low-cost, easy-to-use hardware.
The long term goal is not merely an ARM-based board, but a modern platform that works with the extreme ease-of-use you'd expect from the Arduino environment.
Paul Stoffregen is an electrical engineer with 20 years of professional experience and a life-long passion for crafting overly ambitious ideas into successful projects.
PJRC has over 12 years of experience making and selling development boards for hobbyists, students and engineers. Teensy 1.0 was introduced in late 2008 and was followed by the very successful Teensy 2.0 boards in 2009.
** Teensy 3.0 and 2.0 are not official Arduino-brand products. Paul Stoffregen is a regular contributor to Arduino project, with commit access, but not an official Arduino Team member.
- (12 days)