
Explore microcontroller programming for power electronics engineers using the Texas Instruments TMS320 F2069 and Code Composer Studio. Learn to read Texas Instruments documentation and master PWM, ADC, and timer peripherals.
Identify the course’s target audience and explain why C programming on the Texas Instruments TMS320 F28069 microcontroller is essential over graphical tools for hardware and firmware roles in power industry.
Set up a home lab with the f28069 kit (dock or launchpad) and a two-channel oscilloscope to run live microcontroller coding and pulse width modulation demonstrations.
Explore Texas Instruments microcontrollers with free tools like Code Composer Studio and C2000, and access documentation and application notes for the F28069 and power factor correction.
Set up the working environment with Code Composer Studio and the C2000 wear package, connect a microcontroller kit, and run a sample project to verify setup and safety.
Download and install Code Composer Studio from Texas Instruments, opting for the C2000 MCU options and a custom installation. Launch the IDE, set a workspace, and restart to load drivers.
Learn to install the C2000Ware package for the f28069 microcontroller, including restricted software registration, a download link, and setup with device drivers, libraries, and peripheral examples alongside Code Composer Studio.
Download the datasheet, absolute maximum ratings, and recommended operating conditions for the C2000 microcontroller. Review the user guide and application notes to guide use of the LaunchXL F28069 kit.
Explore the contents of C200Ware in Code Composer Studio, including device support, examples, headers, and linker files, and learn to read and use peripherals and memory mappings for the F2806X.
Set up the TMDSDOCK28069 kit by inserting the control card into the docking station and securing it. Learn USB serial access, 3.3V power, and GPIO/ADC pin usage (16 channels).
Explore the launchxl-f28069 kit using its pin diagram and pin map, and learn gpio, adc, and pwm operations with usb serial and code composer studio, ready to use.
Power the tm ds dock f28069 kit, connect via usb, verify the xds probe, and run timed led blink example in code composer studio to see the red led blink.
Test the launchxl-f28069m kit using Code Composer Studio to import and run the timed LED blink example. Verify USB communication and observe the LED blink after download.
Develop safe, practical electronics habits for beginners: analyze twice, energize once, use simulations, and check current and voltage limits in a low-cost home lab.
Begin by building your own microcontroller project from scratch, configuring GPIO pins as digital outputs, and changing their state using C, while wiring LEDs on an external breadboard.
Explore the microcontroller architecture and peripherals, including pwm, adc, gpio, timers, and the enhanced pwm module, for power electronics. Learn to implement grid-connected control loops and timing with multiple rates.
Explore the Code Composer Studio environment and the project structure, including dot cmd linker command files, RAM memory layout, and how code security and ramlink guide placement.
Explore how the f2806x non-bias linker command file maps peripheral registers into RAM, explains memory pages, and links data structures and timers for non-bios microcontroller applications.
Explains how ram is divided into pages and segments, with secure and non-secure regions, guiding the compiler. Describes how linker and header files map peripherals and registers to ram.
Explore the timed led blink project structure by examining main.c, headers, and helper modules, and learn how initialization, system control, and gpio configuration enable interrupt-driven led timing.
Configure gpio pins as digital outputs using per-port multiplexer registers and a direction register. Port a (gpio 0–31) and port b (gpio 32–58) split the pins, with some reserved for host communication.
Explore configuring gpio pins for digital outputs by using mux and direction registers across gpio ports a and b, referencing the gpio map pdf and reset to zero behavior.
Explore how C data types, especially unsigned integers (uint16, uint32), and hex notation map to microcontroller registers, and how structures and unions organize hardware bit patterns.
Discover how a single DSP28x_project.h include pulls in the common include and headers include directories, providing all F2806X device definitions and GPIO prototypes for microcontroller programming.
Learn how to read source code by navigating gpio register definitions in the F2806X header files, identify gpio mux settings, and map data types to peripheral bits.
Understand how GPIO header defines control registers via extern volatile structures and unions, and learn to read it bottom-up to locate bit fields and set pins as input or output.
Change a gpio pin level using data registers, and drive pins high or low with the set and clear registers, or toggle states with the toggle register.
Explore how the Gpio data registers—data, set, clear, and toggle—control pin 34 as an output, and relate this to the Gpio header file’s unions and bit fields.
Set up a new Code Composer Studio project for the f28069 device, create an empty main.c, configure linked resources, and add include paths to TI header files.
Fix project dependencies by adding the F28069 Ram link cmd file and F2806 headers non-bias, then configure gpio pins for a simple blink test in a clean build.
Toggle GPIO pins to drive LEDs with proper polarity and current-limiting resistors, using three pins and LEDs for visual indications while avoiding direct pin-to-ground connections.
Configure GPIO pins and protected registers to drive LEDs; learn to set GPIO directions, use e allow/e disallow, and apply set, clear, and toggle operations for outputs.
Configure gpio pins as digital outputs, download and run code on the TMDSDOCK28069 kit, and observe leds respond to GPA set and GPA clear.
Drive three Gpio output pins on the LaunchXL F28069 kit to illuminate red, blue, and white LEDs, validating high and low states through compile, download, and debug steps.
Explore how gpio pins serve as digital inputs for user kill switches and fault feedback in power electronics, and why specialized peripherals are usually preferred.
Conclude the module by mastering gpio setup, decoding header files and data structures in Code Composer Studio, and validating a hands-on leds project on a breadboard.
Configure timers for precise sampling in digital control, and learn to handle interrupts with the tms320 f28069's three cpu timers, using the led blink example to code from scratch.
Explore how digital control relies on discrete sampling at precise intervals, balancing sampling frequency, Nyquist criteria, and jitter using multiple timers and interrupts in the Tms320 F28069.
Configure the system clock via the init system control function, select internal oscillator one, and set the PLL to reach 90 MHz while monitoring missing clock detection for reliability.
Outlines initSysCtrl: disable watchdog, keep internal oscillator one active, turn off other clocks, configure the phase-locked loop for 90 MHz from 10 MHz, and ensure clock stability.
Configure and use three 32-bit CPU timers on the F28069, understanding clock out, PCLCR3, period (PRD), and prescaler (PSC/DDR) to shape interrupts.
Explore how timer interrupts are delivered to the processor: direct T1/T2 and via the PIE module for T0, with priority, IFR, and ISR flow.
Create and populate the pi vector table for the f28069, assign 32-bit default dummy addresses to all 96 interrupts, then map your interrupt service routines to the correct entries.
Explore the blink example using CPU timer zero for 500 millisecond period and configure the pi module and interrupt setup. Navigate technical docs to connect vector table with timer behavior.
Explore how the pi vector table is defined as a table of 32-bit addresses to interrupt service routines, populated by TI's helper and dummy ISRs, then enabled for use.
Learn how to initialize the pi vector table and assign interrupt service routines, then configure the F2806X CPU timers, including timer zero registers, period, and reload behavior.
Configure the CPU timer zero by setting the period and prescale, stopping and reloading, enabling its interrupt, and wiring it through the PI module and vector table.
Configure the pi vector table and cpu timers (0-2) by enabling clocks, adding pi vector.c and default ISR.c, and setting periods to toggle gpio 12 at 50 Hz.
Set cpu timer zero to free run mode, disable the prescaler, and set prescale to zero; extend the same to timers one and two to achieve 1.5-second intervals.
Configure timer zero interrupts in the Pi module, enable group one, write isrs to toggle gpio 12, 20, and 32, and handle flag clearing and acknowledge bits.
Perform a clean build to identify bugs in a microcontroller project. Fix union assignment errors by accessing members (tdr, ddr), correct operator spacing, and recompile in Code Composer Studio.
Explain how to download and run code on the TMDSDOCK28069 kit, verify LED timing with timer zero at 0.01 seconds, and observe oscilloscope waveforms while debugging interrupts and cleanup.
Demonstrate code execution on the LAUNCHXL-F28069 kit by wiring gpio pins to leds, downloading code, and observing timer-driven flashes; learn to manage interrupts, clear flags, and acknowledge bits for operation.
Review how system clock, phase-locked loop, and init system control configure timers, interrupts, Pi module, then configure three cpu timers with speeds and gpio isrs toward enhanced pulse width modulation.
Explore the enhanced PWM module in the f28069, with its submodules and configuration options that enable flexible gating signal generation for diverse power electronics applications.
Explore the eight enhanced ePWM modules on the f28069, focusing on the time-based submodule for carrier generation and PWM frequency.
Explore the time base submodule of the PWM module to generate a carrier waveform with a 16-bit counter, including period and mirror registers, shadow mode, and counter directions.
Browse and select the ePWM example project in the TI C2000 examples, import the PWM timer and trip zone examples, and study interrupt setup and vector table initialization.
Explore configuring the ePWM time-base sub-module registers, including the TB CTL counter mode, DBD load, ETCTR0 event triggers, and interrupt setup, while noting synchronization and clock division options.
Explore the ePWM header file to understand the structure of the ePWM registers, including unions and bit fields, and learn to map header definitions to the documentation.
Explore the ePWM interrupt service routine, learn how to enable group three interrupts, clear the interrupt flag, and integrate this with the PWM initialization and vector table setup.
Set up a two-channel ePWM interrupt project on a f2806x microcontroller, configuring 2000 Hz and 4000 Hz PWM and toggling GPIOs 12 and 20 via interrupts.
initialize an epwm interrupt project by adding the required header and source files, enabling the pwm clock, configuring the vector table, and defining two interrupt service routines.
Configure the EPWM1 module by setting time-based and event-trigger sub-modules, adjusting TBCTL and TBPRD for a 2000 Hz time period, and enabling interrupts on counter zero via ETSEL and ETPS.
Configure the ePWM module two with a 4000 Hz period and a free-running sawtooth waveform, then enable group three interrupts in the pi module via the vector table.
Implement the ePWM interrupt ISR, toggle GPIOs 12 and 20, clear the event trigger flag, acknowledge group three interrupts, then compile and download to a microcontroller kit.
Download and run code on the TMDSDOCK microcontroller, observe PWM1 at 2000 Hz and PWM2 at 4000 Hz with an oscilloscope, and learn to clear interrupt flags.
Explore generating a triangular ePWM carrier using an up-down counter and divided period to produce interrupts per pwm cycle for dc-ac applications.
Understand the counter comparison module that links the timer counter with two 16-bit compare registers, cmpa and cmpb, including shadow mode, load timing, and pwm gating signal generation for modulation.
Explore the action qualifier submodule that generates gating signals for two pwm outputs. It combines the time-based counter with cmp a and cmp b to control pins a and b.
Set up a new ePWM project, configure action qualifier registers for EPWM1A and EPWM1B, and generate sawtooth and triangular gating signals for power electronics.
Map gpio 0–3 to ePWM pins (pwm1a, pwm1b, pwm2a, pwm2b) and enable interrupts for synchronized full-bridge operation. Configure cmp registers and start with static duty, then demonstrate dynamic updates.
Configure ePWM gating signals with compare registers on two PWM modules for a 50% duty ratio. Use global period variables and a cleanup-enabled ISR, with the action qualifier driving pins.
Implement an interrupt-driven controller for two ePWM channels, generating duty ratios, saturating them, and loading scaled CMP values into 16-bit registers.
Watch how a simulated controller sets a 0–1 duty ratio, converts it into CMP values, and gates complementary ePWM signals on the TMDSDOCK28069 while debugging in Code Composer Studio.
Learn to implement ePWM gating signals on the LAUNCHXL-F28069 kit, tune duty ratios for two PWM channels, and observe complementary waveforms with an oscilloscope.
Explore ePWM gating for DC-AC converters using sine-triangle modulation, switching from up-count to up-down mode, configuring CMP registers, and converting AC modulation to a DC-like control via offset and scaling.
Learn how the dead band generator prevents shoot-through by inserting rising edge delays between gating signals and by configuring mode and inversion options for safe, complementary gating.
Develop a deadband generator in a pwm project for a dc to ac converter, using the deadband submodule and epwm configuration, by importing the example and configuring the f2806x kit.
Consult device docs to set the deadband and dead time; convert five microseconds to 225 clock cycles at 45 MHz, and set DB red and DB fed within 10-bit.
Verify the dead band by implementing rising edge delays on PWM outputs with the TMDSDOCK28069 kit, and observe the gating signal delays on channels A and B.
Execute the dead band project on the LAUNCHXL-F28069 kit to observe a measurable dead band between pwm outputs, adjust modulation index, and learn gating to prevent shoot-through in power converters.
Synchronize pwm timer clocks across multiple EPW modules on the TMS320F28069 to produce identical carrier waveforms, using tb clock sync and phase shift control for multi-leg converters.
Learn how phase shift control generates pulse widths for a 50% duty full-bridge by phase shifting two carrier waveforms, including phase advance and phase delay with EP module synchronization.
Master phase shift synchronization for a full bridge converter by configuring a single PWM with sawtooth modulation, aligning EP1 and EP2 m2 timers, and implementing deadband.
Learn to synchronize epw pwm modules by configuring time-based control, phase registers, and phase enable, using cmp a/b to implement phase delay or advance while maintaining a 50% duty cycle.
Compile the microcontroller project, add required files, and prepare for downloading to kits, while managing phase angle by converting negatives to positives and loading dbfs for synchronization.
Execute phase-shift experiments on the TMDSDOCK28069 kit by downloading the code, configuring PWM outputs, and adjusting a global phase angle to observe aligned and phase-shifted waveforms.
Download the code to the launchxl-f28069 kit and observe how phase angle shifts two pwm carriers. Experiment with 0.3, 0.8 and -0.5 values to study synchronization and cascaded h-bridge concepts.
Configure the trip zone submodule of the pwm module to respond to fault feedback via tz1, tz2, tz3, using one-shot or cycle-by-cycle trips, with configurable pin actions and interrupts.
Create a new trip zone project from the dead band example, connect the microcontroller kit, and configure TZ1 on gpio 12 for a one-shot trip and pwm control.
Configure trip zone interrupts in group two by linking tz1 and tz2 isrs to ep1 and ep2, enable two pi interrupts, and set gpio 12 as a trip zone input.
Identify lr protected registers and apply yellow protection to the trip zone, then add required files and compile to generate trip zone dot out.
Execute the trip zone submodule on the TMDSDOCK28069 by configuring gpio12 as a trip input, applying a fault signal, and observing pwm waveforms shut off.
Operate the trip zone project on the launch Excel F28069 kit by using GPIO 12 as an active-low input to simulate faults and observe PWM pulses.
We conclude this section by reviewing pwm timing, dead-band, synchronization, phase-shift strategies, and fault trip capabilities, while highlighting the adc module as the core of closed-loop control.
Master the adc module as the backbone of closed-loop control, converting feedback sensor signals into precise data for multiple control algorithms with pwm and timer integration.
Unlock the adc module overview for the F28069, featuring 16 analog inputs (a0–a7, b0–b7) with 0–3.3v range and 12-bit results. Learn about SOC, EOC, result registers, interrupts, and simultaneous sampling.
Initiate ADC conversion by triggering a start of conversion signal from EAP modules and CPU timers. Configure two SoC signals in the EPW module for timing within PWM cycles.
Configure ADC channels to listen to SoC signals from PWM, timer, or GPIO sources, enabling sequential or simultaneous sampling of 16 analog inputs with configurable SoC mappings and priorities.
Explore how analog to digital conversion proceeds in a round robin scheme driven by soc signals, with sequential or simultaneous sampling and end-of-conversion results stored in adc registers.
Learn how end-of-conversion signaling occurs in the ADC, how EOC interrupts are scheduled per channel, and how continuous versus discontinuous modes and overflow handling affect real-time control.
Learn to generate safe mock analog signals for a 3.3 V adc using a gpio-driven pwm and an rc network with level shifting and saturation, keeping input within 0-3.3 V.
Set up a complete ADC project by combining the deadband PWM example with a timer-driven two-signal generator, preparing two RC circuit sawtooth inputs for two ADC channels.
Compile the ADC starter project by adding necessary control and vector files, then download to two microcontroller kits to verify rectangular and sawtooth waveforms before starting the ADC setup.
Demonstrate creating analog waveforms with the TMDSDOCK28069 using RC circuits and resistor dividers, observe them on an oscilloscope, and prepare to feed them into the ADC converter.
Demonstrate analog waveform generation on the LAUNCHXL-F28069 using GPIO 12 and GPIO 20 with RC and resistor-divider circuits, observe sawtooth and ripple on an oscilloscope, then feed into the ADC.
Initialize the adc module, calibrate it using boot rom, set clock division, and perform adc offset calculation while exploring adc registers and sample-and-hold basics.
Configure the adc section, set channel mappings to the soc, and choose round-robin or priority. Use epwm1 as the soc source and trigger at the pwm cycle start.
Configure adc channels for simultaneous sampling of two analog signals, map a0 to b0, enable simultaneous sampling mode, set the trigger from ep one, and initialize the adc.
Configure the adc control register to set int pulse position to one, issuing the interrupt when result is available, and enable adc interrupt one for two-channel sampling with eoc1 triggering.
Implement an ADC ISR in simultaneous sampling mode, read 12-bit results, clear flags, and convert values to floating point scaled to 3.3 V for control.
Compile the ADC project by adding missing helper functions and resolving the unreferenced function error, confirming a clean microcontroller build. Upcoming topics include the ADC interrupt register and peak measurements.
Learn to read analog values with the adc on the launchxl f28069 by wiring A0 and B0 for grid voltage and current, then convert readings to 0–3.3 scale floating-point values.
Measure and track analog signals with a microcontroller by implementing ADC interrupt handling to compute peak and peak-to-peak values, resetting per 50 Hz cycle, and validating results against oscilloscope measurements.
Verify ADC calculations on the oscilloscope by comparing grid voltage and current peak and peak-to-peak measurements with the code calculations, confirming correct ADC module setup.
Conclude the EDC module by recapping the ADC pipeline from start-of-conversion to end-of-conversion, including channel selection, sampling options, configuration registers, and interrupt-driven control on a single microcontroller.
Highlight precise sampling, pwm and adc feedback for practical microcontroller control of power converters, and emphasize digital control, gating signals, and hands-on experiments.
The course will describe how to use the TMS320F28069 microcontroller from Texas Instruments for power electronics applications. The course is targeted towards beginners who are new to microcontroller programming and therefore, is ideal for electrical engineering undergraduates and graduate students who will be seeking their first job in the power industry. The course describes how a student can setup a basic home lab for the course, as this course is a hardware course and needs basic electronic equipment for hands-on experience. The course covers both theory and programming. The emphasis of the course is on creating projects and on programming the microcontroller. However, to make the material complete, the course deals with microcontroller architecture and describes the working of the processor and the peripherals.
The course will begin with very simple examples such as how to make LEDs glow and flash. However, it will progress to more practical scenarios as found in power electronics applications where gating signals will be produced for practical converters. The course will also describe how the microcontroller can be used for control applications by feeding measured signals into the microcontroller and processing them. The course will use the Code Composer Studio IDE provided for free by Texas Instruments and also example projects and starter files provided through the C2000Ware package. The course will describe how necessary software can be be downloaded and how the student can interpret and understand the example projects.
To be able to complete all examples in this course, the student will need to setup a home electronics lab which will cost around USD 150. Details of the components required are described in the introduction and all videos in the introduction are preview enabled.