Close
0%
0%

Roadrunner (the Arduino-Tiva)

An Arduino clone based on a TI's Tiva TM4C123G (An 80Mhz ARM M4F with USB OTG)

Similar projects worth following
Project Goal

The goal of this project is to build a bridge between Texas Instrument's Tiva™ C LaunchPad, based on the TM4C123GH6PM, and the Arduino form factor. The LaunchPad series of development kits already benefit from an Arduino-like code development environment in the form of Energia, but lack a compatible form factor to make use of the extensive shield ecosystem.

This project aims to merge these two worlds by putting the processing power and integrated peripheral set of the 80-MHz ARM M4F based TM4C123 series of micro controllers into the Arduino-Leo (and Uno, Duemilanove, Due, *Mega) compatible form factor. This will provide typical Arduino users with a much more powerful board while maintaining a familiar programming environment (through either Arduino IDE or Energia). It's also a platform for those wanting to grow beyond this basic development approach into a more low-level IDE by using TI's free Code Composer Studio and selecting the EK-TM4C123GXL

Project Goal (the challenge & solution)

The goal of this project is to build a bridge between Texas Instrument's Tiva™ C LaunchPad, based on the TM4C123GH6PM, and the Arduino form factor. The LaunchPad series of development kits already benefit from an Arduino-like code development environment in the form of Energia, but lack a compatible form factor to make use of the extensive list of shields.

This project aims to merge these two worlds by putting the processing power and integrated peheripherial set of the 80-MHz ARM M4F based TM4C123 series of micro controllers into the Arduino-Leo (and Uno, Duemilanove, Due, *Mega) compatible form factor.

This will provide typical Arduino users with a much more powerful board while maintaining a familiar programming environment (through the use of Energia). It also provides a platform for those wanting to grow beyond this basic development approach into a more low-level IDE (with breakpoints and stepping) by using TI's free Code Composer Studio and selecting the EK-TM4C123GXL project configuration.

I have a target retail cost of $20 per board, but it'll only get there if the demand is there. For the three I built, the cost per board was about $34 with the majority of the cost attributed to the TM4C123 and board fabrication. Volume pricing can cut that by more than half.

*The board breaks out all pins, but only utilizes the basic set of headers to maintain a 2" x 3" form factor.

Project Planning / Features List

✔ Circuit designed using KiCAD

✔ Initial method of programming using an EK-TM4C123GXL dev kit by tapping into its target ICDI JTAG headers

✔ Board layout. Includes placing pins such to be compatible with the Arduino form factor

✔ Board Fabrication (sent to OSH Park 4/16/2017)

✔ Board assembly (2 completed)

✔ Create custom pin map for use in Energia

✔ Be able to compile and flash over LaunchPad in Arduino and Energia IDE's

✔ Add USB Virtual COM enumeration to base sketch

✔ Hook in bootloader init to VCOM connection at 1200 baud

✔ gcc compiler support for Arduino and Energia in

✔ Windows 10
✔ Ubuntu 16

✔ USB DFU flashing support for Arduino and Energia in

✔ Windows 10
✔ Ubuntu 16 (working with just a few intermittent bugs to work out)

▢ Hardware testing and verification

▢ I2C using integrated ROM drivers
▢ CAN using Arduino API and integrated ROM drivers
✔ I2C using Arduino API
✔ GPIO using Arduino API and integrated ROM drivers
✔ ADC using Arduino API and integrated ROM drivers
✔ PWM using Arduino API and integrated ROM drivers
✔ SPI using Arduino API and integrated ROM drivers
✔ Serial using Arduino API and integrated ROM drivers

✔ Choose a better name for the board (see comments below)

▢ Small production run if enough people are interested

Probability of a World Changing Event

I suspect this will revolutionize hacker spaces everywhere. As the complexity and computational requirements of projects grow the basic Arduino just won't cut it any longer. This board is the next step in terms of performance, flash and memory size, low power modes, and low cost development and debug options. Will this solve world hunger? Not by itself. But maybe someone, somewhere, will use it to that end.

Specifications

(taken from TI's website)

CPU ARM Cortex-M4F
Pin & Package 64LQFP
Max Speed (MHz) 80
Flash (KB) 256
EEPROM (KB) 2
SRAM (kB) 32
GPIO 43
USB D, H/D, or OTG OTG
DMA Channels 32
Battery-Backed Hibernation Module Yes
Boot Loader in ROM Yes
Operating Temperature Range (C) -40 to 105
Digital Comparators 16
Capture Pins 24
CCP Timers 24
Motion PWM Outputs 16
QEI 2
SSI/SPI 4
I2C 4
UART 8
ADC Channels 12
ADC Resolution (Bits) 12
CAN MAC 2
SysTick Yes
SPI 4

Other notable parameters

  • Most GPIO are 5V tolerant
  • Peripheral libraries are pre-loaded onto on-board...
Read more »

boot_usb.tar.gz

example for DK-TM4C123G, which has a TM4C123GH6PGE, but has been modified to run on the TM4C123GH6PMI

gzip - 119.56 kB - 04/08/2018 at 18:02

Download

sheet - 11.37 kB - 05/26/2017 at 03:53

Download

Arduino-Tiva Schematic.pdf

Board schematic

Adobe Portable Document Format - 131.70 kB - 05/06/2017 at 10:30

Preview
Download

  • 1 × TM4C123GH6PMI7 IC MCU 32BIT 256KB FLASH 64LQFP
  • 1 × LM1117IMPX-3.3/NOPBCT-ND Power Management ICs / Linear Voltage Regulators and LDOs
  • 1 × 10118192-0001LF Connectors and Accessories / Telecom and Datacom (Modular) Connectors
  • 4 × CL21A226MOCLRNC CAP CER 22UF 16V X5R 0805
  • 1 × GRM188R61C225KE15D Capacitors / Ceramic

View all 18 components

  • Tentative Rev. 2

    jlbrian703/30/2018 at 23:31 0 comments


    ROADRUNNER
    Mouser # Mfr. # Manufacturer Customer # Description
    595-TM4C123GH6PMI TM4C123GH6PMI Texas Instruments ARM Microcontrollers - MCU Tiva C Series MCU
    512-FDMA1024NZ FDMA1024NZ ON Semiconductor MOSFET 20V Dual N-Channel PowerTrench
    649-10118193-0001LF 10118193-0001LF FCI / Amphenol USB Connectors 5P MICRO USB TYPE B RECEPTACLE W/ PEGS
    621-AP2112K-3.3TRG1 AP2112K-3.3TRG1 Diodes Incorporated LDO Voltage Regulators 600mA CMOS LDO 50mA 3.3V 250mV
    611-KMR421NGLFS KMR421NG LFS C&K Switches Tactile Switches Tact
    517-2908-05WB-MG 2908-05WB-MG 3M Memory Card Connectors MICROSD 8P P/P SMT POLARIZED
    604-AP1608SRCPRV AP1608SRCPRV Kingbright Standard LEDs - SMD RED WATER CLEAR
    604-APT1608SGC APT1608SGC Kingbright Standard LEDs - SMD GREEN WATER CLEAR
    604-APT1608QBC/D APT1608QBC/D Kingbright Standard LEDs - SMD Blue 470nm Water Clear 100mcd
    594-MCT06030C1002FP5 MCT06030C1002FP500 Vishay Thin Film Resistors - SMD .1W 10Kohms 1% 0603 50ppm Auto
    603-RC0603FR-071ML RC0603FR-071ML Yageo
    520-.327-12.5-13FLXC ECS-.327-12.5-13FLX-C ECS Crystals 32.768KHz 12.5pF 10ppm -40C +85C
    449-LFXTAL035945REEL LFXTAL035945Reel IQD Frequency Products Crystals 16MHz 18pF -10C 60C
    667-EXB-V8V750JV EXB-V8V750JV Panasonic Resistor Networks & Arrays 75 OHM 5>#/td###
    667-EXB-38V103JV EXB-38V103JV Panasonic Resistor Networks & Arrays 10K OHM 5>#/td###
    710-885012006002 885012006002 Wurth Electronics Multilayer Ceramic Capacitors MLCC - SMD/SMT WCAP-CSGP 10pF 0603 5% 10V MLCC
    77-VJ0805Y105KXQTBC VJ0805Y105KXQTW1BC Vishay Multilayer Ceramic Capacitors MLCC - SMD/SMT 0805 1uF 10volts X7R 10>#/td###
    963-LMK212BBJ226MG-T LMK212BBJ226MG-T Taiyo Yuden Multilayer Ceramic Capacitors MLCC - SMD/SMT 22uF 10V X5R +/-20% 0805 Gen Purp
    710-885012106011 885012106011 Wurth Electronics Multilayer Ceramic Capacitors MLCC - SMD/SMT WCAP-CSGP 2.2F 0603 20% 10V MLCC
    603-CC603JRNPO9BN240 CC0603JRNPO9BN240 Yageo Multilayer Ceramic Capacitors MLCC - SMD/SMT 24pF 50V NPO 5>#/td###
    710-885012105018 885012105018 Wurth Electronics Multilayer Ceramic Capacitors MLCC - SMD/SMT WCAP-CSGP 100000pF 0402 20% 25V MLCC
    859-LTST-G563EGBW LTST-G563EGBW Lite-On Standard LEDs - SMD SMD LED Red/Grn/Blue 840/2100/420 mcd

  • Progress Update

    Jacob09/07/2017 at 10:07 1 comment

    I've completed the little side project, a MOSFET switched LED indicator board. I was able to practice using hot air to solder the components all at once. This project gives me confidence that the LED circuit will work as expected in revision 2 of the Roadrunner and that I can use hot air to solder the components. That last part will be a huge time saver!

    I'll have the boards fabricated within the next month or so as time allows. And after the usual round of testing I think I'll be ready to begin offering them to those interested.

  • Detour Project

    Jacob08/05/2017 at 20:01 0 comments

    Have you ever been in the middle of testing some DIY thingy and though to yourself, "It wish I had a ____ to help me test this". So while I was testing all the pins on this board I thought it would be nice to have a simple board with LED's I could plug into the headers to help testing go faster. I also wanted to add more LED's to the new board revision and properly make use of MOSFETs to drive them, instead of sourcing current directly from the μC. So I decided to whip up a simple board with 4 LED's driven by MOSFETs. So I came up with the "Nibbler". I'll probably post a quick project page documenting this. I'll also get to try soldering some 1208 resistor arrays.

  • Board Layout Update v1.1.2

    Jacob07/31/2017 at 20:10 0 comments

    I decided to make a few more modifications to the board. I wanted to simplify component placement so I switched some of the single resistors over to resistor arrays, specifically on the LEDs. I also decided to drive the LED's properly by using MOSFET switches instead of directly from IO pins.

    I still need to update my pin out diagram and modify the pin assignment in the software, but that can wait until I actually spin a few of these for testing.

  • Board Layout Update

    Jacob07/20/2017 at 02:54 0 comments

    I've just about completed reworking the layout to be fully pin compatible with the Uno / Leonardo pin layouts. Additionally I've reorganized the extra pins at the bottom of the board and added some custom artwork.

    These are renders of what the finished layout will most likely look like. I've spent enough time tweaking.

  • Linux Flashing Works

    Jacob07/01/2017 at 01:47 0 comments

    I just finished getting the flash tool running on Linux (Ubuntu 16.04 LTS). Github has been updated with the most recent changes. It's works most of the time, but sometimes the board fails to switch into DFU mode and sometimes fails to switch out of it. Not sure if this is a Linux or Tiva software issue yet.

    The code for both targets of tiva-dfu-prog need to be cleaned up. Since they are both based on existing oss tools they each have a lot of "leftovers" in their baselines that could be removed.

    The Linux tool is based on "dfu-util" and the windows version is based on "dfuprog" from TivaWare. Both of the parent projects were converted to c++ and compile with c++11 libraries, since I enjoy the niceties of that language. After cleaning up the code and comments I'll tag each repo.

  • Flashing in Arduino / Energia IDE Complete

    Jacob06/16/2017 at 19:41 1 comment

    I've just completed building, integrating and testing the custom DFU programmer in doth Arduino and Energia. I'll publish the board manager JSON file and support packages to github shortly. I'm pleased with how relatively smooth the integration went. I've learned a lot about integrating custom board support packages into Arduino along the way and will do a write about the process soon since I found it convoluted at first myself.

    The only thing left to do before releasing this into the wild is to add Linux support and do some minor fixes to the board layout.

    If this was crowdfunded for small run of 100 boards, probably priced at $30, would you be in?

  • Flashing in Windows - Progress

    Jacob06/15/2017 at 04:35 0 comments

    I've almost completed putting together the program to initiate DFU mode and flash the board from within Arduino / Energia. It's pieced together from source code provided by TI in their TivaWare sdk. This will be a Windows only flashing tool customized to the boot loader process of this particular board. I've not begun the Linux side yet, but my research tells me that it will be a much easier task. I believe "dfu-util" will work for it with only minor modifications.

  • Now with built in USB Virtual COM support

    Jacob06/10/2017 at 03:08 0 comments

    I'm claiming 95% success in adding USB VCOM support right out of the box. This means the base Arduino sketch will run with USB VCOM enabled. This allows the board to be powered by USB and enumerate as a virtual com port, even with an empty sketch. In practice, it's modeled after the HardwareSerial class, which instantiates an object called "Serial" object before jumping in "loop()" and running the user sketch. This new class creates an instance called "USBSerial".

    So when connected by SB to a host you can use USBSerial.print(), USBSerial.println(), etc to send /receive data over the virtual com port. Additionally, calls to Serial.print, etc. still work, but are tied to the physical pins on the board. If using a TivaC LaunchPad, calls to Serial go over its enumerated debug com port.

    The 95% success is due to the way the boot loader is initiated currently. It works, but not as well as I would like.

    Next Steps: Modify Arduino IDE to initiate boot loader mode after compiling, then upload over the DFU endpoint.

  • USBlib in Arduino and Energia IDE

    Jacob06/07/2017 at 22:32 0 comments

    After spending a long ninght working through the Arduino IDE compile options, I was able to add support for TI's USBlib, which is used as part of the boot loader trigger. I decided to emulate he Arduino Loenardo boot loader process. This board appears as a USB VCOM port and connecting to it at 1200 baud causes it to switch into USB DFU mode.

    Once I get DFU flashing working from the IDE's I'll post an update to the board package and corresponding json index file.

View all 23 project logs

View all instructions

Enjoy this project?

Share

Discussions

Rupert Hirst wrote 10/12/2018 at 22:02 point

I like ShieldMaiden :)

  Are you sure? yes | no

ajaymills wrote 01/07/2018 at 03:25 point

Hi, really neat project. I'm trying to test it on Tiva Launchpad w/ TM4C123 + Energia, but am getting some odd results...some may be bugs, some may be my lack of understanding. Here's what I did:

1) Pulled the package into Energia

2)Wrote this simple code:

void setup() {
  // put your setup code here, to run once:
 Serial.begin(115200);
 Serial.println("Hello from ICDI DEBUG VCOM!");
 USBSerial.println("Hello from Tiva Device USB VCOM!");

}

3) Exported bin thru Energia, and used LM Flash Programmer to load it onto the Launchpad over ICDI/debug USB port. After hitting reset button, I see "Hello from ICDI DEBUG VCOM!" in Energia serial monitor (Good!)

4) Switch cable to "USB Device" port, and get COM4 device in Windows. Used "Upload" button--it appears to work as intended.

5) Open serial monitor and hit reset button--nothing is printed! (I expected: "Hello from Tiva Device USB VCOM!"). I also noticed trying to change baud rate raises an error:

java.io.IOException: jssc.SerialPortException: Port name - COM4; Method name - setEventsMask(); Exception type - Can't set mask.

Any thoughts?

  Are you sure? yes | no

Jacob wrote 01/16/2018 at 14:01 point

Hey, sorry it took so long to answer. The issue is in the time it takes for the VCOM device to configure. Putting USBSerial.println in the loop will give output on com4.

void setup() {

  // put your setup code here, to run once:
 Serial.begin(115200);
 Serial.println("Hello from ICDI DEBUG VCOM!");
}

void loop() {
  // put your main code here, to run repeatedly: 
  USBSerial.println("USB VCOM in the loop");
  // short delay needed so USB buffer clears. 
  delayMicroseconds(50000);
}

  Are you sure? yes | no

EngineerAllen wrote 07/30/2017 at 15:22 point

looks like a very powerful capable (and expensive) mcu

wouldnt be fair to compare to arduino

more like alternative to teensy

whats your comparison to teensy 3.2?

apart from physical size

  Are you sure? yes | no

Jacob wrote 07/31/2017 at 19:51 point

Good question. Let me do a little research...

At first blush they are very similar. The Freescale chip does have a few extras such as twice the SRAM, an A/D and an I2S port. It lacks the FPU and runs a little slower and has fewer peripherals than the TI chip. It's also priced about 40% less than the chip I chose, which seems to be due to it not having and FPU. If you step up to the K8x family you get the FPU and a 150MHz clock speed for about the same price as the TI chip ($10.25 at Arrow).

The TI chip has all its drivers loaded into on board ROM which helps keep user applications to a minimum size and has a few more IO pins and more of all peripherals, except A/D inputs. They also offer their commercial IDE free for 

You are right about a fair comparison, but given the format of the board I thought it was appropriate.

  Are you sure? yes | no

EngineerAllen wrote 08/05/2017 at 19:04 point

i also have more powerful (almost a beast) teensy 3.6

(which has fpu)

https://www.pjrc.com/teensy/techspecs.html

  Are you sure? yes | no

Jacob wrote 08/05/2017 at 19:42 point

Yeah, I looked into that one as well and it's in the next category for speed and features. It's beefyness is there to support 100Mb Ethernet.

  Are you sure? yes | no

Jacob wrote 06/02/2017 at 03:21 point

It's about time I came up with a proper name for this thing since Tiva is actually trademarked. Any suggestions?

Some ideas I am throwing around are:

TI-M4U

Armchair

ShieldMaiden-4U

Ollie Board

Easy ARM

Armduino

ARTI 256 (ARduino-TIva 256K)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates