{"title":"Teensy Boards","description":"\u003cp\u003eTeensy boards are compact, high-performance microcontroller development boards from PJRC, designed as a more capable alternative to standard Arduino boards while maintaining full Arduino IDE compatibility. Their small size and rich feature set make them a favourite for space-constrained, performance-critical projects.\u003c\/p\u003e\u003cp\u003eThe range includes Teensy 4.0 with its 600MHz ARM Cortex-M7 processor, the Teensy 4.1 with expanded I\/O and optional Ethernet, and earlier models including Teensy 3.2 and LC for projects where lower power consumption is a priority.\u003c\/p\u003e\u003cp\u003eTeensy boards are used in professional audio synthesisers and effects processors, USB MIDI controllers, motion capture gloves, lighting controllers, robotics applications requiring high-speed processing, and any maker or commercial project demanding more than a standard Arduino can deliver.\u003c\/p\u003e","products":[{"product_id":"teensy-4-0-development-board","title":"Teensy 4.0 Development Board","description":"\u003ch2\u003eFEATURES\u003c\/h2\u003e\n\u003cp\u003eDifferences between Teensy 4.1 \u0026amp; Teensy 4.0\u003c\/p\u003e\n\u003ctable cellpadding=\"2\"\u003e\n\u003ctbody\u003e\n\u003ctr class=\"top\"\u003e\n\u003cth\u003eFeature\u003c\/th\u003e\n\u003cth\u003eTeensy 4.1\u003c\/th\u003e\n\u003cth\u003eTeensy 4.0\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eEthernet\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e10 \/ 100 Mbit\u003cbr\u003e\u003ca href=\"http:\/\/www.ti.com\/product\/DP83825I\"\u003eDP83825 PHY\u003c\/a\u003e\u003cbr\u003e(6 pins)\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e-none-\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eUSB Host\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e5 Pins with\u003cbr\u003epower management\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e2 SMT Pads\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eSDIO (4 bit data)\u003c\/td\u003e\n\u003ctd align=\"center\"\u003eMicro SD Socket\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e8 SMT Pads\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003ePWM Pins\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e35\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e31\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eAnalog Inputs\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e18\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e14\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eSerial Ports\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e8\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e7\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eFlash Memory\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e8 Mbyte\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e2 Mbyte\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eQSPI Memory\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e2 chips +\u003cbr\u003eProgram Memory\u003c\/td\u003e\n\u003ctd align=\"center\"\u003eProgram memory\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eBreadboard I\/O\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e42\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e24\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eBottom SMT Pads\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e7\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e16\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eSD Card Signals\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e6\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"odd\"\u003e\n\u003ctd\u003eTotal I\/O Pins\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e55\u003c\/td\u003e\n\u003ctd align=\"center\"\u003e40\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eSOFTWARE\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eArduino IDE + Teensyduino\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_download.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eArduino's IDE software with the Teensyduino add-on\u003c\/a\u003e 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVisual Micro\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.visualmicro.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eVisual Micro\u003c\/a\u003e allows use of Microsoft Visual Studio to program Arduino compatible boards, including Teensy. Only Windows is supported. Visual Micro is commercial paid software.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePlatformIO\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/platformio.org\/platformio-ide\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ePlatformIO IDE\u003c\/a\u003e is a cross platform development environment with many advanced features. Windows, Linux and Macintosh are supported.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCircuitPython\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/circuitpython.org\/board\/teensy40\/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eCircuitPython\u003c\/a\u003e provides a .HEX file which you program onto Teensy 4.0 using \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/loader.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eTeensy Loader\u003c\/a\u003e. Then Teensy appears to your computer as a USB disk, where copy or save your Python code. CircuitPython does not fully support all of Teensy 4.0's hardware.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCommand Line with Makefile\u003c\/strong\u003e\u003cbr\u003eMakefiles for non-graphical use are provided with the Teensyduino installer.\u003cbr\u003eTeensy 4.x: {Arduino}\/hardware\/teensy\/avr\/cores\/teensy4\/Makefile\u003cbr\u003eTeensy LC \u0026amp; 3.x: {Arduino}\/hardware\/teensy\/avr\/cores\/teensy3\/Makefile\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003ePROCESSOR\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/coremark_barchart_t40_small.png\"\u003e\u003cbr\u003e\u003ca href=\"https:\/\/github.com\/PaulStoffregen\/CoreMark\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eCoreMark Benchmark\u003c\/a\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerformance\u003c\/strong\u003e\u003cbr\u003eARM Cortex-M7 brings many powerful CPU features to a true real-time microcontroller platform. CPU performance is many times faster than typical 32 bit microcontrollers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Issue Superscaler Architecture\u003c\/strong\u003e\u003cbr\u003eCortex-M7 is a dual-issue superscaler processor, meaning M7 can execute 2 instructions per clock cycle, at 600 MHz! Of course, executing 2 simultaneously depends upon the compiler ordering instructions and registers. Initial benchmarks have shown C++ code compiled by Arduino tends to achieve 2 instructions about 40% to 50% of the time while performing numerically intensive work using integers and pointers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFloating Point Unit\u003c\/strong\u003e\u003cbr\u003eThe FPU performs 32 bit float and 64 bit double precision math in hardware. 32 bit float speed is approximately the same speed as integer math. 64 bit double precision runs at half the speed of 32 bit float.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTightly Coupled Memory\u003c\/strong\u003e\u003cbr\u003eTightly Coupled Memory is a special feature which allows Cortex-M7 fast single cycle access to memory using a pair of 64 bit wide buses. The ITCM bus provides a 64 bit path to fetch instructions. The DTCM bus is actually a pair of 32 bit paths, allowing M7 to perform up to 2 separate memory accesses in the same cycle. These extremely high speed buses are separate from M7's main AXI bus, which accesses other memory and peripherals.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCache\u003c\/strong\u003e\u003cbr\u003eTwo 32K caches, one for instructions and one for data, are used to speed up repetitive access to non-TCM memory.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBranch Prediction\u003c\/strong\u003e\u003cbr\u003eCortex-M7 is the first ARM microcontroller to use branch prediction. On Cortex-M4 \u0026amp; earlier, loops and other code which much branch take 3 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Signal Processing\u003c\/strong\u003e\u003cbr\u003eDSP extension instructions accelerate signal processing, filters and Fourier transform. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Audio.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eAudio library\u003c\/a\u003e automatically makes uses of these DSP instructions.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003ePINS\u003c\/h2\u003e\n\u003cp\u003eTeensy 4.0 has a total of 40 input\/output signal pins. 24 are easily accessible when used with a solderless breadboard. This pinout reference card comes with Teensy 4.0.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy40_card10a_rev2.png\"\u003e \u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy40_card10b_rev2.png\"\u003e\u003c\/p\u003e\n\u003cp\u003ePinout Card Files: \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/card10a_rev2_web.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eFront Side\u003c\/a\u003e (PDF) \/ \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/card10b_rev2_web.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eBack Side\u003c\/a\u003e (PDF)\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eDIGITAL PINS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Input Pins\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_digital.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eDigital pins\u003c\/a\u003e may be used to receive signals. Teensy 4.0 pins default to INPUT most with a \"keeper\" resistor. Teensy 4.0 pins accept 0 to 3.3V signals. The pins are not 5V tolerant. Do not drive any digital pin higher than 3.3V.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInput Pullup \/ Pulldown \/ Keeper Resistors\u003c\/strong\u003e\u003cbr\u003eAll digital pins have optional pullup, pulldown, or keeper resistors. These are used to keep the pin at logic HIGH or logic LOW or the same logic level when it is not being actively driven by external circuity. Normally these resistors are used with pushbuttons \u0026amp; 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePin Change Interrupts\u003c\/strong\u003e\u003cbr\u003eAll digital pins can detect changes. Use attachInterrupt to cause a function to be run automatically. Interrupts should only be used for clean signals. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Bounce.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eBounce library\u003c\/a\u003e is recommended for detecting changes on pushbuttons, switches, and signals with noise or mechanical chatter.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Output Pins\u003c\/strong\u003e\u003cbr\u003eAll 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 4mA.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePulse Width Modulation (PWM)\u003c\/strong\u003e\u003cbr\u003e31 of the digital pins support \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ePulse Width Modulation (PWM)\u003c\/a\u003e, which can be used to control motor speed, dim lights \u0026amp; LEDs, or other uses where rapid pulsing can control average power. PWM is controlled by the analogWrite function. 5 groups of PWM can have distinct frequencies, controlled by the analogWriteFrequency function.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSlew Rate Limiting\u003c\/strong\u003e\u003cbr\u003eThis 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVariable Drive Strength\u003c\/strong\u003e\u003cbr\u003eThe output impedance of each digital output may be controlled in 7 steps, ranging from 150 ohms (weakest) up to about 21 ohms (strongest).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAdjustable Output Bandwidth\u003c\/strong\u003e\u003cbr\u003eDigital output bandwidth is also programmable, in 4 steps: 50, 100, 150 and 200 MHz.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLED Pin\u003c\/strong\u003e\u003cbr\u003ePin 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.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eANALOG PINS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Inputs\u003c\/strong\u003e\u003cbr\u003e14 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 12 bits of resolution, but in practice only up to 10 bits are normally usable due to noise. More advanced use is possible with the \u003ca href=\"https:\/\/github.com\/pedvide\/ADC\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eADC library\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Range\u003c\/strong\u003e\u003cbr\u003eThe analog input range is fixed at 0 to 3.3V. On Teensy 4.0, the analogReference() function has no effect. The analog pins are not 5V tolerant. Do not drive any analog pin higher than 3.3 volts.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Comparators\u003c\/strong\u003e\u003cbr\u003eThese comparators allow an analog signal to be converted to digital, with a precisely defined voltage threshold for logic low versus high.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eCOMMUNICATIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/usb_type_menu.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTools \u0026gt; USB Type\u003c\/strong\u003e menu configures the type of USB device Teensy will implement.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Device\u003c\/strong\u003e\u003cbr\u003eTeensy's primary communication is its main USB port, which operatates in USB device \/ peripheral mode at 480 Mbit\/sec speed. The Teensyduino software supports many different types of USB communication to your PC or Mac, selected by the Tools \u0026gt; USB Type menu. Several of these devices types may be used simultaneously.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_serial.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003eSerial\u003c\/strong\u003e \u003c\/a\u003e- 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 \u0026amp; Triple Serial modes, the additional serial devices are \"SerialUSB1\" and \"SerialUSB2\".\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEmulated Serial\u003c\/strong\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_midi.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003eMIDI\u003c\/strong\u003e \u003c\/a\u003e- Musical Instrument Device. MIDI is often used to interface knobs, sliders and buttons to music \u0026amp; 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 \u0026amp; MIDIx16 modes provide 4 or 16 virtual MIDI ports \/ cables. The MIDI device name seen by your computer may be customized.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAudio\u003c\/strong\u003e - Bi-directional stereo audio streaming, seen by your computer as a USB sound card. Using your computer's sound preferences, programs which play sound can stream to Teensy, and programs which record or process sound can receive, as if you were using a USB microphone. USB Audio is meant to be used together with the Teensy Audio Library, allowing your computer's sound to integrate with any audio processing system you design on Teensy.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_keyboard.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eKeyboard\u003c\/a\u003e \u003c\/strong\u003e- 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 \u0026gt; Keyboard Layout menu.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_mouse.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003eMouse\u003c\/strong\u003e \u003c\/a\u003e- 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_joystick.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eJoystick\u003c\/a\u003e \u003c\/strong\u003e- 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTouchscreen\u003c\/strong\u003e - Emulates a touchscreen capable of detecting up to 10 finger positions.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMTP Disk\u003c\/strong\u003e - Media Transfer, seen by your computer as a phone or camera which shares files.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_flightsim.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003eFlight Sim\u003c\/strong\u003e\u003c\/a\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/rawhid.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eRaw HID\u003c\/a\u003e\u003c\/strong\u003e - Allows communicating 64 byte messages with custom written software on your computer.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Host\u003c\/strong\u003e\u003cbr\u003eA second USB port operates in host mode, which allows you to connect USB devices to Teensy 4.0, using 2 small surface mount pads on the bottom side. It is fully independent of the main USB device port, so USB devices you connect on the host port can simultaeously communicate with Teensy while Teensy communicates with your computer via the USB device port. This USB host port runs at 480, 12 or 1.5 Mbit\/sec, depending on the speed if the device you connect. USB hubs may be used to connect many USB devices. The \u003ca href=\"https:\/\/github.com\/PaulStoffregen\/USBHost_t36\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eUSBHost_t36 library\u003c\/a\u003e is used for the USB host port. This USB host cable is normally used to connect a USB device or hub.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSerial\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_uart.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e7 serial ports\u003c\/a\u003e allow you to connect serial devices, such as MIDI, GPS receivers, DMX lighting, ESP wireless modules, etc. All 7 serial ports are fully independent and can transfer data simultaneously. None are shared with USB (as is done on some Arduino boards). All 7 ports include FIFOs for better performance at high speed baud rates.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2C\u003c\/strong\u003e\u003cbr\u003e3 ports for I2C (signals SDA \u0026amp; SCL) allow connecting a wide variety of chips which use I2C communication. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Wire.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eWire library\u003c\/a\u003e 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSPI\u003c\/strong\u003e\u003cbr\u003e3 ports for SPI (signals MOSI, MISO, SCK) allow connecting higher speed chips, SD cards, and displays which use SPI communication. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_SPI.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSPI library\u003c\/a\u003e provides software support for SPI. The first SPI port features a FIFO for higher sustained speed transfers. 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCAN\u003c\/strong\u003e\u003cbr\u003e3 ports for CAN bus allow connecting to automotive \u0026amp; industrial control systems which use CAN communication. A CAN transceiver chip must be added to complete the electrical interface between Teensy 4.1 and the CAN bus.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexIO\u003c\/strong\u003e\u003cbr\u003eFlexIO is a highly configurable peripheral, with a sort of build-your-own ports from a collection of shift registers, timers, logic and state machines. FlexIO can implement UARTs (serial), I2C, SPI, I2S audio, PWM. Unique interfaces can also be built, such as the \u003ca href=\"https:\/\/github.com\/wramsdell\/TriantaduoWS2811\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eTriantaduoWS2811 library\u003c\/a\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eDISPLAYS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/display_ili9341_touch_small.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003eILI9341 Color TFT Display The best supported display for Teensy 4.0\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eILI9341 320x240 Color TFT\u003c\/strong\u003e\u003cbr\u003eThese displays are the best supported on Teensy 4.0, with multiple high performance libraries for fast updates speed. ILI9341 is usually the best display to use, due to superior software support.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eST7735 Color TFT\u003c\/strong\u003e\u003cbr\u003eThese displays are slightly smaller and lower resolution than ILI9341. Highly optimized libaries for ST7735 \u0026amp; ST7789 allow these to also perform very well.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSSD1306 Monochrome OLED\u003c\/strong\u003e\u003cbr\u003eThese small displays are very popular and well supported.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOther Displays\u003c\/strong\u003e\u003cbr\u003eAlmost all displays with Arduino libraries work on Teensy 4.0.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePixel Pipeline\u003c\/strong\u003e\u003cbr\u003eA special graphic engine can perform color space transformation, alpha blending and chroma keying, bilinear resize and other operations one frame buffers. Software support is \u003ca href=\"https:\/\/forum.pjrc.com\/threads\/64860-T4-Pixel-Pipeline-Library\" target=\"_blank\" rel=\"noopener noreferrer\"\u003estill very experimental\u003c\/a\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eAUDIO\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/audio_design_tool_screenshot.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/gui\/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eAudio Design Tool\u003c\/a\u003e makes it easy to create an audio processing system which streams sound while your program runs.\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy4_audio_front_small.jpg\"\u003e\u003cbr\u003eAudio Shield converts I2S digital audio to analog stereo input \u0026amp; output.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2S \/ TDM\u003c\/strong\u003e\u003cbr\u003eMost commonly used with the \u003ca href=\"https:\/\/www.pjrc.com\/store\/teensy3_audio.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eaudio shield\u003c\/a\u003e, 2 digital audio ports can simultaneously transmit and receive up to 8 audio channels using I2S protocol, or up to 16 channels using \u003ca href=\"https:\/\/oshpark.com\/shared_projects\/2Yj6rFaW\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eTDM\u003c\/a\u003e. Alternately, a special format used by inexpensive \u003ca href=\"https:\/\/www.pjrc.com\/store\/pt8211_kit.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ePT8211 DAC\u003c\/a\u003e chips can be used.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003eI2SI - 1 stereo output pin, 1 stereo input pin, 3 stereo input or output pins\u003c\/li\u003e\n\u003cli\u003eI2S2 - 1 stereo output pin, 1 stereo input pin\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eS\/PDIF\u003c\/strong\u003e\u003cbr\u003eThe I2S port may be used to receive and transmit S\/PDIF. The S\/PDIF is independent of both I2S\/TDM ports and can be used simultaneously. Either or both of the I2S ports may also be used to transmit S\/PDIF.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Input (ADC)\u003c\/strong\u003e\u003cbr\u003e1 analog input pins may be used for audio inputs. Using an ADC pin for audio input currently has only \"experimental\" software support.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMQS Output\u003c\/strong\u003e\u003cbr\u003eThis pulsed digital output which blends PWM with oversampling \u0026amp; noise shaping can be used to drive small speakers. Or the output may be low-pass filtered to give analog signals. While called \"Medium Quality Sound\", the performance is surprisingly good.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_pt8211.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/store\/pt8211_kit.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ePT8211\u003c\/a\u003e is the least expensive DAC for good quality stereo signal output\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eLIGHTS \u0026amp; LEDS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811_4.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOctoWS2811 Library\u003c\/a\u003e controlling 1920 WS2812B RGB LEDs at 30 Hz refresh rate\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eWS2812B \/ NeoPixel\u003c\/strong\u003e\u003cbr\u003eTwo high performance non-blocking libraries support use of WS2812B LEDs. \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOctoWS2811\u003c\/a\u003e transmits any number of outputs in parallel, allowing almost any number LEDs to be refreshed at up to 30 Hz video rate. On Teensy 4.0, OctoWS2811 supports use of any number of digital pins, not limited to only 8 pins as on Teensy 3.x. \u003ca href=\"https:\/\/github.com\/PaulStoffregen\/WS2812Serial\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eWS2812Serial\u003c\/a\u003e transmits a single output, but up to 8 instances may be used. Non-blocking transmission uses DMA to transmit automatically, while your code is able to continue running. This much more allows complex animations or efficent communication than traditional blocking.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSmartMatrix \u0026amp; SmartLED Shield for HUB75 RGB LED Panels\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"http:\/\/docs.pixelmatix.com\/SmartMatrix\/shield-t4.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSmartLED Shield\u003c\/a\u003e (version 5) enables Teensy 4.0 to drive high-quality graphics to large HUB75 RGB LED panel arrays (from 32x16 up to 128x64 pixels). \u003ca href=\"https:\/\/github.com\/pixelmatix\/SmartMatrix\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eThe SmartMatrix library\u003c\/a\u003e makes it easy to draw basic graphics, create scrolling and static text, draw beautiful patterns using FastLED, and play animated GIFs on the panel. SmartMatrix uses Teensy 4.0's special features to send graphics data with minimal CPU usage, so you can use the processor to do other tasks in parallel such as SPI communication, file decoding, or complex rendering.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDMX Lighting Control\u003c\/strong\u003e\u003cbr\u003eAny of the 7 serial ports may be used for efficient communication with \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_DmxSimple.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eDMX lighting\u003c\/a\u003e controllers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRGB LEDs\u003c\/strong\u003e\u003cbr\u003eOrdinary LEDs may be variable-brightness controlled by PWM, or the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_SoftPWM.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSoftPWM\u003c\/a\u003e \u0026amp; \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_ShiftPWM.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eShiftPWM\u003c\/a\u003e libraries.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_shiftpwm.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eShiftPWM\u003c\/strong\u003e controlling 16 RGB LEDs using six 74HCT595 chips\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eTIMING\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_cpu_speed_menu.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTools \u0026gt; USB Speed\u003c\/strong\u003e menu configures the speed Teensy 4.0 will run your code.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eCrystals \u0026amp; Clock Generation\u003c\/strong\u003e\u003cbr\u003eTwo crystals prodvide accurate timing. A 24 MHz crystal is the basis for the system clock and most peripherals. A phase locked loop (PLL) increases the 24 MHz up to the system clock speed. A separate 32.768 kHz crystal is used for the Real Time Clock (RTC). If a coin cell is added to VBAT, the 32.768 kHz oscillator continues keeping date\/time while main power is off.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInterval Timers\u003c\/strong\u003e\u003cbr\u003e4 timers are dedicated to running a function at precisely timed intervals. These are configured using the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_IntervalTimer.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eIntervalTimer class\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM Timers\u003c\/strong\u003e\u003cbr\u003e32 timers \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003econtrol PWM pins\u003c\/a\u003e, 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.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module0\u003c\/strong\u003e - Controls PWM pins 1, 36, 37.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module1\u003c\/strong\u003e - Controls PWM pins 0, 34, 35.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module2\u003c\/strong\u003e - Controls PWM pins 24, 38, 39.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module3\u003c\/strong\u003e - Controls PWM pins 7, 8, 25.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module0\u003c\/strong\u003e - Controls PWM pins 4, 33.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module1\u003c\/strong\u003e - Controls PWM pin 5.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module2\u003c\/strong\u003e - Controls PWM pins 6, 9.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module0\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module1\u003c\/strong\u003e - Controls PWM pins 28, 29.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module2\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module0\u003c\/strong\u003e - Controls PWM pin 22.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module1\u003c\/strong\u003e - Controls PWM pin 23.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module2\u003c\/strong\u003e - Controls PWM pins 2, 3.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module0\u003c\/strong\u003e - Controls PWM pin 10.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module1\u003c\/strong\u003e - Controls PWM pin 12.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module2\u003c\/strong\u003e - Controls PWM pin 11.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module0\u003c\/strong\u003e - Controls PWM pin 13.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module1\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module2\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module0\u003c\/strong\u003e - Controls PWM pin 19.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module1\u003c\/strong\u003e - Controls PWM pin 18.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module2\u003c\/strong\u003e - Controls PWM pin 14.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module3\u003c\/strong\u003e - Controls PWM pin 15.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module0\u003c\/strong\u003e - No pins accessible. Used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOctoWS2811 library\u003c\/a\u003e, ADC Library\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module1\u003c\/strong\u003e - No pins accessible. Used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOctoWS2811 library\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module2\u003c\/strong\u003e - No pins accessible. Used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOctoWS2811 library\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module3\u003c\/strong\u003e - No pins accessible. Used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Audio.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eAudio\u003c\/a\u003e for ADC timing, and ADC Library\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWatchdog Timer\u003c\/strong\u003e\u003cbr\u003e3 separate watchdog timers are 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSpecial Timers\u003c\/strong\u003e\u003cbr\u003eThese 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.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eGPT1\u003c\/strong\u003e - Generic 32 bit timer\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGPT2\u003c\/strong\u003e - Generic Generic 32 bit Timer\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadrature Encoders\u003c\/strong\u003e - 4 special timers are meant for decoding quadrature signals.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCycle Counter\u003c\/strong\u003e\u003cbr\u003eA 32 bit counter increments every CPU clock cycle (600 MHz). ARM_DWT_CYCCNT may be read by programs to precisely measure short time duration time.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSysTick\u003c\/strong\u003e\u003cbr\u003eThis system timer generates an interrupt every millisecond. Most of the software timing features use this Systick timer.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSoftware Timing\u003c\/strong\u003e\u003cbr\u003eMany common timing requirements can be met using the software timing features.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_delay.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003edelay(), delayMicroseconds(), delayNanoseconds()\u003c\/strong\u003e\u003c\/a\u003e - Simple delay for milliseconds, microseconds, or nanoseconds.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_elaspedMillis.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003eelapsedMillis, elapsedMicros\u003c\/strong\u003e\u003c\/a\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_millis.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003emillis(), micros()\u003c\/strong\u003e \u003c\/a\u003e- Stardard Arduino functions for the system time in milliseconds and microseconds.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReal Time Clock - Date \u0026amp; Time\u003c\/strong\u003e\u003cbr\u003eThe RTC keeps track of date \/ time. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Time.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eTime library\u003c\/a\u003e is typically used together with the RTC. Teensy Loader automatically initializes the RTC to your PC's time while uploading. If a coin cell is connected to VBAT, the RTC will continue keeping time while power is turned off.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_vbat_coin_cell.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCR2032 Coin Cell\u003c\/strong\u003e connected to VBAT allows Teensy 4.0 to keep date \/ time while power is off\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003ePOWER\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Power\u003c\/strong\u003e\u003cbr\u003eNormally 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVIN Pin\u003c\/strong\u003e\u003cbr\u003eWhen USB power is not used, 5V power may be applied to the VIN pin. (TODO: VUSB-VIN pads photo, right side)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e3.3V Power\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0 has a voltage regulator 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 250mA. Teensy 4.0 is not meant to receive power on its 3.3V pin, but this can be done with \u003ca href=\"https:\/\/forum.pjrc.com\/threads\/64468-Teensy40-only-3-3V-power-supply?p=259469%26viewfull=1#post259469\" target=\"_blank\" rel=\"noopener noreferrer\"\u003especial modification\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Host\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0 does not have circuitry to manage the power to USB devices (as Teensy 4.1 does). The USB host port is data pins only. When Teensy 4.0 is powered by a USB cable, or a limited 5V power supply, USB devices should not be hot plugged.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePower Consumption\u003c\/strong\u003e\u003cbr\u003eWhen running at 600 MHz\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLow Power Features\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/github.com\/duff2013\/Snooze\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSnooze library\u003c\/a\u003e (TODO: more info here...)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCPU Voltage Control\u003c\/strong\u003e\u003cbr\u003eA DC-DC buck converter creates lower voltage needed for the CPU. Software can control this voltage\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVBAT\u003c\/strong\u003e\u003cbr\u003eA 3 volt coin cell may be connected to VBAT \u0026amp; GND to allow the RTC to keep track of date \/ time while power is off. A CR2032 type battery is recommended, though other 3V coin cells may also be used.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOn \/ Off Pin and Power Control\u003c\/strong\u003e\u003cbr\u003eA special low power state which turns off the 3.3V power can be controlled by the On\/Off pin. A pushbutton is meant to be connected between On\/Off and GND. While running, holding the button for 4 seconds turns off power. Pressing for 0.5 seconds while power is off turns the 3.3V power back on and reboots the processor. If a coin cell is connected to BVAT, the power state is retained when main power is disconnected. Without VBAT, the power state always defaults to 3.3V power on, even if the On\/Off button had been used to turn off 3.3V before main VIN\/VUSB power was removed.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eMEMORY\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy4_memory.png\"\u003e\u003c\/p\u003e\n\u003cp\u003eThree Memory Regions On Teensy 4.0\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eProgram \/ Flash Memory\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0 has 2 Mbyte of flash memory intended for storing your code. The flash memory can also store read-only variables and arrays. A portion of the flash memory may be used for file storage using the LittleFS library. The top 64K of this memory is reserved for EEPROM emulation data and the LED blink restore program.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRAM\u003c\/strong\u003e\u003cbr\u003e1024K of memory is available for variables and data. Half of this memory (RAM1) is accessed as tightly coupled memory for maximum performance. The other half (RAM2) is optimized for access by DMA. Normally large arrays \u0026amp; data buffers are placed in RAM2, to save the ultra-fast RAM1 for normal variables.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEEPROM\u003c\/strong\u003e\u003cbr\u003e1080 bytes of emulated EEPROM memory is supported. Writing to this memory temporarily stalls code execution from flash. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_EEPROM.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eEEPROM library\u003c\/a\u003e is typically used to access this memory. AVR libc functions may also be used.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStatic Allocation Keywords\u003c\/strong\u003e\u003cbr\u003eWhen the compiler builds your program, all global variables, static variables, and compiled code is assigned to dedicated locations in memory. This is called static allocation, because the memory addresses are fixed. By default, allocation tries to use the ultra-fast DTCM \u0026amp; ITCM memory. The following keywords allow control over where the compiler will place your variables and code within the memory.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDMAMEM\u003c\/strong\u003e - Variables defined with DMAMEM are placed at the beginning of RAM2. Normally buffers and large arrays are placed here. These variables can not be initialized, your program must write their initial values, if needed.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePROGMEM \u0026amp; F()\u003c\/strong\u003e - Variables defined with PROGMEM, and strings surrounded by F() are placed only in the flash memory. They can be accessed normally, special functions normally used on 8 bit boards are not required to read PROGMEM variables.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFASTRUN\u003c\/strong\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFLASHMEM\u003c\/strong\u003e - Functions defined with \"FLASHMEM\" executed directly from Flash. If the Cortex-M7 cache is not already holding a copy of the function, a delay results while the Flash memory is read into the M7's cache. FLASHMEM should be used on startup code and other functions where speed is not important\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDynamic Allocation\u003c\/strong\u003e\u003cbr\u003eAs your program runs, it may use all of the RAM which was not reserved by static allocation. Because the specific memory address for each variable is computed as your program runs, this is called dynamic memory allocation.\u003cbr\u003e\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eLocal Variables\u003c\/strong\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHeap\u003c\/strong\u003e - Memory allocated by C++ \"new\" and C malloc(), and Arduino String variables are placed in RAM2, starting immediately after the DMAMEM variables.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRTC RAM\u003c\/strong\u003e\u003cbr\u003e16 bytes of memory are located within the RTC. If a coin cell is connected to VBAT, contents of this memory is preserved while power is off. This memory is accessed as 32 bit registers LPGPR0-LPGPR3.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSD Card\u003c\/strong\u003e\u003cbr\u003eA built in SD socket allows you to use SD cards for large data storage. The Arduino SD library is used to access the card, using SD.begin(BUILTIN_SDCARD). This built in SD socket uses fast 4 bit native SDIO to access the card. SD cards may also be used via the SPI pins, with SD.begin(cspin), using the slower single bit SPI protocol to access the card.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSPI Flash\u003c\/strong\u003e\u003cbr\u003eFlash memory chips may be added using the SPI pins. These are supported by the SerialFlash and LittleFS libraries.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003ePROGRAMMING\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_teensy_loader.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTeensy Loader Application\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eTeensy Loader\u003c\/strong\u003e\u003cbr\u003eProgramming of Teensy's flash memory is done by the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/loader.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eTeensy Loader application\u003c\/a\u003e. 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAutomatic Software Entry to Program Mode\u003c\/strong\u003e\u003cbr\u003eWhile 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eProgram Pushbutton \/ Pin\u003c\/strong\u003e\u003cbr\u003eIf 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.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_red_led.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRed LED: bootloader status\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed LED: Bootloader Active \u0026amp; Flash Writing\u003c\/strong\u003e\u003cbr\u003eA red LED is dedicated to showing the bootloader status. When the bootloader is active but waiting for PC communication, this red LED is dim. While actually writing to the flash memory, it is on bright.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReset\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0 does not have a hardware reset signal available. Reset can be accomplished under software control using the watchdog timers or SCB_AIRCR register.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMemory Wipe \u0026amp; LED Blink Restore\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0 will fully erase its non-volatile memory and return the flash memory to a simple LED blink program if the program button is held between 13 to 17 seconds. The red LED flashes briefly at the beginning of this time window. During flash erase, the red LED is on bright. When completed, Teensy 4.0 will automatically reboot and run the LED blink program, causing the orange LED to blink slowly.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBootloader Chip\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0'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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCode Security\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0 does not currently support code security, encryption or authentication. Support for these features is planned for future boards.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eSPECIAL FEATURES\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eNested Interrupt Controller\u003c\/strong\u003e\u003cbr\u003ePriority 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDirect Memory Access (DMA)\u003c\/strong\u003e\u003cbr\u003eTeensy 4.0 has a general purpose 32 channel DMA controller. Optimized Audio, LED and display libraries make uses of these DMA channels. A DMAChannel.h abstraction layer is provided. The USB device, USB host, SD card and Ethernet peripherals also have specialized DMA engines built in.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRandom Number Generator\u003c\/strong\u003e\u003cbr\u003eTrue random number hardware is capable of generating random data at (TBD) rate. The Entropy library is used to access the random number generator.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCryptographic Acceleration\u003c\/strong\u003e\u003cbr\u003eSymetric ciphers and one-way hash can be computed by hardware, but currently no library support exists to utilize this hardware.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTemperature Sensor\u003c\/strong\u003e\u003cbr\u003eA built in temperature sensor allows reading the temperature inside the main chip. The \u003ca href=\"https:\/\/github.com\/LAtimes2\/InternalTemperature\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eInternalTemperature library\u003c\/a\u003e can be used to access this sensor.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eDIMENSIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy40_photo1.jpg\"\u003e\u003cbr\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy40.png\"\u003e\u003cbr\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy40_photo2.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eSCHEMATIC\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/schematic40.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eCOMPONENT LOCATIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/parts_placement_teensy40_top.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eTECHNICAL DETAILS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eARM Cortex-M7 at 600 MHz\u003c\/li\u003e\n\u003cli\u003eFloat point math unit\u003c\/li\u003e\n\u003cli\u003e1984K Flash\u003c\/li\u003e\n\u003cli\u003eUSB device 480 Mbit\/sec \u0026amp; USB host 480 Mbit\/sec\u003c\/li\u003e\n\u003cli\u003e40 digital input\/output pins\u003c\/li\u003e\n\u003cli\u003e14 analog input pins\u003c\/li\u003e\n\u003cli\u003e7 serial\u003c\/li\u003e\n\u003cli\u003e2 I2S\/TDM and 1 S\/PDIF digital audio port\u003c\/li\u003e\n\u003cli\u003e3 CAN Bus (1 with CAN FD)\u003c\/li\u003e\n\u003cli\u003e32 general purpose DMA channels\u003c\/li\u003e\n\u003cli\u003eCryptographic Acceleration \u0026amp; Random Number Generator\u003c\/li\u003e\n\u003cli\u003eRTC for date\/time\u003c\/li\u003e\n\u003cli\u003eProgrammable FlexIO\u003c\/li\u003e\n\u003cli\u003ePixel Processing Pipeline\u003c\/li\u003e\n\u003cli\u003ePeripheral cross triggering\u003c\/li\u003e\n\u003cli\u003ePower On\/Off management\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/techspecs.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eCompare detailed specifications of all Teensy models.\u003c\/a\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/IMXRT1060RM_rev2.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eIMXRT1060 Manual\u003c\/a\u003e - All the useful peripheral programing info\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/IMXRT1060CEC_rev0_1.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eIMXRT1060 Datasheet\u003c\/a\u003e - Only the electrical specifications\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/winbond_w25q16jvuxim.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eW25Q16JV-DTR Datasheet\u003c\/a\u003e - Flash memory chip\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.amazon.com\/dp\/0124080820\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eDefinitive Guide to ARM Cortex-M3 \u0026amp; Cortex-M4\u003c\/a\u003e (book) - ARM Processor low-level details\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eSHIPPING LIST\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1x Teensy 4.0 Development Board\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Sparkfun","offers":[{"title":"No Headers","offer_id":50718204133689,"sku":"DEV-15583","price":43.0,"currency_code":"SGD","in_stock":true},{"title":"No Headers Lockable","offer_id":52041755427129,"sku":"DEV-28368","price":43.0,"currency_code":"SGD","in_stock":true},{"title":"With Headers","offer_id":50718204166457,"sku":"DEV-16997","price":46.0,"currency_code":"SGD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0746\/5369\/6313\/products\/teensy40_front.jpg?v=1683955097"},{"product_id":"teensy-4-1-development-board","title":"Teensy 4.1 Development Board","description":"\u003ch2\u003eSOFTWARE\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eArduino IDE + Teensyduino\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_download.html\" target=\"_blank\"\u003eArduino's IDE software with the Teensyduino add-on\u003c\/a\u003e 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVisual Micro\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.visualmicro.com\/\" target=\"_blank\"\u003eVisual Micro\u003c\/a\u003e allows use of Microsoft Visual Studio to program Arduino compatible boards, including Teensy. Only Windows is supported. Visual Micro is commercial paid software.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePlatformIO\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/platformio.org\/platformio-ide\" target=\"_blank\"\u003ePlatformIO IDE\u003c\/a\u003e is a cross platform development environment with many advanced features. Windows, Linux and Macintosh are supported.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCircuitPython\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/circuitpython.org\/board\/teensy41\/\" target=\"_blank\"\u003eCircuitPython\u003c\/a\u003e provides a .HEX file which you program onto Teensy 4.1 using \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/loader.html\" target=\"_blank\"\u003eTeensy Loader\u003c\/a\u003e. Then Teensy appears to your computer as a USB disk, where copy or save your Python code. CircuitPython does not fully support all of Teensy 4.1's hardware.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCommand Line with Makefile\u003c\/strong\u003e\u003cbr\u003eMakefiles for non-graphical use are provided with the Teensyduino installer.\u003cbr\u003eTeensy 4.x: {Arduino}\/hardware\/teensy\/avr\/cores\/teensy4\/Makefile\u003cbr\u003eTeensy LC \u0026amp; 3.x: {Arduino}\/hardware\/teensy\/avr\/cores\/teensy3\/Makefile\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePROCESSOR\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerformance\u003c\/strong\u003e\u003cbr\u003eARM Cortex-M7 brings many powerful CPU features to a true real-time microcontroller platform. CPU performance is many times faster than typical 32 bit microcontrollers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Issue Superscaler Architecture\u003c\/strong\u003e\u003cbr\u003eCortex-M7 is a dual-issue superscaler processor, meaning M7 can execute 2 instructions per clock cycle, at 600 MHz! Of course, executing 2 simultaneously depends upon the compiler ordering instructions and registers. Initial benchmarks have shown C++ code compiled by Arduino tends to achieve 2 instructions about 40% to 50% of the time while performing numerically intensive work using integers and pointers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFloating Point Unit\u003c\/strong\u003e\u003cbr\u003eThe FPU performs 32 bit float and 64 bit double precision math in hardware. 32 bit float speed is approximately the same speed as integer math. 64 bit double precision runs at half the speed of 32 bit float.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTightly Coupled Memory\u003c\/strong\u003e\u003cbr\u003eTightly Coupled Memory is a special feature which allows Cortex-M7 fast single cycle access to memory using a pair of 64 bit wide buses. The ITCM bus provides a 64 bit path to fetch instructions. The DTCM bus is actually a pair of 32 bit paths, allowing M7 to perform up to 2 separate memory accesses in the same cycle. These extremely high speed buses are separate from M7's main AXI bus, which accesses other memory and peripherals.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCache\u003c\/strong\u003e\u003cbr\u003eTwo 32K caches, one for instructions and one for data, are used to speed up repetitive access to non-TCM memory.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBranch Prediction\u003c\/strong\u003e\u003cbr\u003eCortex-M7 is the first ARM microcontroller to use branch prediction. On Cortex-M4 \u0026amp; earlier, loops and other code which much branch take 3 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Signal Processing\u003c\/strong\u003e\u003cbr\u003eDSP extension instructions accelerate signal processing, filters and Fourier transform. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Audio.html\" target=\"_blank\"\u003eAudio library\u003c\/a\u003e automatically makes uses of these DSP instructions.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePINS\u003c\/h2\u003e\n\u003cp\u003eTeensy 4.1 has a total of 55 input\/output signal pins. 42 are easily accessible when used with a solderless breadboard.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy41_card11a_rev3.png\"\u003e \u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy41_card11b_rev4.png\"\u003e\u003c\/p\u003e\n\u003cp\u003ePinout Card Files: \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/card11a_rev4_web.pdf\" target=\"_blank\"\u003eFront Side\u003c\/a\u003e (PDF) \/ \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/card11b_rev4_web.pdf\" target=\"_blank\"\u003eBack Side\u003c\/a\u003e (PDF)\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eDIGITAL PINS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Input Pins\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_digital.html\" target=\"_blank\"\u003eDigital pins\u003c\/a\u003e may be used to receive signals. Teensy 4.1 pins default to INPUT most with a \"keeper\" resistor. Teensy 4.1 pins accept 0 to 3.3V signals. The pins are not 5V tolerant. Do not drive any digital pin higher than 3.3V.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInput Pullup \/ Pulldown \/ Keeper Resistors\u003c\/strong\u003e\u003cbr\u003eAll digital pins have optional pullup, pulldown, or keeper resistors. These are used to keep the pin at logic HIGH or logic LOW or the same logic level when it is not being actively driven by external circuity. Normally these resistors are used with pushbuttons \u0026amp; 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePin Change Interrupts\u003c\/strong\u003e\u003cbr\u003eAll digital pins can detect changes. Use attachInterrupt to cause a function to be run automatically. Interrupts should only be used for clean signals. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Bounce.html\" target=\"_blank\"\u003eBounce library\u003c\/a\u003e is recommended for detecting changes on pushbuttons, switches, and signals with noise or mechanical chatter.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Output Pins\u003c\/strong\u003e\u003cbr\u003eAll 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 4mA.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePulse Width Modulation (PWM)\u003c\/strong\u003e\u003cbr\u003e35 of the digital pins support \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html\" target=\"_blank\"\u003ePulse Width Modulation (PWM)\u003c\/a\u003e, which can be used to control motor speed, dim lights \u0026amp; LEDs, or other uses where rapid pulsing can control average power. PWM is controlled by the analogWrite function. 22 groups of PWM can have distinct frequencies, controlled by the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html#frequency\" target=\"_blank\"\u003eanalogWriteFrequency\u003c\/a\u003e function.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSlew Rate Limiting\u003c\/strong\u003e\u003cbr\u003eThis 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVariable Drive Strength\u003c\/strong\u003e\u003cbr\u003eThe output impedance of each digital output may be controlled in 7 steps, ranging from 150 ohms (weakest) up to about 21 ohms (strongest).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAdjustable Output Bandwidth\u003c\/strong\u003e\u003cbr\u003eDigital output bandwidth is also programmable, in 4 steps: 50, 100, 150 and 200 MHz.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLED Pin\u003c\/strong\u003e\u003cbr\u003ePin 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.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy41_sdcard_pinout.png\"\u003e \u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy41_qspi_pinout.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eANALOG PINS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Inputs\u003c\/strong\u003e\u003cbr\u003e18 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 12 bits of resolution, but in practice only up to 10 bits are normally usable due to noise. More advanced use is possible with the \u003ca href=\"https:\/\/github.com\/pedvide\/ADC\" target=\"_blank\"\u003eADC library\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Range\u003c\/strong\u003e\u003cbr\u003eThe analog input range is fixed at 0 to 3.3V. On Teensy 4.1, the analogReference() function has no effect. The analog pins are not 5V tolerant. Do not drive any analog pin higher than 3.3 volts.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Comparators\u003c\/strong\u003e\u003cbr\u003eThese comparators allow an analog signal to be converted to digital, with a precisely defined voltage threshold for logic low versus high.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eCOMMUNICATIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/usb_type_menu.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTools \u0026gt; USB Type\u003c\/strong\u003e menu configures the type of USB device Teensy will implement.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Device\u003c\/strong\u003e\u003cbr\u003eTeensy'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 \u0026gt; USB Type menu. Several of these devices types may be used simultaneously.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_serial.html\" target=\"_blank\"\u003e\u003cstrong\u003eSerial\u003c\/strong\u003e \u003c\/a\u003e- 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 \u0026amp; Triple Serial modes, the additional serial devices are \"SerialUSB1\" and \"SerialUSB2\".\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEmulated Serial\u003c\/strong\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_midi.html\" target=\"_blank\"\u003e\u003cstrong\u003eMIDI\u003c\/strong\u003e \u003c\/a\u003e- Musical Instrument Device. MIDI is often used to interface knobs, sliders and buttons to music \u0026amp; 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 \u0026amp; MIDIx16 modes provide 4 or 16 virtual MIDI ports \/ cables. The MIDI device name seen by your computer may be customized.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAudio\u003c\/strong\u003e - Bi-directional stereo audio streaming, seen by your computer as a USB sound card. Using your computer's sound preferences, programs which play sound can stream to Teensy, and programs which record or process sound can receive, as if you were using a USB microphone. USB Audio is meant to be used together with the Teensy Audio Library, allowing your computer's sound to integrate with any audio processing system you design on Teensy.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_keyboard.html\" target=\"_blank\"\u003eKeyboard\u003c\/a\u003e \u003c\/strong\u003e- 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 \u0026gt; Keyboard Layout menu.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_mouse.html\" target=\"_blank\"\u003e\u003cstrong\u003eMouse\u003c\/strong\u003e \u003c\/a\u003e- 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_joystick.html\" target=\"_blank\"\u003eJoystick\u003c\/a\u003e \u003c\/strong\u003e- 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTouchscreen\u003c\/strong\u003e - Emulates a touchscreen capable of detecting up to 10 finger positions.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMTP Disk\u003c\/strong\u003e - Media Transfer, seen by your computer as a phone or camera which shares files.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_flightsim.html\" target=\"_blank\"\u003e\u003cstrong\u003eFlight Sim\u003c\/strong\u003e\u003c\/a\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/rawhid.html\" target=\"_blank\"\u003eRaw HID\u003c\/a\u003e\u003c\/strong\u003e - Allows communicating 64 byte messages with custom written software on your computer.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Host\u003c\/strong\u003e\u003cbr\u003eA second USB port operates in host mode, which allows you to connect USB devices to Teensy 4.1. It is fully independent of the main USB device port, so USB devices you connect on the host port can simultaeously communicate with Teensy while Teensy communicates with your computer via the USB device port. This USB host port runs at 480, 12 or 1.5 Mbit\/sec, depending on the speed if the device you connect. USB hubs may be used to connect many USB devices. The \u003ca href=\"https:\/\/github.com\/PaulStoffregen\/USBHost_t36\" target=\"_blank\"\u003eUSBHost_t36 library\u003c\/a\u003e is used for the USB host port. This USB host cable is normally used to connect a USB device or hub.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSerial\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_uart.html\" target=\"_blank\"\u003e8 serial ports\u003c\/a\u003e allow you to connect serial devices, such as MIDI, GPS receivers, DMX lighting, ESP wireless modules, etc. All 6 serial port are fully independent and can transfer data simultaneously. None are shared with USB (as is done on some Arduino boards). Serial1 \u0026amp; Serial2 include FIFOs for better performance at high speed baud rates.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2C\u003c\/strong\u003e\u003cbr\u003e3 ports for I2C (signals SDA \u0026amp; SCL) allow connecting a wide variety of chips which use I2C communication. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Wire.html\" target=\"_blank\"\u003eWire library\u003c\/a\u003e 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSPI\u003c\/strong\u003e\u003cbr\u003e3 ports for SPI (signals MOSI, MISO, SCK) allow connecting higher speed chips, SD cards, and displays which use SPI communication. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_SPI.html\" target=\"_blank\"\u003eSPI library\u003c\/a\u003e provides software support for SPI. The first SPI port features a FIFO for higher sustained speed transfers. 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCAN\u003c\/strong\u003e\u003cbr\u003e3 ports for CAN bus allow connecting to automotive \u0026amp; industrial control systems which use CAN communication. A CAN transceiver chip must be added to complete the electrical interface between Teensy 4.1 and the CAN bus.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexIO\u003c\/strong\u003e\u003cbr\u003eFlexIO is a highly configurable peripheral, with a sort of build-your-own ports from a collection of shift registers, timers, logic and state machines. FlexIO can implement UARTs (serial), I2C, SPI, I2S audio, PWM. Unique interfaces can also be built, such as the \u003ca href=\"https:\/\/github.com\/wramsdell\/TriantaduoWS2811\" target=\"_blank\"\u003eTriantaduoWS2811 library\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003eEthernet\u003cbr\u003eTeensy 4.1 contains an Ethernet controller and Ethernet PHY chip. To connect an Ethernet cable, only this \u003ca href=\"https:\/\/www.pjrc.com\/store\/ethernet_kit.html\" target=\"_blank\"\u003eRJ45 magjack kit\u003c\/a\u003e is needed. Ethernet can also be implemented using the \u003ca href=\"https:\/\/www.pjrc.com\/store\/wiz820_sd_adaptor.html\" target=\"_blank\"\u003eWiznet W5500 and Wiz820 shield\u003c\/a\u003e, connected to the SPI port.\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy41_ethernet_pinout.png\"\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eDISPLAYS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/display_ili9341_touch_small.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003eILI9341 Color TFT Display The best supported display for Teensy 4.1\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eILI9341 320x240 Color TFT\u003c\/strong\u003e\u003cbr\u003eThese displays are the best supported on Teensy 4.1, with multiple high performance libraries for fast updates speed. ILI9341 is usually the best display to use, due to superior software support.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eST7735 Color TFT\u003c\/strong\u003e\u003cbr\u003eThese displays are slightly smaller and lower resolution than ILI9341. Highly optimized libaries for ST7735 \u0026amp; ST7789 allow these to also perform very well.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSSD1306 Monochrome OLED\u003c\/strong\u003e\u003cbr\u003eThese small displays are very popular and well supported.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOther Displays\u003c\/strong\u003e\u003cbr\u003eAlmost all displays with Arduino libraries work on Teensy 4.1.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePixel Pipeline\u003c\/strong\u003e\u003cbr\u003eA special graphic engine can perform color space transformation, alpha blending and chroma keying, bilinear resize and other operations one frame buffers. Software support is \u003ca href=\"https:\/\/forum.pjrc.com\/threads\/64860-T4-Pixel-Pipeline-Library\" target=\"_blank\"\u003estill very experimental\u003c\/a\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eAUDIO\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/audio_design_tool_screenshot.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/gui\/\" target=\"_blank\"\u003eAudio Design Tool\u003c\/a\u003e makes it easy to create an audio processing system which streams sound while your program runs.\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy4_audio_front_small.jpg\"\u003e\u003cbr\u003eAudio Shield converts I2S digital audio to analog stereo input \u0026amp; output.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2S \/ TDM\u003c\/strong\u003e\u003cbr\u003eMost commonly used with the \u003ca href=\"https:\/\/www.pjrc.com\/store\/teensy3_audio.html\" target=\"_blank\"\u003eaudio shield\u003c\/a\u003e, 2 digital audio ports can simultaneously transmit and receive up to 8 audio channels using I2S protocol, or up to 16 channels using \u003ca href=\"https:\/\/oshpark.com\/shared_projects\/2Yj6rFaW\" target=\"_blank\"\u003eTDM\u003c\/a\u003e. Alternately, a special format used by inexpensive \u003ca href=\"https:\/\/www.pjrc.com\/store\/pt8211_kit.html\" target=\"_blank\"\u003ePT8211 DAC\u003c\/a\u003e chips can be used.\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2SI\u003c\/strong\u003e - 1 stereo output pin, 1 stereo input pin, 3 stereo input or output pins\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2S2\u003c\/strong\u003e - 1 stereo output pin, 1 stereo input pin\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eS\/PDIF\u003c\/strong\u003e\u003cbr\u003eThe I2S port may be used to receive and transmit S\/PDIF. The S\/PDIF is independent of both I2S\/TDM ports and can be used simultaneously. Either or both of the I2S ports may also be used to transmit S\/PDIF.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Input (ADC)\u003c\/strong\u003e\u003cbr\u003e1 analog input pins may be used for audio inputs. Using an ADC pin for audio input currently has only \"experimental\" software support.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMQS Output\u003c\/strong\u003e\u003cbr\u003eThis pulsed digital output which blends PWM with oversampling \u0026amp; noise shaping can be used to drive small speakers. Or the output may be low-pass filtered to give analog signals. While called \"Medium Quality Sound\", the performance is surprisingly good.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_pt8211.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/store\/pt8211_kit.html\" target=\"_blank\"\u003ePT8211\u003c\/a\u003e is the least expensive DAC for good quality stereo signal output\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eLIGHTS \u0026amp; LEDS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811_4.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\"\u003eOctoWS2811 Library\u003c\/a\u003e controlling 1920 WS2812B RGB LEDs at 30 Hz refresh rate\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eWS2812B \/ NeoPixel\u003c\/strong\u003e\u003cbr\u003eTwo high performance non-blocking libraries support use of WS2812B LEDs. \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\"\u003eOctoWS2811\u003c\/a\u003e transmits any number of outputs in parallel, allowing almost any number LEDs to be refreshed at up to 30 Hz video rate. On Teensy 4.1, OctoWS2811 supports use of any number of digital pins, not limited to only 8 pins as on Teensy 3.x. \u003ca href=\"https:\/\/github.com\/PaulStoffregen\/WS2812Serial\" target=\"_blank\"\u003eWS2812Serial\u003c\/a\u003e transmits a single output, but up to 8 instances may be used. Non-blocking transmission uses DMA to transmit automatically, while your code is able to continue running. This much more allows complex animations or efficent communication than traditional blocking.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSmartMatrix \u0026amp; SmartLED Shield for HUB75 RGB LED Panels\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"http:\/\/docs.pixelmatix.com\/SmartMatrix\/shield-t4.html\" target=\"_blank\"\u003eSmartLED Shield\u003c\/a\u003e (version 5) enables Teensy 4.1 to drive high-quality graphics to large HUB75 RGB LED panel arrays (from 32x16 up to 128x64 pixels). \u003ca href=\"https:\/\/github.com\/pixelmatix\/SmartMatrix\" target=\"_blank\"\u003eThe SmartMatrix library\u003c\/a\u003e makes it easy to draw basic graphics, create scrolling and static text, draw beautiful patterns using FastLED, and play animated GIFs on the panel. SmartMatrix uses Teensy 4.1's special features to send graphics data with minimal CPU usage, so you can use the processor to do other tasks in parallel such as SPI communication, file decoding, or complex rendering.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDMX Lighting Control\u003c\/strong\u003e\u003cbr\u003eAny of the 8 serial ports may be used for efficient communication with \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_DmxSimple.html\" target=\"_blank\"\u003eDMX lighting\u003c\/a\u003e controllers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRGB LEDs\u003c\/strong\u003e\u003cbr\u003eOrdinary LEDs may be variable-brightness controlled by PWM, or the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_SoftPWM.html\" target=\"_blank\"\u003eSoftPWM\u003c\/a\u003e \u0026amp; \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_ShiftPWM.html\" target=\"_blank\"\u003eShiftPWM\u003c\/a\u003e libraries.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/www.pjrc.com\/store\/teensy40_shiftpwm.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eShiftPWM\u003c\/strong\u003e controlling 16 RGB LEDs using six 74HCT595 chips\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eTIMING\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy36_cpu_speed_menu.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTools \u0026gt; USB Speed\u003c\/strong\u003e menu configures the speed Teensy 3.5 will run your code.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eCrystals \u0026amp; Clock Generation\u003c\/strong\u003e\u003cbr\u003eTwo crystals prodvide accurate timing. A 24 MHz crystal is the basis for the system clock and most peripherals. A phase locked loop (PLL) increases the 24 MHz up to the system clock speed. A separate 32.768 kHz crystal is used for the Real Time Clock (RTC). If a coin cell is added to VBAT, the 32.768 kHz oscillator continues keeping date\/time while main power is off.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInterval Timers\u003c\/strong\u003e\u003cbr\u003e4 timers are dedicated to running a function at precisely timed intervals. These are configured using the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_IntervalTimer.html\" target=\"_blank\"\u003eIntervalTimer class\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM Timers\u003c\/strong\u003e\u003cbr\u003e32 timers \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html\" target=\"_blank\"\u003econtrol PWM pins\u003c\/a\u003e, 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.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module0\u003c\/strong\u003e - Controls PWM pins 1, 44, 45.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module1\u003c\/strong\u003e - Controls PWM pins 0, 42, 43.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module2\u003c\/strong\u003e - Controls PWM pins 24, 46, 47.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM1 Module3\u003c\/strong\u003e - Controls PWM pins 7, 8, 25.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module0\u003c\/strong\u003e - Controls PWM pins 4, 33.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module1\u003c\/strong\u003e - Controls PWM pin 5.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module2\u003c\/strong\u003e - Controls PWM pins 6, 9.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM2 Module3\u003c\/strong\u003e - Controls PWM pins 36, 37.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module0\u003c\/strong\u003e - Controls PWM pin 53.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module1\u003c\/strong\u003e - Controls PWM pins 28, 29.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module2\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM3 Module3\u003c\/strong\u003e - Controls PWM pin 41.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module0\u003c\/strong\u003e - Controls PWM pin 22.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module1\u003c\/strong\u003e - Controls PWM pin 23.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module2\u003c\/strong\u003e - Controls PWM pins 2, 3.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFlexPWM4 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module0\u003c\/strong\u003e - Controls PWM pin 10.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module1\u003c\/strong\u003e - Controls PWM pin 12.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module2\u003c\/strong\u003e - Controls PWM pin 11.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer1 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module0\u003c\/strong\u003e - Controls PWM pin 13.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module1\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module2\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer2 Module3\u003c\/strong\u003e - No pins accessible.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module0\u003c\/strong\u003e - Controls PWM pin 19.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module1\u003c\/strong\u003e - Controls PWM pin 18.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module2\u003c\/strong\u003e - Controls PWM pin 14.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer3 Module3\u003c\/strong\u003e - Controls PWM pin 15.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module0\u003c\/strong\u003e - No pins accessible. Used by OctoWS2811 library, ADC Library\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module1\u003c\/strong\u003e - No pins accessible. Used by OctoWS2811 library\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module2\u003c\/strong\u003e - No pins accessible. Used by OctoWS2811 library\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadTimer4 Module3\u003c\/strong\u003e - No pins accessible. Used by Audio for ADC timing, and ADC Library\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWatchdog Timer\u003c\/strong\u003e\u003cbr\u003e3 separate watchdog timers are 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSpecial Timers\u003c\/strong\u003e\u003cbr\u003eThese 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.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eGPT1\u003c\/strong\u003e - Generic 32 bit timer\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGPT2\u003c\/strong\u003e - Generic Generic 32 bit Timer\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eQuadrature Encoders\u003c\/strong\u003e - 4 special timers are meant for decoding quadrature signals.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCycle Counter\u003c\/strong\u003e\u003cbr\u003eA 32 bit counter increments every CPU clock cycle (600 MHz). ARM_DWT_CYCCNT may be read by programs to precisely measure short time duration time.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSysTick\u003c\/strong\u003e\u003cbr\u003eThis system timer generates an interrupt every millisecond. Most of the software timing features use this Systick timer.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSoftware Timing\u003c\/strong\u003e\u003cbr\u003eMany common timing requirements can be met using the software timing features.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_delay.html\" target=\"_blank\"\u003e\u003cstrong\u003edelay(), delayMicroseconds(), delayNanoseconds()\u003c\/strong\u003e\u003c\/a\u003e - Simple delay for milliseconds, microseconds, or nanoseconds.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_elaspedMillis.html\" target=\"_blank\"\u003e\u003cstrong\u003eelapsedMillis, elapsedMicros\u003c\/strong\u003e\u003c\/a\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_millis.html\" target=\"_blank\"\u003e\u003cstrong\u003emillis(), micros()\u003c\/strong\u003e \u003c\/a\u003e- Stardard Arduino functions for the system time in milliseconds and microseconds.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReal Time Clock - Date \u0026amp; Time\u003c\/strong\u003e\u003cbr\u003eThe RTC keeps track of date \/ time. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Time.html\" target=\"_blank\"\u003eTime library\u003c\/a\u003e is typically used together with the RTC. Teensy Loader automatically initializes the RTC to your PC's time while uploading. If a coin cell is connected to VBAT, the RTC will continue keeping time while power is turned off.\u003cbr\u003e\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy36_vbat_coin_cell.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCR2032 Coin Cell\u003c\/strong\u003e connected to VBAT allows Teensy 4.1 to keep date \/ time while power is off\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePOWER\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Power\u003c\/strong\u003e\u003cbr\u003eNormally 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVIN Pin\u003c\/strong\u003e\u003cbr\u003eWhen USB power is not used, 5V power may be applied to the VIN pin. Because VIN \u0026amp; 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e3.3V Power\u003c\/strong\u003e\u003cbr\u003eTeensy 4.1 has a voltage regulator 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 250mA. Teensy 4.1 is not meant to receive power on its 3.3V pin, but this can be done with \u003ca href=\"https:\/\/forum.pjrc.com\/threads\/64468-Teensy40-only-3-3V-power-supply?p=259469%26viewfull=1#post259469\" target=\"_blank\"\u003especial modification\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Host Hot Plugging\u003c\/strong\u003e\u003cbr\u003ePower to USB devices connected on the USB host port is provided through a current limited switch and a large capacitor. The current limit lessens the disruption to Teensy's power when a USB device is hot plugged and needs a sudden inrush current to charge up all its capacitors.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePower Consumption\u003c\/strong\u003e\u003cbr\u003eWhen running at 600 MHz, Teensy 4.1 consumes approximately 100 mA current. Reducing CPU speed to 528 MHz or lower reduces power consumption.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLow Power Features\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/github.com\/duff2013\/Snooze\" target=\"_blank\"\u003eSnooze library\u003c\/a\u003e (TODO: more info here...)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCPU Voltage Control\u003c\/strong\u003e\u003cbr\u003eA DC-DC buck converter creates lower voltage needed for the CPU. Software can control this voltage, in 50 mV steps. At 600 MHz, the CPU runs on 1.25V. For 528 MHz and lower, 1.15V is used. At 24 MHz, the CPU runs on only 0.95 volts. When overclocking, higher voltages are automatically used.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVBAT\u003c\/strong\u003e\u003cbr\u003eA 3 volt coin cell may be connected to VBAT \u0026amp; GND to allow the RTC to keep track of date \/ time while power is off. A CR2032 type battery is recommended, though other 3V coin cells may also be used.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOn \/ Off Pin and Power Control\u003c\/strong\u003e\u003cbr\u003eA special low power state which turns off the 3.3V power can be controlled by the On\/Off pin. A pushbutton is meant to be connected between On\/Off and GND. While running, holding the button for 4 seconds turns off power. Pressing for 0.5 seconds while power is off turns the 3.3V power back on and reboots the processor. If a coin cell is connected to BVAT, the power state is retained when main power is disconnected. Without VBAT, the power state always defaults to 3.3V power on, even if the On\/Off button had been used to turn off 3.3V before main VIN\/VUSB power was removed.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eMEMORY\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy41_memory.png\"\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eProgram \/ Flash Memory\u003c\/strong\u003e\u003cbr\u003eTeensy 4.1 has 8 Mbyte of flash memory intended for storing your code. The flash memory can also store read-only variables and arrays. A portion of the flash memory may be used for file storage using the LittleFS library. The top 256K of this memory is reserved for EEPROM emulation data and the LED blink restore program.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRAM\u003c\/strong\u003e\u003cbr\u003e1024K of memory is available for variables and data. Half of this memory (RAM1) is accessed as tightly coupled memory for maximum performance. The other half (RAM2) is optimized for access by DMA. Normally large arrays \u0026amp; data buffers are placed in RAM2, to save the ultra-fast RAM1 for normal variables.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEEPROM\u003c\/strong\u003e\u003cbr\u003e4284 bytes of emulated EEPROM memory is supported. Writing to this memory temporarily stalls code execution from flash. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_EEPROM.html\" target=\"_blank\"\u003eEEPROM library\u003c\/a\u003e is typically used to access this memory. AVR libc functions may also be used.\u003c\/li\u003e\n\u003cli\u003eQSPI Memory Expansion\u003cbr\u003eTeensy 4.1 has 2 locations to add 8 pin QSPI memory chips. Both locations support \u003ca href=\"https:\/\/www.pjrc.com\/store\/psram.html\" target=\"_blank\"\u003e8MB PSRAM chips\u003c\/a\u003e. If only 1 PSRAM chip is used, it must be solded to the smaller pads. The larger pads may be used with certain flash memory chips supported by the LittleFS library.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStatic Allocation Keywords\u003c\/strong\u003e\u003cbr\u003eWhen the compiler builds your program, all global variables, static variables, and compiled code is assigned to dedicated locations in memory. This is called static allocation, because the memory addresses are fixed. By default, allocation tries to use the ultra-fast DTCM \u0026amp; ITCM memory. The following keywords allow control over where the compiler will place your variables and code within the memory.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDMAMEM\u003c\/strong\u003e - Variables defined with DMAMEM are placed at the beginning of RAM2. Normally buffers and large arrays are placed here. These variables can not be initialized, your program must write their initial values, if needed.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEXTMEM\u003c\/strong\u003e - Variables defined with EXTMEM are placed in the optional PSRAM memory chip soldered to the QSPI memory expansion area on bottom side of Teensy 4.1. These variables can not be initialized, your program must write their initial values, if needed.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePROGMEM \u0026amp; F()\u003c\/strong\u003e - Variables defined with PROGMEM, and strings surrounded by F() are placed only in the flash memory. They can be accessed normally, special functions normally used on 8 bit boards are not required to read PROGMEM variables.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFASTRUN\u003c\/strong\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFLASHMEM\u003c\/strong\u003e - Functions defined with \"FLASHMEM\" executed directly from Flash. If the Cortex-M7 cache is not already holding a copy of the function, a delay results while the Flash memory is read into the M7's cache. FLASHMEM should be used on startup code and other functions where speed is not important.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDynamic Allocation\u003cbr\u003e\u003c\/strong\u003eAs your program runs, it may use all of the RAM which was not reserved by static allocation. Because the specific memory address for each variable is computed as your program runs, this is called dynamic memory allocation.\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eLocal Variables\u003c\/strong\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHeap\u003c\/strong\u003e - Memory allocated by C++ \"new\" and C malloc(), and Arduino String variables are placed in RAM2, starting immediately after the DMAMEM variables.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eExternal Heap\u003c\/strong\u003e - If PSRAM has been added, extmem_malloc() may be used to allocate this memory, started immediately after the EXTMEM variables. When no PSRAM is present, extmem_malloc() automatically allocated memory from the normal heap in RAM2\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRTC RAM\u003c\/strong\u003e\u003cbr\u003e16 bytes of memory are located within the RTC. If a coin cell is connected to VBAT, contents of this memory is preserved while power is off. This memory is accessed as 32 bit registers LPGPR0-LPGPR3.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSD Card\u003c\/strong\u003e\u003cbr\u003eA built in SD socket allows you to use SD cards for large data storage. The Arduino SD library is used to access the card, using SD.begin(BUILTIN_SDCARD). This built in SD socket uses fast 4 bit native SDIO to access the card. SD cards may also be used via the SPI pins, with SD.begin(cspin), using the slower single bit SPI protocol to access the card.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSPI Flash\u003c\/strong\u003e\u003cbr\u003eFlash memory chips may be added using the SPI pins. These are supported by the SerialFlash and LittleFS libraries.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePROGRAMMING\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy36_teensy_loader.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTeensy Loader Application\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eTeensy Loader\u003c\/strong\u003e\u003cbr\u003eProgramming of Teensy's flash memory is done by the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/loader.html\" target=\"_blank\"\u003eTeensy Loader application\u003c\/a\u003e. 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAutomatic Software Entry to Program Mode\u003c\/strong\u003e\u003cbr\u003eWhile 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eProgram Pushbutton \/ Pin\u003c\/strong\u003e\u003cbr\u003eIf 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRed LED: Bootloader Active \u0026amp; Flash Writing\u003c\/strong\u003e\u003cbr\u003eA red LED is dedicated to showing the bootloader status. When the bootloader is active but waiting for PC communication, this red LED is dim. While actually writing to the flash memory, it is on bright.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReset\u003c\/strong\u003e\u003cbr\u003eTeensy 4.1 does not have a hardware reset signal available. Reset can be accomplished under software control using the watchdog timers or SCB_AIRCR register.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMemory Wipe \u0026amp; LED Blink Restore\u003c\/strong\u003e\u003cbr\u003eTeensy 4.1 will fully erase its non-volatile memory and return the flash memory to a simple LED blink program if the program button is held between 13 to 17 seconds. The red LED flashes briefly at the beginning of this time window. During flash erase, the red LED is on bright. When completed, Teensy 4.1 will automatically reboot and run the LED blink program, causing the orange LED to blink slowly.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBootloader Chip\u003c\/strong\u003e\u003cbr\u003eTeensy 4.1'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.\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy41_middle_pinout.png\"\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCode Security\u003c\/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eProgram Memory Protection\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_code_security.html\" target=\"_blank\"\u003eCode security\u003c\/a\u003e protects your program code from unauthorized access and coping. When compiling, your program is encrypted. When run, the IMXRT Bus Encryption Engine provides on-the-fly decryption as your program executes. If an attacker removes and reads the flash memory chip from Teensy 4.1, or attempt to capture the USB communication from Teensy Loader, or copies the EHEX file Teensy Loader opens, they get only an encrypted copy of your program.\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/code_security_1.png\"\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSecure Firmware Update\u003c\/strong\u003e\u003cbr\u003eUsers can be given an EHEX file and Teensy Loader to securely update commercial products or secure applications which embed a Lockable Teensy, without gaining access to the original program code. Of course the key already in its fuse memory and secure mode locked when the product is shipped.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePermanent Secure Mode\u003c\/strong\u003e\u003cbr\u003eBrand new Teensy 4.1 can only run unencrypted programs. Once a key is written into fuse memory, either encrypted or unencrypted programs can run. Secure mode permanently disables the ability to run unencrypted code, and activates hardware security features.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLockable Teensy\u003c\/strong\u003e\u003cbr\u003eSecure mode can only be activated on Lockable Teensy. While Standard and Lockable Teensy are identical hardware, the permanent fuse configuation differs. Standard Teensy does not allow changes to fuses affecting boot or other critical configuration. Standard Teensy is meant to safe from \"bricking\" by programs which could write to fuse memory, but this safety means secure mode can not be activated. Standard Teensy can have a key written and can run encrypted code, but encryption alone is not fully secure. \u003cstrong\u003eOnly Lockable Teensy provides proper code security\u003c\/strong\u003e, and only when a key is written and secure mode is locked.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAuthentication\u003c\/strong\u003e\u003cbr\u003eThe encryption process includes digital signature authentication. In secure mode, this signature is checked before any code can be decrypted.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eJTAG Disable\u003c\/strong\u003e\u003cbr\u003eSecure mode permanently disables the JTAG port. To enter programming mode without JTAG, Teensy Loader and the EHEX file automatically utilize a loader utility which is authenticated by your key's digitial signature, and in turn uses secure hash checks to fully authenticate all components of the programming process.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEHEX File Format\u003c\/strong\u003e\u003cbr\u003eTeensyduino packages your encrypted code, metadata, a startup shim, loader utility, digital signatures and other essential details into a single EHEX file. This EHEX may be given to customers or untrusted parties to perform code updates with the convenice of a single file. The EHEX format and encryption details are \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_code_security.html\" target=\"_blank\"\u003edocumented on the code security page\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eKey Management\u003c\/strong\u003e\u003cbr\u003eTo make creating and using your key simple, Teensyduino adds a \"Teensy 4 Security\" window to the Arduino Tools menu. These functions can also be accessed from a command line utility for use from non-Arduino tools or automated scripts.\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy40_security.png\"\u003e\u003cbr\u003e\u003cstrong\u003eTools \u0026gt; Teensy 4 Security\u003c\/strong\u003e - Create Your Key and Write to Fuse Memory\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eSPECIAL FEATURES\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eNested Interrupt Controller\u003c\/strong\u003e\u003cbr\u003ePriority 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDirect Memory Access (DMA)\u003c\/strong\u003e\u003cbr\u003eTeensy 4.1 has a general purpose 32 channel DMA controller. Optimized Audio, LED and display libraries make uses of these DMA channels. A DMAChannel.h abstraction layer is provided. The USB device, USB host, SD card and Ethernet peripherals also have specialized DMA engines built in.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRandom Number Generator\u003c\/strong\u003e\u003cbr\u003eTrue random number hardware is capable of generating random data at (TBD) rate. The Entropy library is used to access the random number generator.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCryptographic Acceleration\u003c\/strong\u003e\u003cbr\u003eSymetric ciphers and one-way hash can be computed by hardware, but currently no library support exists to utilize this hardware.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTemperature Sensor\u003c\/strong\u003e\u003cbr\u003eA built in temperature sensor allows reading the temperature inside the main chip. The \u003ca href=\"https:\/\/github.com\/LAtimes2\/InternalTemperature\" target=\"_blank\"\u003eInternalTemperature library\u003c\/a\u003e can be used to access this sensor.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eDIMENSIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy41_photo1.jpg\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy41.png\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy41_photo2.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003eFinished hole diameter is 0.965mm (59 locations) and 0.762mm (6 locations).\u003c\/p\u003e\n\u003cp\u003eUser contributed \u003ca href=\"https:\/\/forum.pjrc.com\/threads\/61169-3D-Model-for-Teensy-4-1\" target=\"_blank\"\u003e3D CAD models\u003c\/a\u003e may be available on the forum.\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eSCHEMATIC\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/schematic41.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eCOMPONENT LOCATIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/parts_placement_teensy41_top.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/parts_placement_teensy41_bottom.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eTECHNICAL DETAILS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eARM Cortex-M7 at 600 MHz\u003c\/li\u003e\n\u003cli\u003eFloat point math unit, 64 \u0026amp; 32 bits\u003c\/li\u003e\n\u003cli\u003e7936K Flash, 1024K RAM (512K tightly coupled), 4K EEPROM (emulated)\u003c\/li\u003e\n\u003cli\u003eQSPI memory expansion, locations for 2 extra RAM or Flash chips\u003c\/li\u003e\n\u003cli\u003eUSB device 480 Mbit\/sec \u0026amp; USB host 480 Mbit\/sec\u003c\/li\u003e\n\u003cli\u003e55 digital input\/output pins, 35 PWM output pins\u003c\/li\u003e\n\u003cli\u003e18 analog input pins\u003c\/li\u003e\n\u003cli\u003e8 serial, 3 SPI, 3 I2C ports\u003c\/li\u003e\n\u003cli\u003e2 I2S\/TDM and 1 S\/PDIF digital audio port\u003c\/li\u003e\n\u003cli\u003e3 CAN Bus (1 with CAN FD)\u003c\/li\u003e\n\u003cli\u003e1 SDIO (4 bit) native SD Card port\u003c\/li\u003e\n\u003cli\u003eEthernet 10\/100 Mbit with DP83825 PHY\u003c\/li\u003e\n\u003cli\u003e32 general purpose DMA channels\u003c\/li\u003e\n\u003cli\u003eCryptographic Acceleration \u0026amp; Random Number Generator\u003c\/li\u003e\n\u003cli\u003eRTC for date\/time\u003c\/li\u003e\n\u003cli\u003eProgrammable FlexIO\u003c\/li\u003e\n\u003cli\u003ePixel Processing Pipeline\u003c\/li\u003e\n\u003cli\u003ePeripheral cross triggering\u003c\/li\u003e\n\u003cli\u003ePower On\/Off management\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/techspecs.html\" target=\"_blank\"\u003eCompare detailed specifications of all Teensy models.\u003c\/a\u003e\u003c\/p\u003e\n\u003ch2\u003eSHIPPING LIST\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1x Teensy 4.1 Development Board\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Sparkfun","offers":[{"title":"No Headers","offer_id":50718202855737,"sku":"DEV-16771","price":53.0,"currency_code":"SGD","in_stock":true},{"title":"No Headers Lockable","offer_id":51302420283705,"sku":"DEV-28369","price":53.0,"currency_code":"SGD","in_stock":true},{"title":"With Headers","offer_id":50718202888505,"sku":"DEV-16996","price":62.4,"currency_code":"SGD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0746\/5369\/6313\/products\/teensy-4.1-development-board-1_1.jpg?v=1683955099"},{"product_id":"teensy-3-5-development-board-with-soldered-pins","title":"Teensy 3.5 Development Board with Soldered Pins","description":"\u003ch2\u003eSOFTWARE\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eArduino IDE + Teensyduino\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_download.html\" target=\"_blank\"\u003eArduino's IDE software with the Teensyduino add-on\u003c\/a\u003e 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVisual Micro\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.visualmicro.com\/\" target=\"_blank\"\u003eVisual Micro\u003c\/a\u003e allows use of Microsoft Visual Studio to program Arduino compatible boards, including Teensy. Only Windows is supported. Visual Micro is commercial paid software.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePlatformIO\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/platformio.org\/platformio-ide\" target=\"_blank\"\u003ePlatformIO IDE\u003c\/a\u003e is a cross platform development environment with many advanced features. Windows, Linux and Macintosh are supported.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCommand Line with Makefile\u003c\/strong\u003e\u003cbr\u003eMakefiles for non-graphical use are provided with the Teensyduino installer.\u003cbr\u003eTeensy 4.x: {Arduino}\/hardware\/teensy\/avr\/cores\/teensy4\/Makefile\u003cbr\u003eTeensy LC \u0026amp; 3.x: {Arduino}\/hardware\/teensy\/avr\/cores\/teensy3\/Makefile\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePROCESSOR\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFloating Point Unit\u003c\/strong\u003e\u003cbr\u003eThe FPU performs 32 bit float math in hardware, at approximately the same speed as integer math.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMemory Interface\u003c\/strong\u003e\u003cbr\u003eDual 32 bit buses allow the processor to simultaneously fetch instructions and transfer data. An 8K instruction cache is used for fast code execution from flash memory.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Signal Processing\u003c\/strong\u003e\u003cbr\u003eDSP extension instructions accelerate signal processing, filters and Fourier transform. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Audio.html\" target=\"_blank\"\u003eAudio library\u003c\/a\u003e automatically makes uses of these DSP instructions.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePINS\u003c\/h2\u003e\n\u003cp\u003eTeensy 3.5 has a total of 64 input\/output signal pins. 42 are easily accessible when used with a solderless breadboard.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy35_card8a_rev3.png\"\u003e \u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy35_card8b_rev3.png\"\u003e\u003c\/p\u003e\n\u003cp\u003ePinout Card Files: \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/card8a_rev3_web.pdf\" target=\"_blank\"\u003eFront Side\u003c\/a\u003e (PDF) \/ \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/card8b_rev3_web.pdf\" target=\"_blank\"\u003eBack Side\u003c\/a\u003e (PDF)\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eDIGITAL PINS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Input Pins\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_digital.html\" target=\"_blank\"\u003eDigital pins\u003c\/a\u003e may be used to receive signals. Teensy 3.5 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 3.5 pins accept 0 to 5V signals. The pins are 5V tolerant. Do not drive any digital pin higher than 5V.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInput Pullup \/ Pulldown \/ Keeper Resistors\u003c\/strong\u003e\u003cbr\u003eAll 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 \u0026amp; 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePin Change Interrupts\u003c\/strong\u003e\u003cbr\u003eAll digital pins can detect changes. Use attachInterrupt to cause a function to be run automatically. Interrupts should only be used for clean signals. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Bounce.html\" target=\"_blank\"\u003eBounce library\u003c\/a\u003e is recommended for detecting changes on pushbuttons, switches, and signals with noise or mechanical chatter.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDigital Output Pins\u003c\/strong\u003e\u003cbr\u003eAll 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 10mA.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePulse Width Modulation (PWM)\u003c\/strong\u003e\u003cbr\u003e20 of the digital pins support \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html\" target=\"_blank\"\u003ePulse Width Modulation (PWM)\u003c\/a\u003e, which can be used to control motor speed, dim lights \u0026amp; LEDs, or other uses where rapid pulsing can control average power. PWM is controlled by the analogWrite function. 4 groups of PWM can have distinct frequencies, controlled by the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html#frequency\" target=\"_blank\"\u003eanalogWriteFrequency\u003c\/a\u003e function.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSlew Rate Limiting\u003c\/strong\u003e\u003cbr\u003eThis 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLED Pin\u003c\/strong\u003e\u003cbr\u003ePin 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.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eANALOG PINS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Inputs\u003c\/strong\u003e\u003cbr\u003e27 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 \u003ca href=\"https:\/\/github.com\/pedvide\/ADC\" target=\"_blank\"\u003eADC library\u003c\/a\u003e. Analog inputs can also receive audio signals with the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Audio.html\" target=\"_blank\"\u003eAudio library\u003c\/a\u003e, but the sound quality is lower than using the Audio shield.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Range \u0026amp; Reference Voltage\u003c\/strong\u003e\u003cbr\u003eThe AREF pin is used to set the analog input range. By default, AREF is 3.3V due to a resistor. External shunt-type reference chips may be connected for lower reference voltage. Or analogReference(INTERNAL) may be used to set the analog range to 1.2V.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e5 Volt Tolerance\u003c\/strong\u003e\u003cbr\u003eAnalog input pins which have digital capability are 5 volt tolerant, even when the digitial features are not used. When driven higher than AREF, these pins measure the maximum reading. Analog input pins without digitial (A10, A11, A21, A22, A25, A26) are not 5V tolerant. Do not drive analog-only pins higher than 3.3V.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDifferential \u0026amp; Programming Gain Amplifiers\u003c\/strong\u003e\u003cbr\u003ePins A10 \u0026amp; A11 and A25 \u0026amp; A26 have a differential amplifiers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Comparators\u003c\/strong\u003e\u003cbr\u003eThese comparators allow an analog signal to be converted to digital, with a precisely defined voltage threshold for logic low versus high.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Outputs \/ Digital To Analog (DAC)\u003c\/strong\u003e\u003cbr\u003eTwo true analog output DACs are present on pins A21 \u0026amp; A22. These may be used with analogWrite, or the Audio library.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eCOMMUNICATIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/usb_type_menu.png\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTools \u0026gt; USB Type\u003c\/strong\u003e menu configures the type of USB device Teensy will implement.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Device\u003c\/strong\u003e\u003cbr\u003eTeensy'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 \u0026gt; USB Type menu. Several of these devices types may be used simultaneously.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_serial.html\" target=\"_blank\"\u003e\u003cstrong\u003eSerial\u003c\/strong\u003e \u003c\/a\u003e- 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 \u0026amp; Triple Serial modes, the additional serial devices are \"SerialUSB1\" and \"SerialUSB2\".\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEmulated Serial\u003c\/strong\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_midi.html\" target=\"_blank\"\u003e\u003cstrong\u003eMIDI\u003c\/strong\u003e \u003c\/a\u003e- Musical Instrument Device. MIDI is often used to interface knobs, sliders and buttons to music \u0026amp; 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 \u0026amp; MIDIx16 modes provide 4 or 16 virtual MIDI ports \/ cables. The MIDI device name seen by your computer may be customized.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAudio\u003c\/strong\u003e - Bi-directional stereo audio streaming, seen by your computer as a USB sound card. Using your computer's sound preferences, programs which play sound can stream to Teensy, and programs which record or process sound can receive, as if you were using a USB microphone. USB Audio is meant to be used together with the Teensy Audio Library, allowing your computer's sound to integrate with any audio processing system you design on Teensy.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_keyboard.html\" target=\"_blank\"\u003eKeyboard\u003c\/a\u003e \u003c\/strong\u003e- 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 \u0026gt; Keyboard Layout menu.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_mouse.html\" target=\"_blank\"\u003e\u003cstrong\u003eMouse\u003c\/strong\u003e \u003c\/a\u003e- 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_joystick.html\" target=\"_blank\"\u003eJoystick\u003c\/a\u003e \u003c\/strong\u003e- 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTouchscreen\u003c\/strong\u003e - Emulates a touchscreen capable of detecting up to 10 finger positions.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMTP Disk\u003c\/strong\u003e - Media Transfer, seen by your computer as a phone or camera which shares files.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_flightsim.html\" target=\"_blank\"\u003e\u003cstrong\u003eFlight Sim\u003c\/strong\u003e\u003c\/a\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/rawhid.html\" target=\"_blank\"\u003eRaw HID\u003c\/a\u003e\u003c\/strong\u003e - Allows communicating 64 byte messages with custom written software on your computer.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSerial\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_uart.html\" target=\"_blank\"\u003e6 serial ports\u003c\/a\u003e allow you to connect serial devices, such as MIDI, GPS receivers, DMX lighting, ESP wireless modules, etc. All 6 serial port are fully independent and can transfer data simultaneously. None are shared with USB (as is done on some Arduino boards). Serial1 \u0026amp; Serial2 include FIFOs for better performance at high speed baud rates.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2C\u003c\/strong\u003e\u003cbr\u003e3 ports for I2C (signals SDA \u0026amp; SCL) allow connecting a wide variety of chips which use I2C communication. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Wire.html\" target=\"_blank\"\u003eWire library\u003c\/a\u003e 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSPI\u003c\/strong\u003e\u003cbr\u003e3 ports for SPI (signals MOSI, MISO, SCK) allow connecting higher speed chips, SD cards, and displays which use SPI communication. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_SPI.html\" target=\"_blank\"\u003eSPI library\u003c\/a\u003e provides software support for SPI. The first SPI port features a FIFO for higher sustained speed transfers. 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCAN\u003c\/strong\u003e\u003cbr\u003e1 ports for CAN bus allow connecting to automotive \u0026amp; industrial control systems which use CAN communication. A CAN transceiver chip must be added to complete the electrical interface between Teensy 3.5 and the CAN bus.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eDISPLAYS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/display_ili9341_touch_small.jpg\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003eILI9341 Color TFT Display The best supported display for Teensy 3.5\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eILI9341 320x240 Color TFT\u003c\/strong\u003e\u003cbr\u003eThese displays are the best supported on Teensy 3.5, with multiple high performance libraries for fast updates speed. ILI9341 is usually the best display to use, due to superior software support.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eST7735 Color TFT\u003c\/strong\u003e\u003cbr\u003eThese displays are slightly smaller and lower resolution than ILI9341. Highly optimized libaries for ST7735 \u0026amp; ST7789 allow these to also perform very well.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSSD1306 Monochrome OLED\u003c\/strong\u003e\u003cbr\u003eThese small displays are very popular and well supported.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOther Displays\u003c\/strong\u003e\u003cbr\u003eAlmost all displays with Arduino libraries work on Teensy 3.5.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eAUDIO\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/audio_design_tool_screenshot.png\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/gui\/\" target=\"_blank\"\u003eAudio Design Tool\u003c\/a\u003e makes it easy to create an audio processing system which streams sound while your program runs.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy4_audio_front_small.jpg\" alt=\"\"\u003e\u003cbr\u003eAudio Shield converts I2S digital audio to analog stereo input \u0026amp; output.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eI2S \/ TDM\u003c\/strong\u003e\u003cbr\u003eMost commonly used with the \u003ca href=\"https:\/\/www.pjrc.com\/store\/teensy3_audio.html\" target=\"_blank\"\u003eaudio shield\u003c\/a\u003e, 1 digital audio ports can simultaneously transmit and receive up to 4 audio channels using I2S protocol, or up to 16 channels using \u003ca href=\"https:\/\/oshpark.com\/shared_projects\/2Yj6rFaW\" target=\"_blank\"\u003eTDM\u003c\/a\u003e. Alternately, a special format used by inexpensive \u003ca href=\"https:\/\/www.pjrc.com\/store\/pt8211_kit.html\" target=\"_blank\"\u003ePT8211 DAC\u003c\/a\u003e chips can be used.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eS\/PDIF\u003c\/strong\u003e\u003cbr\u003eThe I2S port may be used to transmit S\/PDIF. Receiving S\/PDIF is not supported on Teensy 3.5, but Teensy 4.0 \u0026amp; 4.1 can receive S\/PDIF.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Input (ADC)\u003c\/strong\u003e\u003cbr\u003e1 or 2 analog input pins may be used for audio inputs. These may be used simultaneously with the other audio inputs \u0026amp; outputs.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAnalog Output (DAC)\u003c\/strong\u003e\u003cbr\u003e1 or 2 DAC outputs can transmit audio. These may be used simultaneously with the other audio inputs \u0026amp; outputs.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy40_pt8211.jpg\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/store\/pt8211_kit.html\" target=\"_blank\"\u003ePT8211\u003c\/a\u003e is the least expensive DAC for good quality stereo signal output\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eLIGHTS \u0026amp; LEDS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811_4.jpg\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\"\u003eOctoWS2811 Library\u003c\/a\u003e controlling 1920 WS2812B RGB LEDs at 30 Hz refresh rate\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eWS2812B \/ NeoPixel\u003c\/strong\u003e\u003cbr\u003eTwo high performance non-blocking libraries support use of WS2812B LEDs. \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\"\u003eOctoWS2811\u003c\/a\u003e transmits 8 outputs in parallel, allowing up to 8800 LEDs to be refreshed at up to 30 Hz video rate. \u003ca href=\"https:\/\/github.com\/PaulStoffregen\/WS2812Serial\" target=\"_blank\"\u003eWS2812Serial\u003c\/a\u003e transmits a single output, but up to 5 instances may be used. Non-blocking transmission uses DMA to transmit automatically, while your code is able to continue running. This much more allows complex animations or efficent communication than traditional blocking.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSmartMatrix \u0026amp; SmartLED Shield for HUB75 RGB LED Panels\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"http:\/\/docs.pixelmatix.com\/SmartMatrix\/shield-t4.html\" target=\"_blank\"\u003eSmartLED Shield\u003c\/a\u003e (version 4) enables Teensy 3.5 to drive high-quality graphics to large HUB75 RGB LED panel arrays (from 32x16 up to 64x64 pixels). \u003ca href=\"https:\/\/github.com\/pixelmatix\/SmartMatrix\" target=\"_blank\"\u003eThe SmartMatrix library\u003c\/a\u003e makes it easy to draw basic graphics, create scrolling and static text, draw beautiful patterns using FastLED, and play animated GIFs on the panel. SmartMatrix uses Teensy 3.5's special features to send graphics data with minimal CPU usage, so you can use the processor to do other tasks in parallel such as SPI communication, file decoding, or complex rendering.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDMX Lighting Control\u003c\/strong\u003e\u003cbr\u003eSerial1 \u0026amp; Serial2 may be used for efficient communication with \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_DmxSimple.html\" target=\"_blank\"\u003eDMX lighting\u003c\/a\u003e controllers.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRGB LEDs\u003c\/strong\u003e\u003cbr\u003eOrdinary LEDs may be variable-brightness controlled by PWM, or the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_SoftPWM.html\" target=\"_blank\"\u003eSoftPWM\u003c\/a\u003e \u0026amp; \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_ShiftPWM.html\" target=\"_blank\"\u003eShiftPWM\u003c\/a\u003e libraries.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy40_shiftpwm.jpg\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eShiftPWM\u003c\/strong\u003e controlling 16 RGB LEDs using six 74HCT595 chips\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eTIMING\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy36_cpu_speed_menu.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTools \u0026gt; USB Speed\u003c\/strong\u003e menu configures the speed Teensy 3.5 will run your code.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eCrystals \u0026amp; Clock Generation\u003c\/strong\u003e\u003cbr\u003eTwo crystals prodvide accurate timing. 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. A separate 32.768 kHz crystal is used for the Real Time Clock (RTC). If a coin cell is added to VBAT, the 32.768 kHz oscillator continues keeping date\/time while main power is off.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInterval Timers\u003c\/strong\u003e\u003cbr\u003e4 timers are dedicated to running a function at precisely timed intervals. These are configured using the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_IntervalTimer.html\" target=\"_blank\"\u003eIntervalTimer class\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePWM Timers\u003c\/strong\u003e\u003cbr\u003e4 timers \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_pulse.html\" target=\"_blank\"\u003econtrol PWM pins\u003c\/a\u003e, 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.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFTM0\u003c\/strong\u003e - Controls PWM pins 5, 6, 9, 10, 20, 21, 22, 23. Used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_AltSoftSerial.html\" target=\"_blank\"\u003eAltSoftSerial library\u003c\/a\u003e and \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_PulsePosition.html\" target=\"_blank\"\u003ePulsePosition library\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFTM1\u003c\/strong\u003e - Controls PWM pins 3, 4.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFTM2\u003c\/strong\u003e - Controls PWM pins 25, 32. Used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OctoWS2811.html\" target=\"_blank\"\u003eOctoWS2811 library\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFTM3\u003c\/strong\u003e - Controls PWM pins 2, 7, 8, 14, 35, 36, 37, 38.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWatchdog Timer\u003c\/strong\u003e\u003cbr\u003eThis 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSpecial Timers\u003c\/strong\u003e\u003cbr\u003eThese 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.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePDB\u003c\/strong\u003e - Delay timer, used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Servo.html\" target=\"_blank\"\u003eServo library\u003c\/a\u003e, and \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Audio.html\" target=\"_blank\"\u003eAudio library\u003c\/a\u003e for ADC input \u0026amp; DAC output.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLPTMR\u003c\/strong\u003e - Generic Timer, used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_FreqCount.html\" target=\"_blank\"\u003eFreqCount library\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCMT\u003c\/strong\u003e - Carrier Modulation Timer, used by \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_IRremote.html\" target=\"_blank\"\u003eIRRemote library\u003c\/a\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCycle Counter\u003c\/strong\u003e\u003cbr\u003eA 32 bit counter increments every CPU clock cycle (180 MHz). ARM_DWT_CYCCNT may be read by programs to precisely measure short time duration time.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSysTick\u003c\/strong\u003e\u003cbr\u003eThis system timer generates an interrupt every millisecond. Most of the software timing features use this Systick timer.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSoftware Timing\u003c\/strong\u003e\u003cbr\u003eMany common timing requirements can be met using the software timing features.\u003cbr\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_delay.html\" target=\"_blank\"\u003e\u003cstrong\u003edelay(), delayMicroseconds(), delayNanoseconds()\u003c\/strong\u003e\u003c\/a\u003e - Simple delay for milliseconds, microseconds, or nanoseconds.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_elaspedMillis.html\" target=\"_blank\"\u003e\u003cstrong\u003eelapsedMillis, elapsedMicros\u003c\/strong\u003e\u003c\/a\u003e - 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_timing_millis.html\" target=\"_blank\"\u003e\u003cstrong\u003emillis(), micros()\u003c\/strong\u003e \u003c\/a\u003e- Stardard Arduino functions for the system time in milliseconds and microseconds.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReal Time Clock - Date \u0026amp; Time\u003c\/strong\u003e\u003cbr\u003eThe RTC keeps track of date \/ time. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_Time.html\" target=\"_blank\"\u003eTime library\u003c\/a\u003e is typically used together with the RTC. Teensy Loader automatically initializes the RTC to your PC's time while uploading. If a coin cell is connected to VBAT, the RTC will continue keeping time while power is turned off.\u003cbr\u003e\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy36_vbat_coin_cell.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCR2032 Coin Cell\u003c\/strong\u003e connected to VBAT allows Teensy 3.5 to keep date \/ time while power is off\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePOWER\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eUSB Power\u003c\/strong\u003e\u003cbr\u003eNormally 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVIN Pin\u003c\/strong\u003e\u003cbr\u003eWhen USB power is not used, 5V power may be applied to the VIN pin. Because VIN \u0026amp; 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e3.3V Power\u003c\/strong\u003e\u003cbr\u003eTeensy 3.5 has a voltage regulator 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 250mA. When power is not applied to VUSB or VIN, it is possible to run by externally applying 3.3V power.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAGND \u0026amp; GND Pins\u003c\/strong\u003e\u003cbr\u003eTeensy 3.5 has 6 GND pins and 1 AGND pin. The GND pins are the normal system ground. Digital signals and most applications should use GND. The AGND pin is meant only for the grounds from sensitive analog signals.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePower Consumption\u003c\/strong\u003e\u003cbr\u003e(info here)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLow Power Features\u003c\/strong\u003e\u003cbr\u003e\u003ca href=\"https:\/\/github.com\/duff2013\/Snooze\" target=\"_blank\"\u003eSnooze library\u003c\/a\u003e (TODO: more info here...)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVBAT\u003c\/strong\u003e\u003cbr\u003eA 3 volt coin cell may be connected to VBAT \u0026amp; GND to allow the RTC to keep track of date \/ time while power is off. A CR2032 type battery is recommended, though other 3V coin cells may also be used.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eMEMORY\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eProgram \/ Flash Memory\u003c\/strong\u003e\u003cbr\u003eTeensy 3.5 has 512 kbyte of flash memory intended for storing your code. The flash memory can also store read-only variables and arrays.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRAM\u003c\/strong\u003e\u003cbr\u003e256K of memory is available for variables and data. Functions may also be placed in RAM using the FASTRUN keyword.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEEPROM\u003c\/strong\u003e\u003cbr\u003e4096 bytes of emulated EEPROM memory is supported. Special FlexNVM hardware allows this memory to be written without disruption to normal flash memory. The \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_EEPROM.html\" target=\"_blank\"\u003eEEPROM library\u003c\/a\u003e is typically used to access this memory. AVR libc functions may also be used.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRTC RAM\u003c\/strong\u003e\u003cbr\u003e32 bytes of memory are located within the RTC. If a coin cell is connected to VBAT, contents of this memory is preserved while power is off. The last 4 bytes are used by startup code to manage configuration of data\/time, leaving 28 bytes available for general use.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSD Card\u003c\/strong\u003e\u003cbr\u003eA built in SD socket allows you to use SD cards for large data storage. The Arduino SD library is used to access the card, using SD.begin(BUILTIN_SDCARD). This built in SD socket uses fast 4 bit native SDIO to access the card. SD cards may also be used via the SPI pins, with SD.begin(cspin), using the slower single bit SPI protocol to access the card.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSPI Flash\u003c\/strong\u003e\u003cbr\u003eFlash memory chips may be added using the SPI pins. These are supported by the SerialFlash and LittleFS libraries.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003ePROGRAMMING\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/store\/teensy36_teensy_loader.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTeensy Loader Application\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eTeensy Loader\u003c\/strong\u003e\u003cbr\u003eProgramming of Teensy's flash memory is done by the \u003ca href=\"https:\/\/www.pjrc.com\/teensy\/loader.html\" target=\"_blank\"\u003eTeensy Loader application\u003c\/a\u003e. 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAutomatic Software Entry to Program Mode\u003c\/strong\u003e\u003cbr\u003eWhile 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eProgram Pushbutton \/ Pin\u003c\/strong\u003e\u003cbr\u003eIf 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReset\u003c\/strong\u003e\u003cbr\u003eAn active-low reset signal allows rebooting, which restarts the program loaded in Teensy's flash memory. This signal is located on the bottom side, on a small pad labeled \"R\".\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBootloader Chip\u003c\/strong\u003e\u003cbr\u003eTeensy 3.5'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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCode Security\u003c\/strong\u003e\u003cbr\u003eFor 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.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eSPECIAL FEATURES\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eNested Interrupt Controller\u003c\/strong\u003e\u003cbr\u003ePriority 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.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDirect Memory Access (DMA)\u003c\/strong\u003e\u003cbr\u003eTeensy 3.5 has a general purpose 16 channel DMA controller. Optimized Audio, LED and display libraries make uses of these DMA channels. A DMAChannel.h abstraction layer is provided. The USB device, USB host, SD card and Ethernet peripherals also have specialized DMA engines built in.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRandom Number Generator\u003c\/strong\u003e\u003cbr\u003eTrue random number hardware is capable of generating random data at (TBD) rate. The Entropy library is used to access the random number generator.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCryptographic Acceleration\u003c\/strong\u003e\u003cbr\u003eHardware support for symetric ciphers (AES, DES) and one-way hash (MD5, SHA1, SHA256) is available. The \u003ca href=\"https:\/\/github.com\/PaulStoffregen\/CryptoAccel\" target=\"_blank\"\u003eCryptoAccel library\u003c\/a\u003e provides functions to access these algorithms.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTemperature Sensor\u003c\/strong\u003e\u003cbr\u003eA built in temperature sensor allows reading the temperature inside the main chip. The \u003ca href=\"https:\/\/github.com\/LAtimes2\/InternalTemperature\" target=\"_blank\"\u003eInternalTemperature library\u003c\/a\u003e can be used to access this sensor.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eDIMENSIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy35_photo1.jpg\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy36.png\"\u003e\u003cbr\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/dimensions_teensy35_photo2.jpg\"\u003e\u003c\/p\u003e\n\u003cp\u003eUser contributed \u003ca href=\"https:\/\/forum.pjrc.com\/threads\/41007-3D-Cad-for-Teensy-3-5-and-3-6\" target=\"_blank\"\u003e3D CAD models\u003c\/a\u003e may be available on the forum.\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eSCHEMATIC\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/schematic36.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eCOMPONENT LOCATIONS\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/www.pjrc.com\/teensy\/parts_placement_teensy35_top.png\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eTECHNICAL DETAILS\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eARM Cortex-M4 at 120 MHz\u003c\/li\u003e\n\u003cli\u003eFloat point math unit, 32 bits only\u003c\/li\u003e\n\u003cli\u003e512K Flash, 256K RAM, 4K EEPROM\u003c\/li\u003e\n\u003cli\u003eUSB device 12 Mbit\/sec\u003c\/li\u003e\n\u003cli\u003e64 digital input\/output pins, 20 PWM output pins\u003c\/li\u003e\n\u003cli\u003e27 analog input pins, 2 analog output pins\u003c\/li\u003e\n\u003cli\u003e6 serial, 3 SPI, 3 I2C ports\u003c\/li\u003e\n\u003cli\u003e1 I2S\/TDM digital audio port\u003c\/li\u003e\n\u003cli\u003e1 CAN bus\u003c\/li\u003e\n\u003cli\u003e1 SDIO (4 bit) native SD Card port\u003c\/li\u003e\n\u003cli\u003e16 general purpose DMA channels\u003c\/li\u003e\n\u003cli\u003eCryptographic Acceleration \u0026amp; Random Number Generator\u003c\/li\u003e\n\u003cli\u003eRTC for date\/time\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.pjrc.com\/teensy\/techspecs.html\" target=\"_blank\"\u003eCompare detailed specifications of all Teensy models.\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ch2\u003eSHIPPING LIST\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1x Teensy 3.5 Development Board with Soldered Pins\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Sparkfun","offers":[{"title":"Default Title","offer_id":45089791279417,"sku":"TEENSY35_PINS","price":47.0,"currency_code":"SGD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0746\/5369\/6313\/files\/teensy-3.5-development-board-with-soldered-pins-1_2.jpg?v=1683955087"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0746\/5369\/6313\/collections\/teensy-4.1-development-board-1_1_62cf8166-ec1d-4dbc-8d78-8bb9e37e2dc7.jpg?v=1781697502","url":"https:\/\/kuriosity.sg\/collections\/teensy-boards.oembed","provider":"Kuriosity","version":"1.0","type":"link"}