An internal workshop on TIVA C microcontrollers
Anshuman Mishra, Sachin Demla, Nikhilesh Prasannakumar
The TIVA C series of microcontrollers from Texas Instruments are a class of ARM Cortex M4F based microcontrollers which are designed around motion, control and communication applications. In order to enable the students of CEDT to use this platform for their future projects, an internal workshop was conducted on the TIVA C series. Hosted by a team of three mentors, it had 20 participants getting familiar with the TIVA Microcontrollers using the TM4C123G Launchpad (http://www.ti.com/tool/ek-tm4c123gxl) and using it to interface with the Voyager peripheral platform developed at the Centre for Electronics Design and Technology (CEDT), NSIT. The primary purpose of this workshop was to enable the participants to learn the platform on their own and not to teach them the nitty gritty of the controller.
The EK-TM4C123GXL is an evaluation kit Launchpad using the TM4C123GH6PM microcontroller targeted at applications involving motion, control and communication, having the following feature set:
- 80MHz 32-bit ARM Cortex-M4F CPU
- 256KB Flash, 32KB SRAM, 2KB EEPROM
- On-chip ROM with drivers and boot loaders
- 2x 12ch 12-bit ADCs (1 MSPS)
- 16x Motion PWM channels
- 24x Timer/Capture/Compare/PWMs
- 3x Analog comparators
- 4x SPI/SSI, 4x I2C, 8x UART
- USB Host/Device/OTG
- 2x CAN
- Low-power hibernation mode
- 43x GPIO pins
The second important material given to the participants was the Voyager peripheral platform, designed and developed at the Centre for Electronics Design and Technology (CEDT), NSIT, Delhi having the following peripherals: The combination of the Launchpad and Voyager equipped the participants to explore the features and the capabilities of the TIVA.
Day 1: August 20th, 2016
* Introduction to TIVA
The workshop started off with an introduction to the TIVA C Series platform and comparison of TIVA with other platforms such as MSP430, highlighting its advantages and disadvantages over others. This discussion focused upon the various features of the controller such as the higher clocking capability (upto 80MHz), various kinds of memory (256KB Flash, 32KB SRAM, 2KB EEPROM), a peek into the various modules available for use, etc.
* Overview of ARM Architecture
This was followed up by an overview of the ARM processor families and the M series processors. The A series, R series and M series of processor architectures and their applications were introduced and differentiated. The participants were made aware about the Thumb and Thumb2 instruction sets. Some concepts of basic computer architecture such as bus system, instruction cycles, etc. were also covered.
* Toolchain setup, Electrical Characteristics and Signal Tables
Setting up of the tool chain was commenced next. The tool chain comprised of an installation of the Code Composer Studio, along with the setting up of the TivaWare library. Alongside that, basic electrical characteristics and the usage of signal tables was explained . This activity continued up till the lunch break.
* System Control Module, Clock System and Program Structure
Post lunch session began with an explanation of the clock system of the controller. The students were familiarized with the various stages and configurations of the system clock and the corresponding controls. They were also, at this point of time, explained how a program code was organized and the various references to be used while developing the code.
* General Purpose Input/Output (GPIO) Module
Hands on approach to interfacing the controller started off with the GPIO Module. After an explanation of the available features of the module, the participants understood and executed various codes such as LED Blinking, Interfacing a pushbutton, etc. To ensure that they had understood the concept, the participants were then asked to develop the code for toggling an LED using an onboard pushbutton.
* Analog-to-Digital Converter (ADC) Module
Once the students were comfortable with the GPIO Module, they were introduced to the 1MSPS ADC Module of the TIVA. After a brief introduction and description of the internal architecture of the ADC, students were explained how to interface with the ADC using the TivaWare Library. The problem statement that the participants were asked to solve was obtaining readings from the potentiometer provided on the Voyager platform. Using this, the debugging features of the Code Composer Studio were also highlighted. The day’s session was wrapped up with the participants being asked to address a particular problem statement viz. calculating the frequency of the output of an astable multi-vibrator using just the GPIO Module.
Day 2: August 21st, 2016
* Revision and doubt clearing session
The day started off with a short discussion on the previous day’s coverage and the problem statement. The discussion spanned a range of topics, clearing doubts of the participants and providing the solutions to the previous day’s problem statements.
* Pulse-Width Modulator (PWM) Module
The PWM module was covered after the discussion. A basic overview of the PWM module organization was followed by the students being taught how to formulate the program code for interfacing the PWM module. The students were asked to control the intensity of the on-board RGB Led using the PWM module.
* UART Module
UART module was started next. In case of UART module, students were explained the basic organization and features of the module. They were then asked to build requisite code for implementing an echo application using the recommended reference material. Encouragingly, with some effort, all of the participants were able to successfully implement the code.
* Timer Module
The next module covered was the Timer module which ran along the similar lines as the UART module. The various modes of operation of the timer module were explained to the students. The example used to demonstrate the timer operation was controlling the intensity of an LED using the Timer in PWM mode and producing a breathing-like effect.
Due to lack of time and seeming fulfillment of the aim of the workshop, it was wrapped up soon after the timer module was covered. The participants were suggested some problem statements involving the use of SSI and I2C Modules to be explored on their own.
The following problem statements were covered over the course of the workshop:
- Blinking an LED
- Using a switch to control the state of an LED
- Toggling an LED using a switch
- Monitoring the potentiometer reading
- Calculating frequency of output of 555 timer based astable multivibrator
- Controlling the intensity of LED using PWM Module
- Implementing breathing effect on LED using Timer Module
- UART echo
- Implementing a Temperature level indicator using I2C based Temperature sensor (LM75) and SPI Shift Register
The students were then asked to implement a problem statement involving the use of 4-digit SSD, User switch, external frequency input and an analog input from the Voyager platform with the TIVA launchpad.