teensy fast tft display supplier
I refer to the TFT, there are some that have a chip dedicated to pixel management, it is generally incorporated into the PCB in addition to the screen"s controller chip itself. The advantage is that you can implement complex graphical environments, which take the burden off the MCU.
These screens are called HMI, there are several that could potentially be used in the teensy 4 or teensy 4.1, however you have to work in the libraries, since almost all of them are focused on AVR or ARM-STM32 or have their own environment programming, which has nothing to do with the arduino IDE.
Other examples are: TFT SmartGPU 2, which implement the graphics controller with a STM32F103 chip, or the 4DSystems Diablo or Picasso graphics chip, Nextion TFT, Stone TFT, etc. They are not cheap TFTs, and I have not seen at the moment any with the resolution you are looking for.
FASTRUN - Functions defined with "FASTRUN" are allocated in the beginning of RAM1. A copy is also stored in Flash and copied to RAM1 at startup. These functions are accessed by the Cortex-M7 ITCM bus, for the fastest possible performance. By default, functions without any memory type defined are treated as FASTRUN. A small amount of memory is typically unused, because the ITCM bus must access a memory region which is a multiple of 32K.
Local Variables - Local variables, and also return addresses from function calls and the saved state from interrupts are placed on a stack which starts from the top of RAM1 and grown downward. The amount of space for local variable is the portion of RAM1 not used by FASTRUN code and the initialized and zeroed variables.
Teensy 4.1 is the most powerful Arduino compatible microcontroller available today. Based on the NXP i.MX RT1062 ARM Cortex-M7 running at 600MHz with the ability to be overclocked. It is formatted into a very compact ‘teensy’ board outline for easy embedding into projects or for use with solderless breadboards. Perhaps best of all, it is compatible with the popular Arduino IDE programming environment as well as many of the existing Arduino libraries, so it is very easy to get up and running unlike many other advanced microcontrollers that are available.
The Teensy 4.1 modules are exactly the same except the NE version is missing the Ethernet PHY chip as shown here. This chip provides the interface between the Ethernet controller built into the NXP microprocessor and the physical Ethernet cable.
Some Teensy 4.1 are now being built without this chip due to on-going PHY chip shortages plus a price increase on the part. If you don’t plan to use wired Ethernet, the NE version is a good option to consider since it is a little less expensive than the standard version and otherwise identical.
The Teensy product line which is focused on being fast , small and Arduino compatible is developed by the company PJRC. They have a loyal following of designers and advanced hobbyists that create many libraries to take advantage of some of the more advanced features of the Teensy products or to modify Arduino libraries for compatibility. Many of them also participate in the excellent PJRC forum. The forum is targeted towards more advanced users and topics.
Just how fast is it? The chart below shows the Teensy 4.x series compared to some other popular boards using the CoreMark Benchmark test. Larger numbers = faster performance.
As another example, the classic Mandelbrot set was calculated and displayed using a Mega 2560 which took between 77 and 105 seconds per image. Calculating the image is very mathematically intensive. The Mega 2560 was then swapped out for the Teensy 4.1 and it took 1.24 to 1.26 seconds for the same task running the same software on both.
The Cortex-M7 is the first ARM microcontroller to use branch prediction. On the M4 as used on the Teensy 3.2, loops and other code which must branch take three clock cycles. With M7, after a loop has executed a few times, the branch prediction removes that overhead, allowing the branch instruction to run in only a single clock cycle.
Teensyduino automatically allocates your Arduino sketch code into ITCM and all non-malloc memory use is allocated to the fast DTCM, unless you add extra keywords to override the optimized default.
Teensy 4.1’s Cortex-M7 processor includes a floating point unit (FPU) which supports both 64 bit “double” and 32 bit “float”. With M4’s FPU on Teensy 3.5 & 3.6, and also Atmel SAMD51 chips, only 32 bit float is hardware accelerated. Any use of double, double functions like log(), sin(), cos() means slow software implemented math. Teensy 4.1 executes all of these with FPU hardware.
If you need/want all the horsepower but don’t necessarily need all the I/O and peripherals found on the Teensy 4.1, the Teensy 4.0 uses the same microcontroller in a smaller physical footprint that is also a little less expensive.
To program the Teensy using the Arduino IDE, you must first have the IDE installed if it is not already. If it is installed but not the current version, now is a good time to update to the latest.
When Teensyduino is running which it should do automatically, a small window is opened on the desktop. This is the Teensy Loader application that handles the actual download to the Teensy board. Most of the time you can ignore this window as it defaults to Auto Mode which means it will take care of automatically downloading to the Teensy without needing to press the Teensy Program button, but it does need to be running in order to download to the Teensy boards.
If the setup is correct, the software will compile and download to the Teensy. The onboard LED should start blinking once per second. Since the board will already have Blink installed when you receive it, you might want to change the timing of the blink to verify the new download was successful.
The Teensy 4.1 operates at 3.3V internally and expects I/O to not exceed 3.3V. It is not 5V tolerant on any of its pins except for the VIN and VSUB pins which can be used to supply 5V power to the module.
The Teensy 4.1 can be powered one of 3 different ways, but it is important to note that these are mutually exclusive unlike typical Arduino boards. Internally the module does not provide any power switching between the different power inputs. In essence, if you hook up two different power inputs such as through the USB cable and also through the VIN pin, those two power sources will be shorted together.
External power of 3.3V can also be applied to the 3.3V pins to power the Teensy in some cases, but this bypasses the on-board regulator which properly handles the power up sequence. This option is not recommended without doing some research. Specifically, VBAT needs a 3V power source such as a coin cell before applying power to the 3.3V pins.
The most likely way to run into trouble with power is by having the Teensy normally powered through VIN and then deciding to hookup the USB cable to download new code without disconnecting VIN first.
The USB port on the Teensy 4.1 has significant functionality not available on a normal Arduino. For most standard applications it should be set to the default “Serial” mode which is how it works with an Arduino. If you have problems connecting to the Teensy, check this setting.
The button on a Teensy board is not a typical reset button like on an Arduino. When pressed, the program button causes the Teensy to enter ‘Programming Mode” where it waits for a download over USB. If the Teensy is connected to the IDE via a USB cable, the last program will automatically be downloaded again and ran.
You didn’t select the Teensy 4.1 because it has a slow CPU, so naturally you are going to notice the CPU speed selection available in the IDE while poking around.
There are two 8-pin SMD footprints on the bottom of the module under the SD card slot. The user can add chips to these locations to enhance the functionality or they can buy our preassembled and tested Teensy 4.1 Fully Loaded products near the bottom of the page.
These chips come in the WSON package that have the leads tucked under the body and require decent soldering skills to solder on well. The Teensy 4.1 Fully Loaded product at the bottom of the page has these parts already installed.
These chips come in the WSON package that have the leads tucked under the body and require decent soldering skills to solder on well. The Teensy 4.1 Fully Loaded product at the bottom of the page has these parts already installed.
Parts are available for adding a physical Ethernet port to the Teensy 4.1. This is available as either a kit that requires some soldering or as a fully assembled board.
One of the 2×3 male headers in the kit is soldered to the Teensy 4.1 in the location as shown to the right for connecting the ribbon cable. This part is a little trickier to solder due to tight spacing of small components on the bottom of the board.
Due to the strong processing power available in the Teensy products, they are a popular target for audio projects whether it is playing multiple WAV files simultaneously, synthesizing music or building sound reactive projects. The Audio Adapter 4.x (Rev D) is designed for the Teensy 4.x product line and supports high quality 16-bit 44.1kHz sample rate (CD quality) audio.
For anyone that wants to attach probes, logic analyzers or jumpers directly to the Teensy 4.1, we have these high quality extended tail gold headers in 1×40 strips.
If the Teensy 4.1 sounds great but the soldering of SMD chips sounds less great, we have the Teensy 4.1 Fully Loaded. It has either 8MB PSRAM & 16MB/64M-bit Flash memory, 8MB PSRAM & 128MB/1G-bit NAND Flash, 8MB PSRAM & 256MB/2G-bit NAND Flash or 16MB/128M-bit PSRAM chips installed and fully tested. It also has the pins soldered on and has the header for the optional Ethernet added as well.
If you are looking for Teensy 4.1s that are configured to work with our Prototyping System for Teensy 4.1 or another baseboard that brings the VUSB, Ethernet, USB Host and VBat headers down from the bottom of the Teensy as well as having the VUSB trace cut and diode added to isolate USB and VIN power we have those as well. Please note that these will not plug into a solderless breadboard due to the additional headers on the bottom of the module.
You can find the link to the full Teensy 4.1 Fully Loaded for Prototyping System information at the bottom of this page or by clicking on the pic above.
The Teensy line of boards are an excellent product that provides high performance and advanced I/O to tackle even the hardest problems which is why they are often found in advanced hobbyist projects as well as low volume production builds.
The PJRC forum provides access to excellent technical advice that is far more advanced than found on the normal Arduino forums. It is the best place to find information on how to use the advanced features found in the Teensy. It is not the place to get basic Arduino type questions answered however, which is good as the forum is not cluttered with ‘how do I blink an LED?’ type questions.
The Teensy 4.1 is currently at the top of the heap for performance and I/O capability. You do need to take care of properly applying power and keeping I/O limited to 3.3V to avoid possible damage to the module. If you are brand new to Arduino and programming, you might consider getting your feet wet with a standard Arduino clone board or consider the 5V tolerant Teensy boards like the Teensy 3.2 and Teensy 3.5 which are a little more fool-proof.
There are some other Teensy products that may be better suited depending on the application. The Teensy 4.0 has the same CPU and basic performance, but in a smaller physical package with less I/O, 2MB of FLASH and is less expensive. The Teensy 3.5 has a similar I/O footprint as the Teensy 4.1 and provides 5V tolerant I/O and it runs at 120MHz which is still way faster than the typical Arduino board. The Teensy 3.2 is a mature product with the largest installed base and is in a small package format with 5V tolerant I/O and runs at 72MHz.
This 2.8″ TFT LCD is a full color display with a resolution of 240 x 320 pixels or 320 x 240 pixels depending on how it is oriented. It uses the ILI9341 controller with SPI interface. It also includes a resistive touchscreen with built-in XPT2046 controller.
These full color displays are large enough for many applications even when using touch. The supplied stylus is helpful when using smaller touch targets.
Internally the display operates at 3.3V, so if using with a 5V microcontroller, be sure to include logic level shifters on the data lines to prevent possible damage.
In general, it is best to operate the display off of 5V to ensure enough power is available. Be careful of trying to operate the display from the built-in 3.3V available on Arduino and similar microcontrollers since these power sources often have limited current capability and may overheat.
These modules are breadboard friendly with a 14-pin header on the back that can be inserted into a solderless breadboard or a 14-pin female connector can be used to connect to it if the display is to be mounted. The display is mounted on a stiff PCB that provides good support, but be sure to press on the header pins or PCB when applying pressure to insert them into a breadboard and not press on the glass to avoid possible damage.
Though these displays can seem to be a bit intimidating to use at first, just follow these steps to get up and running fairly easily. The pin labeling is on the back only, so we have pictures with the pins labeled on both the front and back to make life a little easier.
Because of the 3.3V I/O requirement, I am using a Teensy 4.1 for easier hookup but any 3.3V MCU can be used. If using an Uno or other 5V MCU, be sure to include
I’m also using the Teensy 4.1 because it is currently the fastest Arduino compatible board (600MHz 32-bit vs Uno 16MHz 16-bit) and this example application of calculating Mandelbrot fractals and updating the LCD can take a long time on an Uno (77-105 seconds) and only takes about 1.25 seconds on the Teensy 4.1. If using a 3.3V Arduino like a Due, hookup will basically be the same.
Connect the SPI and control lines for the display. In our example we are using hardware SPI as it gives the best performance. The SPI pin location will depend on the MCU you are using.
If you just want to check the display functionality and speed, the ‘graphicstest’ example program installed as part of the Adafruit_ILI9341 library is a good one to run.
The program below is a modified version of the Mandelbrot example program that gets installed with the Adafruit_ILI9341 library. It was pruned down in size and basic touch added. The program just calculates the Mandelbrot set and draws it to the screen pixel-by-pixel as it is calculated. The math is fairly intense for each pixel, so it is a good judge of the power of the MCU. The display update speed is thus limited by the MCU that is doing the calculations and is not limited by the display itself.
In this article, you will learn how to use TFT LCDs by Arduino boards. From basic commands to professional designs and technics are all explained here.
In electronic’s projects, creating an interface between user and system is very important. This interface could be created by displaying useful data, a menu, and ease of access. A beautiful design is also very important.
There are several components to achieve this. LEDs, 7-segments, Character and Graphic displays, and full-color TFT LCDs. The right component for your projects depends on the amount of data to be displayed, type of user interaction, and processor capacity.
TFT LCD is a variant of a liquid-crystal display (LCD) that uses thin-film-transistor (TFT) technology to improve image qualities such as addressability and contrast. A TFT LCD is an active matrix LCD, in contrast to passive matrix LCDs or simple, direct-driven LCDs with a few segments.
In Arduino-based projects, the processor frequency is low. So it is not possible to display complex, high definition images and high-speed motions. Therefore, full-color TFT LCDs can only be used to display simple data and commands.
In this article, we have used libraries and advanced technics to display data, charts, menu, etc. with a professional design. This can move your project presentation to a higher level.
In electronic’s projects, creating an interface between user and system is very important. This interface could be created by displaying useful data, a menu, and ease of access. A beautiful design is also very important.
There are several components to achieve this. LEDs, 7-segments, Character and Graphic displays, and full-color TFT LCDs. The right component for your projects depends on the amount of data to be displayed, type of user interaction, and processor capacity.
TFT LCD is a variant of a liquid-crystal display (LCD) that uses thin-film-transistor (TFT) technology to improve image qualities such as addressability and contrast. A TFT LCD is an active matrix LCD, in contrast to passive matrix LCDs or simple, direct-driven LCDs with a few segments.
In Arduino-based projects, the processor frequency is low. So it is not possible to display complex, high definition images and high-speed motions. Therefore, full-color TFT LCDs can only be used to display simple data and commands.
In this article, we have used libraries and advanced technics to display data, charts, menu, etc. with a professional design. This can move your project presentation to a higher level.
Size of displays affects your project parameters. Bigger Display is not always better. if you want to display high-resolution images and signs, you should choose a big size display with higher resolution. But it decreases the speed of your processing, needs more space and also needs more current to run.
After choosing the right display, It’s time to choose the right controller. If you want to display characters, tests, numbers and static images and the speed of display is not important, the Atmega328 Arduino boards (such as Arduino UNO) are a proper choice. If the size of your code is big, The UNO board may not be enough. You can use Arduino Mega2560 instead. And if you want to show high resolution images and motions with high speed, you should use the ARM core Arduino boards such as Arduino DUE.
In electronics/computer hardware a display driver is usually a semiconductor integrated circuit (but may alternatively comprise a state machine made of discrete logic and other components) which provides an interface function between a microprocessor, microcontroller, ASIC or general-purpose peripheral interface and a particular type of display device, e.g. LCD, LED, OLED, ePaper, CRT, Vacuum fluorescent or Nixie.
The display driver will typically accept commands and data using an industry-standard general-purpose serial or parallel interface, such as TTL, CMOS, RS232, SPI, I2C, etc. and generate signals with suitable voltage, current, timing and demultiplexing to make the display show the desired text or image.
The LCDs manufacturers use different drivers in their products. Some of them are more popular and some of them are very unknown. To run your display easily, you should use Arduino LCDs libraries and add them to your code. Otherwise running the display may be very difficult. There are many free libraries you can find on the internet but the important point about the libraries is their compatibility with the LCD’s driver. The driver of your LCD must be known by your library. In this article, we use the Adafruit GFX library and MCUFRIEND KBV library and example codes. You can download them from the following links.
By these two functions, You can find out the resolution of the display. Just add them to the code and put the outputs in a uint16_t variable. Then read it from the Serial port by Serial.println(); . First add Serial.begin(9600); in setup().
Upload your image and download the converted file that the UTFT libraries can process. Now copy the hex code to Arduino IDE. x and y are locations of the image. sx and sy are size of the image.
In this template, We converted a .jpg image to .c file and added to the code, wrote a string and used the fade code to display. Then we used scroll code to move the screen left. Download the .h file and add it to the folder of the Arduino sketch.
In this template, We used sin(); and cos(); functions to draw Arcs with our desired thickness and displayed number by text printing function. Then we converted an image to hex code and added them to the code and displayed the image by bitmap function. Then we used draw lines function to change the style of the image. Download the .h file and add it to the folder of the Arduino sketch.
In this template, We created a function which accepts numbers as input and displays them as a pie chart. We just use draw arc and filled circle functions.
while (a < b) { Serial.println(a); j = 80 * (sin(PI * a / 2000)); i = 80 * (cos(PI * a / 2000)); j2 = 50 * (sin(PI * a / 2000)); i2 = 50 * (cos(PI * a / 2000)); tft.drawLine(i2 + 235, j2 + 169, i + 235, j + 169, tft.color565(0, 255, 255)); tft.fillRect(200, 153, 75, 33, 0x0000); tft.setTextSize(3); tft.setTextColor(0xffff); if ((a/20)>99)
while (b < a) { j = 80 * (sin(PI * a / 2000)); i = 80 * (cos(PI * a / 2000)); j2 = 50 * (sin(PI * a / 2000)); i2 = 50 * (cos(PI * a / 2000)); tft.drawLine(i2 + 235, j2 + 169, i + 235, j + 169, tft.color565(0, 0, 0)); tft.fillRect(200, 153, 75, 33, 0x0000); tft.setTextSize(3); tft.setTextColor(0xffff); if ((a/20)>99)
In this template, We display simple images one after each other very fast by bitmap function. So you can make your animation by this trick. Download the .h file and add it to folder of the Arduino sketch.
In this template, We just display some images by RGBbitmap and bitmap functions. Just make a code for touchscreen and use this template. Download the .h file and add it to folder of the Arduino sketch.
The speed of playing all the GIF files are edited and we made them faster or slower for better understanding. The speed of motions depends on the speed of your processor or type of code or size and thickness of elements in the code.
PJRC is the manufacturer of Teensy, which is a high-powered alternative to Arduino. It’s compact, adaptable, and offers fantastic value for money. The Teensy works well with sensors which output large amounts of data with a fast refresh rate. It’s also relatively easy to get the Teensy to work with touch-screens, mice, and keyboards, which makes getting input into the chip straightforward. Moreover, the chip allows DMA (Direct Memory Access) for speeding up processing time by algorithms that require fast processing (Led strips, Screens, Audio and Movement/Orientation).
The uLCD-24PTU-AR is an Arduino Display Module Pack, which includes a uLCD-28PTU 2.8" LCD Display with Resistive Touch, a 4D Arduino Adaptor Shield and 5 way interface cable.
The uLCD-28PTU-AR customises the uLCD-24PTU Display specifically for interfacing with the Arduino, to provide a quick and easy interface without any wiring hassles.
The Arduino Display Module Pack enables an Arduino user to quickly connect the 4D Arduino Adaptor Shield to their Arduino, connect the 5 way cable between the Adaptor and the Display Module, and be connected in seconds to start programming their new 4D Systems Display.
The uLCD-28PTU-AR has a comprehensive range of serial commands ready to be received from the Arduino, to draw primitives such as lines, rectangles, circles and text, displaying images, playing sound and logging data to uSD card.
The Teensy 4.0 and 4.1 are very compact boards developed by Paul Stoffregen, based on the NXP iMXRT1062 ARM M7 processor running at 600 MHz and with 1 Mbytes of RAM.
These are now the fastest boards for running uLisp. In addition, for speed-critical tasks you can incorporate functions written in ARM machine code using the ARM assembler written in Lisp; see ARM assembler overview.
Support for the Teensy boards requires more customization than is currently available from the Arduino"s Boards Manager, so Paul decided to provide a Teensyduino installer that upgrades your copy of the Arduino IDE to provide the necessary Teensy support. The main upgrades affect the Serial Monitor, to support the many non-Serial protocols the Teensy boards support in the USB Type submenu on the Tools menu, and to optimise its performance to allow sustained high transmission rates without the Arduino IDE locking up.
For Mac OS 10.10 onwards PJRC provides a complete version of the Arduino IDE (currently 1.8.12) with the Teensy support already added, so no patching is necessary. You can use this to work with Teensy boards, as well as continuing to use it instead of the original Arduino application with your other boards.
Both boards have many other features not currently supported by uLisp, including: an Ethernet interface (Teensy 4.1 only), a USB host interface allowing you to connect a USB keyboard, three CAN Bus ports, an I2S Digital Audio interface, an S/PDIF Digital Audio interface, cryptographic acceleration, a random number generator, and an RTC for date/time.
A while ago, I noticed an article on Hackaday about how Paul Stoffregen (and crew) had optimized the Adafruit GFX SPI LCD driver for the Teensy 3.1 to achieve "warp speed" (see TFT LCDS HIT WARP SPEED WITH TEENSY 3.1). It was a nice demonstration of using advanced features of the 32-bit Teensy 3.1 micro-controller (along with code optimization). They used things like hardware /CS control and a hardware SPI FIFO to really speed things up from the generic Arduino API version (even when recompiled for the faster Teensy 3.1). Previously I had purchased an Adafruit SPI LCD breakout board that used this same controller and found it to be disappointingly slow (my AVR LCD gaming dreams were mostly dashed, and I didn"t do much with it). At the time I just chalked it up to the fact that 8-bit AVR just wasn"t up to the task of LCD graphics (especially over a slow-ish SPI bus). After seeing the impressive gain that the Teensy 3.1 was able to get, I decided it would be interesting to see if I could perhaps significantly speed up the library for Arduino AVR users without any "fancy 32-bit hardware". [Even though I have a Teensy 3.1 and they are great, I like an optimization challenge. :-) ]
In the "before" logic analyzer capture picture, you can see part of a "drawPixel" command being sent from the AVR 328P to the LCD controller over the SPI bus. In case you aren"t familiar with SPI or logic analyzer captures, the important thing to notice here is "channel-3". This is the SPI clock signal (called SCK). It goes high and then low once for every bit transfered over the SPI bus. The Adafruit library normally uses the AVR hardware SPI channel, as it is in this case (it can also "bit-bang" SPI, but that is much slower). They "crank up" the SPI speed to the maximum supported by a 16MHz AVR, which is 8MHz (this means one bit can be transferred every two AVR clock cycles). So the "blue chunks" on channel-3 represent 8-bits getting sent over the SPI bus (or one byte). Now, this is the "fastest" speed that the AVR can possibly send data over SPI (I believe the LCD SPI controller can go a maximum of ~25MHz and some micro-controllers and devices support 100MHz SPI or more, for comparison). However, while the bytes are clocked out at the maximum (fixed) speed, you can see there is a lot of "dead time" between each byte that could in theory be used to speed things up. Another thing I noticed is that the Adafruit library toggles the /CS signal on channel-0 almost every single byte sent. The /CS signal is "chip-select", when it is low the LCD will listen to the SPI bus (that "/" means active-low signal), when it is high it will ignore the bus so it can be shared with another device). Since we are going to be sending a whole bunch of commands all to the LCD, it seemed to me we can just pull /CS low once, do a bunch of commands (until we are going to return to the calling sketch) and then restore /CS back to high once (in case the SPI bus will be used to talk to another device, like the SD card that is on many of these LCD modules).
Fast and compact software I2C implementations (SimpleWireInterface, SimpleWireFastInterface) on Arduino platforms. Also provides adapter classes to allow the use of third party I2C libraries using the same API.
Fully Asynchronous UDP Library for Teensy 4.1 using QNEthernet. The library is easy to use and includes support for Unicast, Broadcast and Multicast environments.
Simple Ethernet Manager for MultiBlynk for Teensy, SAM DUE, SAMD21, SAMD51, nRF52, ESP32, ESP8266, RP2040-based (Nano_RP2040_Connect, RASPBERRY_PI_PICO) boards, etc. with or without SSL, configuration data saved in ESP8266/ESP32 LittleFS, SPIFFS, nRF52/RP2040 LittleFS/InternalFS, EEPROM, DueFlashStorage or SAMD FlashStorage.
Simple WiFiManager for Blynk with MultiWiFi Credentials, for Mega, SAM DUE, SAMD21, SAMD51, nRF52, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based RASPBERRY_PI_PICO, etc. boards running ESP8266/ESP32-AT shields. Configuration data saved in EEPROM, EEPROM-emulated FlashStorage_STM32 or FlashStorage_SAMD, SAM-DUE DueFlashStorage or nRF52/TP2040 LittleFS.
Simple WiFiManager for Blynk and Mega, UNO WiFi Rev2, Teensy, SAM DUE, SAMD21, SAMD51, STM32, nRF52, RP2040-based boards, etc. using WiFiNINA shields, configuration data saved in EEPROM, FlashStorage_SAMD, FlashStorage_STM32, DueFlashStorage, nRF52/RP2040 LittleFS
DDNS Update Client Library for SAM DUE, nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, AVR Mega, megaAVR, Teensy, RP2040-based RASPBERRY_PI_PICO, WT32_ETH01, Portenta_H7, etc. besides ESP8266/ESP32, using ESP8266-AT/ESP32-AT WiFi, WiFiNINA, Ethernet W5x00, ENC28J60, LAN8742A or Teensy NativeEthernet
Library to detect a double reset, using EEPROM, DueFlashStorage, FlashStorage_SAMD, FlashStorage_RTL8720, FlashStorage_STM32 or LittleFS/InternalFS. For AVR, Teensy, SAM DUE, SAMD, STM32F/L/H/G/WB/MP1, nRF52, RP2040-based Nano_RP2040_Connect, RASPBERRY_PI_PICO, RTL8720DN, MBED nRF52840-based Nano_33_BLE, Portenta_H7, etc. boards. Now using efficient FlashStorage_STM32 library and supporting new RP2040-based Nano_RP2040_Connect, Portenta_H7, RASPBERRY_PI_PICO and STM32 core v2.0.0
Simple WebServer library for AVR, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52, SIPEED_MAIX_DUINO and RP2040-based (RASPBERRY_PI_PICO) boards using ESP8266/ESP32 AT-command shields with functions similar to those of ESP8266/ESP32 WebServer libraries
An ESP8266/ESP32-AT library for Arduino providing an easy-to-use way to control ESP8266-AT/ESP32-AT WiFi shields using AT-commands. For AVR, Teensy, SAM DUE, SAMD21, SAMD51, STM32, nRF52, SIPEED_MAIX_DUINO and RP2040-based (Nano_RP2040_Connect, RASPBERRY_PI_PICO, etc.) boards using ESP8266/ESP32 AT-command shields.
Simple Ethernet WebServer, HTTP Client and WebSocket Client library for AVR, AVR Dx, Portenta_H7, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52 and RASPBERRY_PI_PICO boards using Ethernet shields W5100, W5200, W5500, ENC28J60 or Teensy 4.1 NativeEthernet/QNEthernet
Simple TLS/SSL Ethernet WebServer, HTTP Client and WebSocket Client library for for AVR, Portenta_H7, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52 and RASPBERRY_PI_PICO boards using Ethernet shields W5100, W5200, W5500, ENC28J60 or Teensy 4.1 NativeEthernet/QNEthernet. It now supports Ethernet TLS/SSL Client.
Simple Ethernet library for AVR, AVR Dx, Portenta_H7, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52 and RASPBERRY_PI_PICO boards using Ethernet shields W5100, W5200, W5500, W5100S
Simple Ethernet Manager for Teensy, SAM DUE, SAMD, nRF52, ESP32 (including ESP32-S2/C3), ESP8266, RP2040-based Nano_RP2040_Connect, RASPBERRY_PI_PICO, etc. boards. Config data saved in ESP LittleFS, SPIFFS or EEPROM, nRF52 LittleFS, EEPROM, DueFlashStorage or SAMD FlashStorage.
A library for implementing fixed-point in-place Fast Fourier Transform on Arduino. It sacrifices precision and instead it is way faster than floating-point implementations.
FTP Client for Generic boards such as AVR Mega, megaAVR, Portenta_H7, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52, RP2040-based (Nano-RP2040-Connect, RASPBERRY_PI_PICO, ESP32/ESP8266, etc.)
Enables GSM/GRPS network connection using the Generic GSM shields/modules. Supporting ESP32 (including ESP32-S2, ESP32-C3), ESP8266, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52, RP2040-based boards, etc.
LiquidCrystal fork for displays based on HD44780. Uses the IOAbstraction library to work with i2c, PCF8574, MCP23017, Shift registers, Arduino pins and ports interchangably.
Library to detect a multi reset, using EEPROM, DueFlashStorage, FlashStorage_SAMD, FlashStorage_RTL8720, FlashStorage_STM32 or LittleFS/InternalFS. For AVR, Teensy, SAM DUE, SAMD, STM32F/L/H/G/WB/MP1, nRF52, RP2040-based Nano_RP2040_Connect, RASPBERRY_PI_PICO, RTL8720DN, MBED nRF52840-based Nano_33_BLE, Portenta_H7, etc. boards. Now using efficient FlashStorage_STM32 library and supporting new RP2040-based Nano_RP2040_Connect, RASPBERRY_PI_PICO and STM32 core v2.0.0
Connects to MySQL or MariaDB using ESP8266/ESP32, WT32_ETH01 (ESP32 + LAN8720A), nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, SAM DUE, Mega, RP2040-based boards, Portenta_H7, etc. with W5x00, ENC28J60 Ethernet, Teensy 4.1 NativeEthernet/QNEthernet, WiFiNINA modules/shields or Portenta_H7 WiFi/Ethernet. W5x00 can use Ethernet_Generic library. ENC28J60 can use either EthernetENC or UIPEthernet Library.
The most powerful and popular available library for using 7/14/16 segment display, supporting daisy chaining so you can control mass amounts from your Arduino!
Menu library for Arduino with IoT capabilities that supports many input and display devices with a designer UI, code generator, CLI, and strong remote control capability.
This library enables you to use Hardware-based PWM channels on Teensy boards, such as Teensy 2.x, Teensy LC, Teensy 3.x, Teensy 4.x, Teensy MicroMod, etc., to create and output PWM to pins. Using the same functions as other FastPWM libraries to enable you to port PWM code easily between platforms.
This library enables you to use ISR-based PWM channels on Teensy boards, such as Teensy 2.x, Teensy LC, Teensy 3.x, Teensy 4.x, Teensy MicroMod, etc., to create and output PWM any GPIO pin.
This library enables you to use Interrupt from Hardware Timers on an Arduino, Adafruit or Sparkfun AVR board, such as Nano, UNO, Mega, Leonardo, YUN, Teensy, Feather_32u4, Feather_328P, Pro Micro, etc.
This library enables you to use Interrupt from Hardware Timers on supported Arduino boards such as AVR, Mega-AVR, ESP8266, ESP32, SAMD, SAM DUE, nRF52, STM32F/L/H/G/WB/MP1, Teensy, Nano-33-BLE, RP2040-based boards, etc.
A simple library to display numbers, text and animation on 4 and 6 digit 7-segment TM1637 based display modules. Offers non-blocking animations and scrolling!
Monochrome LCD, OLED and eInk Library. Display controller: SSD1305, SSD1306, SSD1309, SSD1312, SSD1316, SSD1318, SSD1320, SSD1322, SSD1325, SSD1327, SSD1329, SSD1606, SSD1607, SH1106, SH1107, SH1108, SH1122, T6963, RA8835, LC7981, PCD8544, PCF8812, HX1230, UC1601, UC1604, UC1608, UC1610, UC1611, UC1617, UC1638, UC1701, ST7511, ST7528, ST7565, ST7567, ST7571, ST7586, ST7588, ST75160, ST75256, ST75320, NT7534, ST7920, IST3020, IST3088, IST7920, LD7032, KS0108, KS0713, HD44102, T7932, SED1520, SBN1661, IL3820, MAX7219, GP1287, GP1247, GU800. Interfaces: I2C, SPI, Parallel.
True color TFT and OLED library, Up to 18 Bit color depth. Supported display controller: ST7735, ILI9163, ILI9325, ILI9341, ILI9486,LD50T6160, PCF8833, SEPS225, SSD1331, SSD1351, HX8352C.
RFC6455-based WebSockets Server and Client for Arduino boards, such as nRF52, Portenta_H7, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, Teensy, SAM DUE, RP2040-based boards, besides ESP8266/ESP32 (ESP32, ESP32_S2, ESP32_S3 and ESP32_C3) and WT32_ETH01. Ethernet shields W5100, W5200, W5500, ENC28J60, Teensy 4.1 NativeEthernet/QNEthernet or Portenta_H7 WiFi/Ethernet. Supporting websocket only mode for Socket.IO. Ethernet_Generic library is used as default for W5x00. Now supporting RP2040W
Light-Weight MultiWiFi/Credentials Manager for Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52, RTL8720, etc. boards running Generic WiFi (WiFiNINA, WiFi101, ESP8266-AT, ESP32-AT, etc.) modules/shields. Powerful-yet-simple-to-use feature to enable adding dynamic custom parameters.
Light-Weight MultiWiFi/Credentials Manager for AVR Mega, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52, RP2040-based (Nano RP2040 Connect, RASPBERRY_PI_PICO) boards, etc. using u-blox WiFiNINA / WiFi101 modules/shields. Powerful-yet-simple-to-use feature to enable adding dynamic custom parameters.
Enables network connection (local and Internet) and WiFiStorage for SAM DUE, SAMD21, SAMD51, Teensy, AVR (328P, 32u4, 16u4, etc.), Mega, STM32F/L/H/G/WB/MP1, nRF52, NINA_B302_ublox, NINA_B112_ublox, RP2040-based boards, etc. in addition to Arduino MKR WiFi 1010, Arduino MKR VIDOR 4000, Arduino UNO WiFi Rev.2, Nano 33 IoT, Nano RP2040 Connect. Now with fix of severe limitation to permit sending much larger data than total 4K and using new WiFi101_Generic library
Simple WiFiWebServer, HTTP Client and WebSocket Client library for AVR Mega, megaAVR, Portenta_H7, Teensy, SAM DUE, SAMD21, SAMD51, STM32F/L/H/G/WB/MP1, nRF52, RP2040-based (Nano-RP2040-Connect, RASPBERRY_PI_PICO, RASPBERRY_PI_PICO_W, ESP32/ESP8266, etc.) boards using WiFi, such as WiFiNINA, WiFi101, CYW43439, U-Blox W101, W102, ESP8266/ESP32-AT modules/shields, with functions similar to those of ESP8266/ESP32 WebServer libraries.
Nuts & Volts reader and Stanford Engineering Professor, Greg Kovacs contacted me and took exception to the cost and age of the Arduino Due used in that article. He challenged me to see if the AGI concept and software library could be ported to the newer and faster TEENSY 3.6 processor. This article describes the new and improved TEENSY Graphics Interface project that implements a fully operational “CRT clock” as a working demonstration of a TEENSY based graphics platform.
Before the advent of LCD screens for computers and televisions, we lived on a steady diet of cathode ray tubes (CRT) for viewing video and computer graphics images. While CRT televisions form pictures by raster scanning the screen, the earliest computer graphics displays simply “painted data,” point by point, driving an electron beam in a simple XY fashion all about the face of a phosphor coated screen. Wherever the beam was positioned, a dot of light would be seen. Such display systems were basically up-sized oscilloscopes that enabled computers to plot drawings and graphics for scientific, engineering, architectural, and other early line-draw applications. This project shows how a $30 Arduino TEENSY computer board plus a simple and low cost interface circuit can be connected to a CRT based analog oscilloscope to reproduce the guts and performance of a computer graphics terminal such as the ‘70s era Tektronix 4010 (Figure 1). While TGI has many possible applications, the demonstration code developed here includes a working CRT clock as an example of this “retro-technology” in action.
The block diagram of the TEENSY Graphics Interface (TGI) is shown in Figure 2. It’s based on the TEENSY 3.6 CPU board, designed and sold by Paul Stoffregen (see
In addition to high speed operation, the Cortex 32-bit CPU within the TEENSY also contains a pair of 12-bit digital-to-analog converters (DACs). We use these two DACs to make voltages to drive the electron beam of an analog oscilloscope in X and Y directions. For this project, the internal oscilloscope time base that usually drives the X axis is not used. Instead, all information for deflecting the CRT beam comes directly from the TEENSY DACs and a simple TGI board.
Each DAC on board the TEENSY computer is internally connected to the CPU through an unsigned 12-bit-integer data register. When this data register is loaded with the integer 0, the DAC outputs a voltage near zero VDC. When the DAC register is loaded with the integer number 4095, the DAC outputs 1.5 VDC.
As with all CRT displays, the light emitted from a displayed point fades quickly once the beam moves on to a new location. To keep the display visible and flicker-free to the observer, it’s necessary to continuously repaint (a.k.a., refresh) all the points to the screen (step 3) at least 50 times per second.
While the TEENSY also features a DMA controller, I found I could leverage the higher CPU speed of the TEENSY to simplify both the hardware and software. The TGI design presented here uses simple programmed I/O (PIO) instructions to transfer data from the XY_List[ ] array to the DACs. A single PIO bit is then used to drive the Z axis UNBLANK signal.
With this scheme, synchronizing the two DACs to the UNBLANKING pulse is all accomplished in software rather than hardware. I was happy to find that with the TEENSY, this simplified approach proved to be very fast and worked extremely well!
By using PIO methods, the TEENSY Graphics Interface circuitry has been reduced to just one dual op-amp and one TTL inverter. However, since the hardware has been simplified, a greater burden is placed on the CPU. In fact, the CPU must programmatically push the entire XY_List[ ] array out to the DACs during every screen refresh cycle. This would kill a lessor processor, but with the TEENSY running full-out at 240 MHz, operations remain fast and responsive. With its speed, more than enough CPU horsepower remains to run the CRT clock app or even much more complex programs.
Figure 7shows the detailed schematic for the Z axis driver. Just a couple of inverters are used to provide level conversion (3.3V to 5V) and buffer the TEENSY from the outside world. Although most scopes use POSITIVE UNBLANK LOGIC (logic 1=UNBLANK), both logic options are provided by the TGI ‘just in case.’ Simply pick the correct polarity jumper setting for your scope.
Note: If your scope lacks a Z input, the TGI will still work, but the display will not be as crisp since you’ll be seeing all the point-to-point transition lines.
My efforts to try some inexpensive switching power supply modules to convert the +5 VDC into a ±12 VDC supply for the op-amps failed miserably as the resulting scope display was fuzzy and jumpy. In a word, the image quality was TERRIBLE! The 50-100 mV of high-frequency switching noise present on the low-cost ±12V inverter outputs was enough to wreak havoc on the display. Only clean linear supplies yield good display quality. See the BUILD documents available with the downloads for a few power supply sources and approaches that I found worked well.
3.3V Battery: The TGI PCB includes a holder for a CR2032 lithium battery. This battery connects directly to the TEENSY and provides backup power that keeps the onboard real time clock (RTC) ticking when CPU power is off. This is a key requirement for any digital clock (think of your VCR endlessly flashing 12:00!).
Diode D1 Notes: Diode D1 provides important power protection between the TGI and your PC. There are two installation options for D1 depending on how you power the TGI/TEENSY CPU combination. Most likely, you will be using the “forward” orientation, but please read through the BUILD documentation to choose the correct orientation for your power supply plan.
By installing female socket strips into the TGI board and male pins into the TEENSY 3.6, the CPU can plug into the TGI PCB creating a nice and compact package. If you install “long male pins” (~20 mm overall pin length) into the CPU board, top-side access to all the TEENSY I/O ports is retained for connections to other circuits or shields in your project.
Just like any other Arduino project, the TGI system is programmed using the Arduino IDE 1.8.5 or later. You’ll need to download and install the Arduino IDE as well as the TEENSY support programs and libraries. Once you have the TEENSY support programs installed, you simply select the processor type, port, and CPU clock speed (Figure 11).
One of the nice things about the TEENSY is that many CPU clock speeds can be selected. For this project, faster is better, so I recommend running at the 240 MHz overclock setting.
If this is your first Arduino TEENSY project, I suggest you start out with some basic “hello world” and “blinking LED” test programs to get the IDE set up, compiling, and properly connected to your TEENSY. Once you have the IDE operational and have completed the TGI build and preliminary checkout, you’ll be ready to plug the TEENSY 3.6 onto the TGI PCB and connect it to your oscilloscope.
A test compile of the program will show if you have all the libraries installed and the correct processor options selected. If there are no compiler errors, simply click the compile & upload button. Note: There are some peculiarities to the TEENSY loader; please check out the TEENSY website for further help if needed.
XYscopeConfig.h is another “included” file that is used to define default values and constants (like port assignments), as well as set startup switches to control XYscope library options (such as default font selection). The reader is encouraged to read through this file and try other options and settings. There are also a couple of switches at the top of the XY_SCOPE_CLOCK.ino file to control the clock display format. This enables the user to specify a “pure analog display” (just a clock face and hands) or hybrid display which adds a digital time display along with day of week and date text.
Once CRT_SCOPE_CLOCK has been uploaded to your TEENSY/TGI system, the program will auto start directly into CLOCK mode. In all likelihood, the first time in, things won’t look great on your oscilloscope display. You’ll need to exit CLOCK mode to get at the test and setup options.
With your PC linked to the TEENSY, open the IDE serial monitor (Tools>Serial Monitor) and enter ‘?↵‘; this will exit the CLOCK mode and you’ll see the menu of Figure 14 appear in the serial monitor. Use the online BUILD documentation for guidance to these options, as well as detailed gain and position potentiometer setup procedures.
While time and date (and many other adjustments) can be set through the IDE MONITOR program, the code is all ready for stand-alone operation using a little control panel. As seen in Figure 15, simply wire four pushbuttons to TEENSY ports D4-D7 and you’ll be good to go!
This retro-tech CRT clock is a neat way to demonstrate computer graphic principles and show how new-age microcomputers can merge with old-school CRT displays to create a “steam-punk thingy that can tell time.”
I’d like to thank Greg Kovacs for introducing me to the TEENSY CPU and his challenge to port the XYscope concept to the TEENSY CPU. I also want to extend my appreciation to Bill Esposito for his Hershey font code and other technical feedback.
The brain of the MicroMod Teensy Processor is the NXP iMXRT1062 from NXP Semiconductors. This Arm Cortex-M7 core processor is one of the most powerful microprocessors available today. The MicroMod Teensy Processor board takes advantage of the following properties:
Note: We recommend advanced users looking to take full advantage of all of the features of the Teensy Processor use it with the MicroMod ATP (All the Pins) Carrier Board or their own custom Carrier Board. Many of the pins with extra functionality may be tied to a specific use on other Carrier Boards and therefore essentially unavailable for things like extra UARTs, SPI/I2C or Analog In/PWM.
The MicroMod Teensy Processor uses the W25Q128JV-DTR serial flash memory IC from Windbond Electronics. The flash IC features 128mb of memory. For a detailed overview of the IC, refer to the datasheet.
There are two LEDs on the Teensy Processor. The PROG LED indicates when the HalfKay bootloader is enabled and the programming IC is powered. We"ll cover how to enter the bootloader in the Software Setup and Arduino Example sections. The STAT LED is tied to SCK/13 and can be used as a status LED or as a built-in LED. Control it directly by writing to LED_BUILTIN.
The Measure (MEAS) Jumper can be opened to measure how much current the Teensy Processor is pulling from V_USB. It"s is CLOSED by default and ties the USB_VBUS pins to V_USB. Open it by severing the trace and then using a digital multimeter to measure the current draw.
The Teensy Processor is similar to the Teensy 4.0 and 4.1 with a few notable differences. In order to maintain easy interoperability with MicroMod Carrier Boards, not all of the alternate pin functions are defined for the MicroMod Teensy board variant but we have done our best to make the Teensy Processor as versatile as possible with the right Carrier Board. The sections below outline the various signal protocols available on the MicroMod Teensy.
As you may have guessed from our extensive Qwiic System, we love communicating with devices using I2C! The Teensy Processor features four I2C buses. The main I2C bus has dedicated pins connected to MiroMod pads 12 (SDA) and 14 (SCL) (Teensy pins 18 and 19), along with a dedicated interrupt pin connected to MicroMod pad 16 (Teensy pin 29). The primary I2C Bus will almost always be connected to a Qwiic connector on your Carrier Board.
If you need a second I2C bus, the Teensy has SDA1 and SCL1 on MicroMod pads 53 and 51 (Teensy pins 25 and 24). To use this second bus, initialize it by calling Wire1.begin();.
The Teensy Processor is capable of having seven UARTs available. The primary UART is tied to USB_D± (MicroMod pads 3 and 5) for serial communication over USB. This is used for your standard serial upload as well as serial prints in Arduino. The secondary UART is a hardware UART tied to MicroMod pads 19 (RX1) and 17 (TX1) (Teensy pins 0 and 1). The tertiary UART is another hardware UART tied to MicroMod pads 20 (RX2) and 22 (TX2) (Teensy pins 17 and 16). In Arduino, the three UARTs are called as listed below:
One of the unique features of the Teensy is its ability to communicate with CAN devices. The Teensy MicroMod can receive CAN messages but in order to send them properly you will need a separate CAN transceiver. CAN-RX is tied to MicroMod pad 41 (Teensy pin 30) and CAN-TX is tied to MicroMod pad 43 (Teensy pin 31).
The MicroMod Teensy has all 12 general purpose IO pins available on top of 6 dedicated pins for digital, analog and PWM signals. The dedicated pins are just that, and are not shared with any other pin, unlike the general purpose pins which may be shared with other pins. Take note that not all GPIO pins are broken out or in use on every carrier board. Refer to your Carrier Board"s Hookup Guide for more information on pin use.
As experienced users may know, the pins on Teensy development boards are very versatile and can be used for a multitude of purposes. As we noted above, in order to maintain compatibility with the rest of the MicroMod system, not all of these alternate functions are available on the MicroMod Teensy but some pins can be configured for things like Analog Inputs or Pulse Width Modulation. As mentioned before, the best way to interact with these pins is with the ATP Carrier Board.
The default MicroMod Teensy Processor board definition is limited to these extra functionalities along with a few other pins that can technically be used for PWM signals when not in use for other signal protocols. Keep reading to the next section, MicroMod Pinout, for specific information on these pins.
Refer to the datasheet and user manual for a full overview of the iMXRT1062"s capabilities. The complete pin map can be found in the table below or you can refer to the schematic. PJRC has a wealth of knowledge on their forums with regard to the beta testing of the MicroMod Teensy. Here is a specific post that goes into detail about the pin map.
Heads up! The pin table below and schematic both include the Teensy pin associated with each MicroMod pin and this correlation can be used to identify alternate uses for pins on the Teensy Processor but not all of the alternate Teensy functionalities are available for use with the SparkFun Teensy MicroMod board definition. For many of the General Purpose I/O pins and other pins with multiple signal options, refer to your Carrier Board"s Hookup Guide for information on how those pins are configured what they are used for. Not all pins are used on every Carrier Board.
General purpose pins. Any unused processor pins should be assigned to Gx with ADC + PWM capable pins given priority (0, 1, 2, etc.) positions. The intent is to guarantee PWM, ADC and Digital Pin functionality on respective ADC/PWM/Digital pins. Gx pins do not guarantee ADC/PWM function. Alternative use is pins can support a fast read/write 8-bit or 4-bit wide bus.
The overall thickness of the MicroMod Teensy Processor Board is ~3.10mm. The height of the tallest component (NXP iMXRT1062 labeled as "U1" in the board file) on the Processor side is ~1.28mm. The PCB thickness is ~0.80mm. The height of the tallest component (transistor labeled as "Q1" in the board file) is about ~1.02mm.
CC3000 is troublesome, partly because it uses SPI_MODE1, partly because it uses the SPI port from within an interrupt. Adafruit’s CC3000 library has code to backup the AVR’s SPI registers, change them to MODE1, and then restore when it’s done, so the conflicting clock polarity isn’t (usually) an issue on AVR. But on Due, Teensy 3.1 and all other non-AVR chips, their specific SPI registers aren’t also in the code, so you can pretty easily end up with the SPI port left in the wrong mode.
Interrupts are also a huge problem. Using the CC3000 in simple blocking ways, where you fully complete all communication before you try to write to the display or read the touch screen or access the SD card tends to work. But if you use another device while the CC3000 generates an interrupt at just the wrong moment, it can run its SPI code while another device has chip select asserted, causing all sorts of terribly wrong results.
The touch controller on Adafruit’s displays comes in a couple different types, which need different SPI data modes, and some require very slow clock speeds. Again, they have AVR-only register save/restore, so usually you don’t get wrong settings into other libraries, but there’s no hardware specific code in those libs for non-AVR chips.
My recent work on SPI transactions, which will be in Teensyduino 1.20 (already in the latest release candidate and on github) and is planned for Arduino 1.5.8 (already in their github source and nightly builds) aims to solve both the settings and interrupt problems, in a hardware independent way. Adafruit has already merged my patches to their libs, at least for these most common ones, so they use the new SPI transaction stuff when compiled on those new versions.