Close
0%
0%

Arduino-Tiva

An Arduino clone based on a TI's TM4C123G (An ARM M4F running at 80Mhz 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 list of shields.

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 the use of 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.

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 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 by using TI's free Code Composer Studio and selecting the EK-TM4C123GXL project configuration.

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

Specifications

(taken from TI's website)

CPU ARM Cortex-M4F
Pin & Package 64LQFP
Flash (KB) 256
DMA Channels 32
EEPROM (KB) 2
Capture Pins 24
Battery-Backed Hibernation Module Yes
Boot Loader in ROM Yes
Digital Comparators 16
SRAM (kB) 32
CCP Timers 24
Max Speed (MHz) 80
Motion PWM Outputs 16
QEI 2
GPIO 43
Operating Temperature Range (C) -40 to 105
USB D, H/D, or OTG OTG
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 ROM, reducing support code size.
  • 32-bit CPU with single-precision FPU
  • Single-cycle multiply instruction and hardware divide
  • 16-bit SIMD vector processing unit
  • Ultra-low power consumption with integrated sleep modes
  • etc... See datasheet for more information


Project Planning

✔ Circuit design (using KiCAD). Programming will rely on the use of an EK-TM4C123GXL dev kit by tapping into its target ICDI JTAG headers.

✔ Board layout, including relocating Energia defined pins to their Arduino form factor locations.

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

✔ Board assembly

✔ Create custom board definition for use in Energia

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

▢ Choose a better name for the board (Boardy McBoardface?)

▢ Small production run if enough people are interested

Pin Mapping

Arduino-Tiva Schematic.pdf

Board schematic

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

Preview Download

  • 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
  • 1 × LG R971-KN-1 LEDs and Accessories / Light Emitting Diodes (LEDs)

View all 18 components

  • A Few More Items Completed

    Jacob3 days ago 0 comments

    I completed verifying all hardware PWM and SPI outputs via CCS. I've been creating individual projects for each tested feature. Shortly I'll post these so that they are available to anyone wanting basic examples of how to get each running. They will of course also work on the EK-TM4C123GXL LaunchPad (minus any pinout conflicts).

  • Working Through PWM API

    Jacob4 days ago 0 comments

    While working trough verifying each function of the chip I've begun to notice that much of the Energia API for hardware features are actually implemented in software (vs. using the on chip hardware). For instance, PWM. The Energia Servo, or PWM, library is actually implemented manually using general purpose timers rather than the integrated PWM module.

    I guess this is fine, but what I'd really like to see is Energia making use of the integrated hardware for these functions. I was tempted to "fix" that and actually spent a few hours attempting to get the TivaC drivers to work in Energia but had no success for PWM. GPIO works though. Ultimately doing this is out of scope for my immediate project so I'll just focus on verifying the rest of the features of the chip and finalize the circuit design and board layout.

  • Hardware Testing Started

    Jacob05/09/2017 at 02:26 0 comments

    Quick update - I've tested all GPIO pins in digital output mode through both Energia and CCS v6.1.1 and All pins are functioning correctly.

    I did some minor rework on the layout by fixing an incorrect pin assignment for D0 and D1 (they were swapped in the schematic) and slightly enlarging the LEGO sized mounting holes and removing the through-hole plating. The holes were exactly 4.8 mm and did not allow for tolerance in LEGO manufacturing. The hole on the board were cutting into a few of the LEGO pieces I tried on it.

    More peripheral testing to come soon.

  • It's Alive!!

    Jacob05/06/2017 at 01:45 0 comments

    I built another board today using only the minimal number of components required to support running the microprocessor. I then tested it and got the same result from LM Flash programmer as I had before - No communication with the board. Surely I had made a mistake in my schematic. I decided to take time later today and hit the forums to see if someone else could spot the mistake.

    I then had a stroke of inspiration. I had left the VDDA and GNDA disconnected on the two boards I tested, thinking they were not important to the initial board bring up. I decided that I should connect them properly and retest. Well... that was the missing element it seems. Taking a look in the datasheet at section 24.6.1 "VDDA Levels", it clearly states

    The POR monitor is used to keep the analog circuitry in reset until the VDDA supply has reached the correct range for the analog circuitry to begin operating. The POK monitor is used to keep the digital circuitry in reset until the VDDA power supply is at an acceptable operational level. The digital Power-On Reset (Digital POR) is only released when the Power-On Reset has deasserted and all of the Power-OK monitors for each of the supplies indicate that power levels are in operational ranges.

    Lesson Learned: Read your chips documentation thoroughly.

    I now have two functioning boards that I can program in Energia and receive serial data over the COMM port monitor. Here are pictures of the the two bards, both in different states of being populated

  • Murphy 2, Me 0

    Jacob05/04/2017 at 20:37 0 comments

    So I sat down to test out the board I build, after removing the 3.3 V regulator, and discovered it was not responding to the debugger. To power it, I was using 3.3 V from the LaunchPad. The LED on my board lit up just fine but the TM4C's internal LDO regulator was not putting anything out on VDDC. I spent a few hours troubleshooting but came up dry. At this point I think powering up the regulator incorrectly caused an electrical problem in the microcontroller.

    Next step: Using the third board, build up another circuit with just the bare essentials needed to operate the microcontroller and attempt to program it. If that works, it confirms that the basic support circuitry is correct in my design. If it does'nt work I'll redesign a barebones board to prove out the base design.

  • Live and Learn

    Jacob05/02/2017 at 17:32 0 comments

      The boards arrived on Saturday. I finally had time to sit down Monday night and begin populating one. Full disclosure, this was my first time doing and fine pitch or SMT work. I began by doing a full electrical test on one of the boards, which it passed. I then decided to start with the TM4C since it was going to be the most difficult.

      I cleaned the pads with IPA 99 then carefully aligned and taped down the IC with Kapton tape. I put down some liquid flux along one edge, put a blob of solder on my iron and dragged the tip across the pins. That worked well, with the exception of a few bridges that were easily remedied with solder wick. I repeated this three more times all of which had good success except for the last row. Evidently while dragging the iron across the pins I must have pressed too hard because I had bent one of the pins over into its neighbor, to which it was soldered.

      I tried flowing solder over it again while bending it back into place with tweezers with no success, except to bend it too far and into its other neighbor. I was left with desoldering the whole IC and straightening the pin, to which I opted to start on another board instead. This time everything went on just fine. So I now have one fully populated board.

      With fingers crossed I plugged in the USB connector. The LED did not light up. I checked for the 5V USB rail. It was there. I checked for the 3.3V regulator output. It was not there. What could possibly be wrong. Did I ruin the component while soldering it down? I decided to take another look at my schematic , end eventually took a look at its datasheet. And there it was, staring me in the face. The part & footprint that I had place in the schematic was the wrong one. I had simply renamed it to be the part I was actually using, which of course had a different pin assignment.

      So now I'm off to fix this issue with some deadbug style soldering. I've fixed the schematic locally, but still need to commit and push it to the git repo.

      Lessons Learned

      1. Practice soldering similar components before attempting it on your actual board.
      2. Double check your datasheets and schematics before sending your boards to the fab shop.

  • Boards Received

    Jacob04/30/2017 at 12:27 0 comments

    I received the boards in the mail yesterday. When I get a chance today I'll take a picture of them to post. At some point this week I'll do a basic electrical test and begin to populate one.

  • Boards are on the way back

    Jacob04/27/2017 at 00:49 0 comments

    I was just notified by OSH Park today that they received the panel containing my boards from the fabricator. They also shipped them out today and are expected to arrive here by Saturday. Yay!

  • Completed Initial Pin Mapping

    Jacob04/25/2017 at 23:23 0 comments

    I just completed the first pass through the pin map file, "pins_energia.h". The next step is to test it on LaunchPad board to see if all pins were successfully remapped.

    I'm also beginning to compile a list of hardware changes for the next revision.

  • Preliminary Energia 3rd Party Hardware Files

    Jacob04/21/2017 at 20:13 0 comments

    The preliminary Board Manager files are up on hackaday.io (under this project of course)

    This is a derivative of the Energia's official package index, found here: https://github.com/robertinant/energia-package-index. All I did was strip it down to lm4c123 support and edit where appropriate. I have successfully installed it via the Board Manager, compiled a test program, uploaded and ran it on my EK-TM4C123GXL board.

    Next step is to remap the pins in pins_energia.h to match my layout. Then I'll take a look at the library source code to try and expand capability to utilize all peripherals.

View all 11 project logs

View all instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

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