Mini project ECE 362: Microprocessor Systems and Interfacing

Mini project ECE 362: Microprocessor Systems and Interfacing

Posted on: 2025-01-03
ECE 362 Purdue University Project Team

published

During the first semester at Purdue University I attended ECE 362. A class based in Microprocessor Systems and Interfacing in which we learned the components and circuits of a microprocessor and how to use and implement them from scratch. The course consisted in two main blocks the lectures and the labs. The labs consisted in programming and implementing all the theoretical knowledge learned in lectures. During the semester we went through this main topics: 

  • Microprocessor set up
  • GPIO
  • Interrupts
  • Timers
  • DMA(Direct Memory Access)
  • DAC(Digital to Analog Conversion)
  • ADC(Analog to Digital Conversion)
  • Instruction decoder
  • Assembly language -advanced
  • Serial Communication Interfaces
    • I2C
    • UART
    • ISP

The workflow was based on weekly work. Two lectures and one lab implementing the topics covered during that week lectures plus a graded homework using a quiz format.

First week lab0-intro:

Everything starting with a terminal, a protoboard and a lot of cables. This was the first week of the project and even though I did not have any idea about C and the whole course was about using C. I searched for a book and I started to learn the basics of this beautiful programming language. This goal for this week was to get hands-on experience with the STM32 microcontroler.

First week image

Second Week lab1-GPIO:

During the second week, I realized that all the hours spent learning C from an old book paid off. I finally understood how memory and pointers worked. This understanding helped me configure the GPIO subsystem of the STM32 by directly accessing memory-mapped registers. Using this, I connected several LEDs and two push buttons and controlled them through reading and writing values to the GPIO pins.

Third Week lab2-interrupts:

This week I learned how the SysTick and External GPIO interrupts (EXTI) worked. We used this tools to implement an Interrupt Service Routine for different interrupt sources.

Fourth week lab3-Timers:

This week was somewhat boring, as most of the focus was on understanding the timer subsystem from a theoretical perspective. Although the concepts were important, the practical part was limited to just a couple of basic examples. Still, I managed to learn how to configure the timer subsystem, use timer interrupts, scan a matrix of buttons, and drive a multiplexed display—skills that will be useful for more complex embedded applications later on.

week 3 lab

Fifth Week Lab4-DMA-DAC-ADC

This week we learned how to use several key components of embedded systems, including DMA for automatic data transfer between memory and peripherals, as well as the concepts of digital-to-analog (DAC) and analog-to-digital (ADC) conversion. We also explored how to connect and coordinate multiple independent peripherals to create a functional system. The most exciting part was using the DAC to play simple tones through headphones—it was just basic sounds, but it was fascinating to see how digital signals could be converted into audio.