COEN-4720 Embedded Systems

Course Introduction

Catalog Description
This course introduces students to embedded systems, the types of hardware that can support such systems, and the interfacing used in embedded systems. The course is a combined laboratory and lecture course, which directly applies the embedded systems techniques using hardware description and assembly languages to field programmable gate array technology. Design elective for Electrical and Computer Engineering majors. Prereq: COEN-2710 and EECE-3015.

Instructor
Cristinel (Cris) Ababei
cristinel.ababei@marquette.edu
Phone: 414-288-5720
Office: Haggerty Hall, #220

Syllabus
For course goals and objectives, policies, and a tentative outline please see the syllabus on D2L.

Textbook

[1] Carmine Noviello, Mastering STM32, Second Edition, 2022. (Required, Book 1). Available to purchase online.
[2] Joseph Yiu, The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors, 2nd Ed., 2015. (Book 2). Can be found online.

Hardware

STM32 Nucleo-64 development board with STM32L053R8 MCU STM32 Nucleo-64 development board with STM32L053R8 MCU.


Lecture Notes and Labs

Week
Lecture Notes
Lab Description
Lab Files
Videos, Readings, & More
Week1
Lecture 1: Introduction
-- Slides
-- Edward A. Lee and Sanjit A. Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach. (Chapter 1)
-- Wayne H. Wolf, Hardware-software co-design of embedded systems, Proceedings of the IEEE, 1994.
[Aug.30]
Lab #1: PCB Layout in KiCAD
lab1
lab1_files.zip Videos for USB to UART Serial Converter:
-- Part 1: Introduction and Objectives
--
Part 2: Install Software and Design Considerations
--
Part 3: Schematic Entry (or Capture)
--
Part 4: Footprint Assignment and Netlist Generation
Week2
Lecture 2: C Programming
-- Part 1: Variables, Structures 1, Instructions (for, break, switch)
-- Part 2: Bitwise operators, Functions, Pointers 1
[Sep.6]
Continue Lab #1
Videos for USB to UART Serial Converter:
-- Part 5: Placement
--
Part 6: Routing
Week3
-- Part 3: Pointers 2, relation between pointers and arrays, operations on pointers
-- Part 4: Structures 2, access to structure members, structure inside structure
[Sep.13]
Lab #2: Introduction to C programming
lab2
lab2_files.zip
Week4
Lecture 3: ARM Cortex-M0+ processor, STM32L053R8 microcontroller unit (MCU)
-- Slides
[Sep.20]
Lab #3: IDE and Hello World
lab3
lab3_files.zip -- STM32L053R8 MCU datasheet
-- STM32L0x3xx MCU reference manual (RM0367)
-- ST-Nucleo-L053R8 board (Web)
-- Board user manual (PDF)
-- Board schematic diagram (PDF)
-- Book [1], Ch.2,3,4.
-- Book [2], Ch.1,2,3,4.
Week5
Lecture 4: IDE, HAL
-- Slides
[Sep.27]
Lab #4: Debugging (UART)
lab4
lab4_files.zip -- Book [1], Ch.5,8
Week6
Lecture 5: Interrupts (EXTI, TIM6)
--Slides
[Oct.4]
Lab #5: Interrupts
lab5
lab5_files.zip -- Book [1], Ch.6,7,11
Week7
Lecture 6: Serial communication buses: UART, SPI
--Slides
[Oct.11]
Lab #6: SPI - LCD Display
lab6
lab6_files.zip -- Book [1], Ch.8,10,15
-- MCU Datasheet, Ch.31
Week8
Lecture 7: Serial communication buses: I2C
--Slides
[Oct.18]
No Lab/Classes (mid-semester break)
-- Think of and propose course-project idea!
Week9
Lecture 8: Block diagrams and Flowcharts
--Slides
[Oct.25]
Lab #7: I2C - Wii Nunchuck Controller
lab7
lab7_files.zip -- Book [1], Ch.14
-- MCU User Manual, Ch.28
Week10
Lecture 9: BlueTooth
--Slides
[Nov.1]
Lab #8: Bluetooth
lab8
lab8_files.zip -- Book [1], Ch.12
Week11
Lecture 10: WiFi
--Slides
[Nov.8]
Lab #9: Wifi
lab9
lab9_files.zip
Week12
Lecture 11: Memory
--Slides
--lecture11_files.zip
[Nov.15]
Lab #10: PCB Soldering
lab10
lab10_files.zip Videos for USB to UART Serial Converter:
-- Part 7: Soldering
-- Book [1], Ch.9,14,20,21
Week13
Lecture 12: DAC, ADC
--Slides
--lecture12_files.zip
[Nov.22]
Continue with Lab #10
Videos for USB to UART Serial Converter:
-- Part 8: Testing and Programming Arduino
-- Part 9: 3D Printed Enclosure Designed in Autodesk Fusion 360
Week14
[Nov.29]
No Lab/Classes (Thanksgiving break)
Week15
Lecture 13: FreeRTOS
--Slides
--lecture13_files.zip
[Dec.6]
No Lab.
Poster Session Program


Resources

Geoffrey Brown, Discovering the STM32 Microcontroller (lab manual for C335), 2016.

Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language. Computer Press. 1989.