[Paul Stoffregen], the brains behind the popular and very capable Arduino-compatible Teensy development board, has offered his contribution to the explosion of ARM-powered boards with the Teensy 3.0.
The original Teensy is an AVR-based development board that goes far beyond the official Arduino offerings. The new and improved Teensy 3.0 improves upon an already wonderful platform with a 32 bit ARM Cortex-M4 microcontroller running at 48 MHz. There’s also a lot of pins available for whatever project you have in mind: the Teensy 3.0 supports 14 analog inputs, 10 PWM outputs, a USB host mode, and an I2S audio interface that will be very useful when accessing the microcontroller’s DSP functions.
There are a couple neat features on the Teensy 3.0 [Paul] somehow managed to work in. In addition to supporting a real-time clock, there are also a few extra IO pins in the middle of the board. [Paul] says the extra pins are due to Kinetis not releasing a 48 pin version of the microcontroller in time for production. It may not be what [Paul] originally had in mind, but we’ll take the upgraded board just the same.
Of course the Teensy 3.0 will be compatible with the Teensyduino Arduino IDE add-on, so if you’d like to run your Arduino sketches on a very powerful piece of hardware, this will be the board to use.
31 thoughts on “Meet The Teensy 3.0”
The feature to footprint ratio is impressive. This leaves a lot of room on a breadboard for prototyping.
I’m curious as to why a 2nd chip is needed for a bootloader. Many of the current crop of embedded ARM parts have bootstrap ROMs capable of loading over USB. TI Stellaris parts even have exposed the USB functions used in ROM as an XIP library for user programs.
That sounds wrong to me. I believe it only needs a second chip for USB host mode. For regular operation and code loading, it has a bootloader. Kindly RTFA, I guess.
I did, and nowhere on the Kickstarter page does it mention that the 2nd chip is providing the host functionality. It does state this:
“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. ”
“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.”
From the photos it looks like the other chip is a Nuvoton MINI54TAN, a Cortex-M0 with 16k flash. Presumably this shoves the bootloader into RAM through the EzPort on power-up. This chip must be Paul’s new secret sauce for this iteration of the Teensy.
Also the Kinetis K20 series doesn’t need a second chip to provide USB host, so there’s that.
I meant to configure host mode, but okay.
I just realized that we are talking about totally different things. I misread your post and for whatever reason thought about USB host mode (because it needs a second teensy 3.0).
The second chip is not *needed* for the bootloader, instead it seems to just be a design decision so that the entire area on the CPU can be used for user code.
Sorry for being grumpy.
the second chip is still onboard. People that use these things have a tendency to build large memory intensive projects. This is Paul’s way of giving us a couple extra k of programming space.
I’ve been using his teensy 2.0 and teensy ++ 2.0 boards for a while. They are great! Had to order one of these. It says on the kickstarter page, with regard to moving the bootloader to a separate chip:
“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.”
man these little chips are packing more and more all the time. I certainly like the effective 13 bit ADCs. Big step up from the 10 bit of the Atmegas.
(13 bits usable, 16 bit hardware)
Why are only 13 of the bits usable?
The short answer is noise. Even though the converter’s hardware is 16 bits, there’s enough noise that the low 3 bits are pretty much worthless.
The conversion process is call successive approximation. It works similar to a number guessing game (or binary search), where I’ve picked a number between 1 to 100, so you guess 50, and I confirm it’s higher, so you guess 75, the number is lower, so you guess 62, and so on.
In circuitry, the “guess” is made with a capacitive redistribution DAC. Two equal capacitors are used, one charged up and one discharged. It’s possible to cut the voltage exactly in half by shorting the 2 capacitors together, so the charge distributes equally between then. By switching the capacitors around to create half the voltage. With some tricks, this can implement the guessing. A voltage comparator (or an amplifier) compares the voltages and makes the higher vs lower decision. There’s some approach to nulling the amplifier’s offset voltage which I don’t quite understand.
There are lots of ways noise can creep into this system. Noise at the amplifier is probably the biggest problem. On-chip switching might have slightly capacitive coupling to the capacitors in the DAC, thus changing the voltages a bit. There are probably other error sources? Maybe the thermal noise from the channel resistance in the transistors becomes an issue at some point? I only have a passing familiarity with how these on-chip circuits are designed, so there’s probably a lot of other important details I don’t know.
Each iteration produces 1 more bit, but the voltages become ever smaller. If you’re using the 1.2 volt reference, the 13th bit is represents only 0.146 mV change. The 16th bit represents only a 18 uV change! That’s an incredibly tiny voltage.
There are 16 bit A/D converter chips which really do have low enough noise to measure such tiny voltages. But they’re not on the same die as a 32 bit processor, 128K of flash memory and 16K of ram (both driving long rows to access memory cells) and lots of other digital peripherals. Those amazing analog chips also can have their silicon process optimized for low noise analog. I honestly don’t know what specific things are done, maybe they have a different substrate under the circuitry, different packaging, etc.
There’s many ways to ADC and successive approximation is just one of them: http://en.wikipedia.org/wiki/Analog_to_digital_converter#ADC_types
The problems you mentioned may or may not apply to other types.
That said, you can increase the ADC resolution in software under the assumption that the noise is random and not systematically biased. It’s called oversampling, and each time you double the number of samples in the average, you gain one bit more resolution.
So to get 16 bit resolution of out a 13 bit ADC at 44.1 kHz, you need to sample at 351.8 kHz and average every 8 samples.
IIRC with oversampling the noise actually helps you – some actually introduce noise intentionally. I think it’s called dithering.
hangon..13 effective bit of ADC? Unless my math fails me, that’s 4096 levels.
Paul is a brilliant man, as evidenced by his past products.
apparently, there are 12 pads on the bottom, in addition to the pins. He also mentions that all his prototypes have been able to overclock to 96MHz.
tl;dr, SHUT UP AND TAKE MY MONEY!
Your math failed you. ;)
Yup, as the previous poster stated your math failed you.
2^13 = 8192
I just pledged $30, and if I have the disposable income before the funding period ends, I’m definitely pledging another $30. I had a blast tinkering around with the Teensy 2.0, so I can’t wait to see what the 3.0 can do.
I have bought in total 3 Teensy boards myself, and they are great. So a 3.0 version sounds fantastic.
I was thinking of buying a Teensy 2.0 to make a midifighter clone to my self but now that i see this i dont know if i should wait or not. What you guys think?
Could this be compared in any way to the stellaris launchpad?
I think both boards will have quite the same possibilities (One’s should look at datasheets in details) but what makes Teensy so impressive is the software layer that is really really simple to use, without forbidding to use low-level coding.
I can’t let my Teensy++ 2.0 on a project board as I always use it to test other things in minutes.
idk but my teensy++ is bloody brilliant and it was 23 bucks on adafruit. it plugs into a breadboard and leaves lots of room to play. yeah it is epic.
sorry that was 27 bucks not 23
This is f**king great…10 days left and he already has $30,000 of his $5,000 goal…not quite as impressive as the Digispark sales ($255,408 of $5,000 goal with one day left)…but still not bad at all. I can’t wait to get mine…no, actually…I can’t wait for him to release a Teensy 3.0++. Come to think of it, as long as he is branching out to chips other than AVR, it would be epic if there was a FPGA Teensy! Well, for now I’ll wait happily for the Teensy 3.0; I’m gonna get a heatsink ready for it to…make sure it keeps running at 96mhz for a long time.
You should look at the XuLA from xess.com
Wow. No kidding, that board is a beast. dowant.jpg
Comparison with the Stellaris Launchpad that most of us have pre-ordered several of for $5 a pop?
The Stellaris Launchpad has more powerful hardware and sells for less (at least while the promotional pricing lasts), and uses complex tools intended for professional engineers. The tools probably only work in Windows. At least some of those tools are crippled demo versions of extremely expensive software. There *might* be a demo version that’s “locked” to a single board or some similar restriction, but offers otherwise full functionality, maybe?
Teensy 3.0 costs more and uses a similar but slightly less advanced chip. It’s primary tool is Arduino with Teensyduino extensions. Windows, Mac and Linux are supported. The main design focus is ease of learning and ease of use for hobbyists.
Honestly (I’m the guy behind Teensy 3.0), if you already have the full version of IAR or Keil or similar tools and know how to use then, Teensy isn’t meant for you. Teensy is intended for hobbyists and people who want the easy to use Arduino software.
Thanks Paul for the non-biased explanation. I currently use avrgcc on Mac OS X (I’m not an arduino-head), with an original STK500 and a USBtiny I built, so moving to windows and a new/complex toolchain just for the Stellaris would be a major pain. I guess those Stellaris boards will gather dust for a while :-)
Just got an email from Paul with some happy information:
You can see there’s a place to solder a 14 pin surface mount connector. The processor has lots of I/O pins, and I didn’t want those pins to be unavailable for people and projects than need more signals. There 10 more digital pins, and 2 analog only pins, and 2 power pins on that connector.
Also in the center of the board are analog-only pins A10 and A11, and the analog reference pin. The chip can use either the power supply or its own built-in 1.2 volt reference, which together cover most applications. But if you really need an accurate external reference chip, the AREF pin lets you connect one.
Near the center is a location to solder a 32.768 kHz crystal, for the RTC. The capacitors normally needed are on the chip, so only the crystal needs to be added.
There also a place on the side to solder a 100 uF capacitor. The USB spec says USB devices can have only a maximum of 10 uF capacitance, but USB hosts must have a minimum of 120 uF. The purpose is for USB hot plugging, so the device doesn’t suddenly drag the host’s power down too low while it’s capacitors are charging through the USB cable. Teensy 3.0 has three 3.3 uF capacitors by default. When used in USB host mode, these pads on the bottom side gives you a location to solder more capacitance (if needed because your power source doesn’t have enough or the connecting wires are too long). It’s located very close to the USB connector, for best current delivery to a USB device that plugs in.
I’m really excited about USB host mode. In fact, host mode is one of the main reasons I chose this ARM chip. But I want to be realistic about the time frame for software support. It’s going to take many months for good USB host mode support that’s easy to use. Still, I’m really looking forward to working on easy-to-use USB host.
Fun stuff. Very useful for people who do this type of thing.
I’d just like someone to design and build a “one trick pony” adapter box with a DVI and an RCA input (for SPDIF) on one end and an HDMI output on the other end.
No buttons, switches, LED or any other features needed or wanted. It just needs to convert SPDIF digital audio to HDMI digital audio and put it on the HDMI output. Probably needs a power input so put a mini USB on it for power only.
The DVI video would just go straight through because the companies who designed HDMI wisely and simply adopted the DVI signal standard without change – but for some reason decided the audio had to be different.
There are chips for doing this exact thing, but companies that use them in their products insist on larding them up with other inputs and outputs, buttons, switches, LEDs and more useless frippery and higher prices.
The use of this little black box? For Home Theater PC on the cheap. Plug it in, stuff it behind the HTPC and forget about it.
I think it’d make some profit for a person willing to design it and have it manufactured. Simpler than your Teensy boards!
Well, you’re looking for something entirely different than the Teensy. Something like this, for example?
Please be kind and respectful to help make the comments section excellent. (Comment Policy)