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.