close-circle
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
close
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 »

package_arduino-tiva-board-1.0_index.json

Release version 1.0. Fully functioning for Arduino and Energia on Windows

JavaScript Object Notation (JSON) - 3.92 kB - 06/16/2017 at 20:02

download-circle
Download

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

download-circle
Download

Arduino-Tiva Schematic.pdf

Board schematic

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

eye
Preview
download-circle
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

  • 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 2 comments

    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.

  • Small Progress - Energia Not Necessary

    Jacob06/02/2017 at 03:11 0 comments

    Tonight I just finished creating a JSON index file for the Boards Manager that is compatible with both the Arduino and Energia IDEs. I've successfully tested compilation and flashing through both IDEs. For some reason the current JSON index file was only compatible with Energia, and would cause Arduino IDE to throw java null pointer exceptions. After reworking the file it's properly parsed by both IDEs.

    Something learned along the way:

    When building a custom JSON index file for theBoards Manager, toolsDependencies.packager should match the top level packages.name value where the tools are described.

    For instance when building the new file I had to make in order to have arm-none-eabi-gcc compiler and dslite flasher installed along with this board.

    packages.platforms.toolsDependencies.packager = packages.name
    I'll post the new JSON in the file section here for anyone interested in seeing a working example.

View all 22 project logs

View all instructions

Enjoy this project?

Share

Discussions

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