Wireless embedded systems bridge our physical world with powerful digital control systems and cloud data analytics. Applications range from medical devices such as Bluetooth-enabled blood glucose meters, to payment systems such as Near-Field Communication-based credit cards. In this class, students will learn about how an embedded system works from the ground up. The lectures will focus on the key enabling components of embedded systems, including: Clocks, GPIO, Interrupts, Busses, Amplifiers, Regulators, Power supplies, ADC/DAC, DMA, Storage, and Wireless communication. The goal of the class is to familiarize the students with these components so that they feel comfortable working on a team that is building a device that incorporates a wireless embedded system.
CSE30 (CSE 120 recommended)
We will be supplementing the lectures with material from the following freely available sources:
We will manage discussions, grading, and announcements for this course with Piazza.
All programming assignments must be completed in your assigned groups. You and/or your partner must write all solutions and code that you submit, excepting any code that was provided to you as part of the assignment. You may discuss the assignments with others, but you may NOT make your code available to others or copy answers or code from another student--this includes GitHub repostiories (or similar) for assignments from this or similar courses in previous terms at any university. You will be issued private GitHub repositories for use in this course; it is your responsibility to make sure your code stays private. Exams will be individual effort and closed book.
Day | Topic | Preparation for class |
---|---|---|
Week 0: Course introduction | ||
Fri Sept 22 | Introduction | Lecture 1 Slides |
Week 1: Introduction to emdedded systems | ||
Mon Sept 26 | MCUs (video on Piazza due to holiday) |
ARM Cortex M for Beginners (pdf) Lecture 2 Slides |
Wed Sept 28 | MCUs (cont) |
Lecture 3 Slides |
Fri Sept 30 | I/O Overview |
Lecture 4 Slides |
Week 2: How to develop code for embedded systems | ||
Mon Oct 3 | Development Environment Schematics, and Datasheets | (In class demo recorded on Piazza) |
Wed Oct 5 | Using Pointers, Headers, and Registers, and GPIO (cont.) | Lecture 5 Slides |
Fri Oct 7 | Time | Lecture 6 Slides |
Week 3: Time and Interrupts | ||
Mon Oct 10 | Time | Lecture 7 Slides |
Wed Oct 12 | Time and Interrupts | Lecture 8 Slides |
Fri Oct 14 | Debuging | Lecture 9 Slides |
Week 4: Serial inter-device communication | ||
Mon Oct 17 | Serial busses | Lecture 10 Slides |
Wed Oct 19 | Serial busses (cont.) | Lecture 11 Slides |
Fri Oct 21 | Serial busses (cont.) | Lecture 12 Slides |
Week 5: Serial inter-device communication and peripherals | ||
Mon Oct 24 | Serial busses (cont.) | Lecture 13 Slides |
Wed Oct 26 | Intro to peripherals - Accelerometer | Lecture 14 Slides |
Fri Oct 28 | Debugging busses using a logic analyzer | In class demo (and reviewing I2C interface for accel in datasheet) |
Week 6: Midterm Exam | ||
Mon Oct 31 | Midterm Review Session | Lecture 15 Slides |
Wed Nov 2 | Midterm Exam | |
Fri Nov 4 | Direct Memory Access | Lecture 16 Slides |
Week 7: Efficiency (of code and microcontrollers) | ||
Mon Nov 7 | Coding style discussion | |
Wed Nov 9 | Power consumption | Lecture 17 Slides |
Fri Nov 11 | Veterans Day | No Lecture |
Week 8: Wireless Communication | ||
Mon Nov 14 | Power (cont.) and Intro to Wireless | Lecture 18 Slides |
Wed Nov 16 | Wireless | Lecture 19 Slides |
Fri Nov 18 | Wireless | Lecture 19 Slides (cont.) |
Week 9: Wireless Communication | ||
Mon Nov 21 | Wireless | Lecture 20 Slides |
Final exam | ||
Fri Dec 9 | Final (8:00am - 11:00am) |