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.
CSE29 (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 (see Canvas for link). All grades and project submissions will be on Gradescope. We will provide a course GitHub repo.
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 repositories (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.
Your academic goal in this course is to learn how embedded systems work, and LLMs can absolutely support you in this endeavor. You are encouraged to use large language models (e.g., ChatGPT) to assist in understanding the concepts in the course, and to guide you to get around problems you encounter in your programming projects. The more you learn in this course, the better you will become at writing prompts that can produce functionally correct embedded systems firmware in C in your projects.
Relying entirely on LLMs on projects does present several risks (1) crafting LLM prompts that give you the correct implementation is extremely difficult in embedded programming without knowledge of the underlying concepts, and (2) even if you do learn to craft excellent prompts, you may not learn how wireless embedded systems work, which is the reason you are taking this course. This is why we will be testing your understanding of these concepts in the midterm and final.
Day | Topic | Preparation for class |
---|---|---|
Week 1: Course introduction | ||
Mon Jan 6 | Introduction | Lecture 1 Slides |
Wed Jan 8 | Intro to Project and MCUs |
ARM Cortex M for Beginners (pdf) Lecture 2 Slides |
Fri Jan 10 | MCUs (cont) |
Lecture 3 Slides |
Week 2: How to develop code for embedded systems | ||
Mon Jan 13 | I/O Overview |
Lecture 4 Slides |
Wed Jan 15 | GPIO and Time | Lecture 5 Slides |
Fri Jan 17 | Time | Lecture 6 Slides |
Week 3: Event-driven firmware programming | ||
Mon Jan 20 | No class MLK day holiday | |
Wed Jan 22 | Interrupts | Lecture 7 Slides |
Mon Jan 24 | Interrupt and Debuggings | Lecture 8 Slides |
Week 4: Serial inter-device communication | ||
Mon Jan 27 | Intro to serial communication | Lecture 9 Slides |
Wed Jan 29 | Intro to serial communication | Lecture 10 Slides |
Fri Jan 31 | Serial busses | Lecture 11 Slides |
Week 5: Serial inter-device communication | ||
Mon Feb 3 | Intro to peripherals - Accelerometer | Lecture 12 Slides |
Wed Feb 5 | Serial busses (cont.) | Lecture 13 Slides |
Fri Feb 7 | Dynamic Memory Access | Lecture 14 Slides |
Week 6: Midterm Review | ||
Mon Feb 10 | Analog Sensing | Lecture 15 Slides |
Wed Feb 12 | Analog Sensing | Lecture 16 Slides |
Fri Feb 14 | Midterm Review Session | |
Week 7: Midterm Exam | ||
Mon Feb 17 | Presidents Day | |
Wed Feb 19 | Midterm Exam | |
Fri Feb 21 | Wireless communication | Lecture 19 Slides |
Week 8: Wireless and Power | ||
Mon Feb 24 | Wireless communication | Lecture 20 Slides |
Wed Feb 26 | Wireless communication (continued) | Lecture 21 Slides |
Fri Feb 28 | Intro to Power | Lecture 22 Slides |
Week 9: Power Management | ||
Mon Mar 3 | Power Management | Lecture 23 Slides |
Wed Mar 5 | Power Management | Lecture 24 Slides |
Fri Mar 7 | Hackathon in Lab!!! | |
Week 10: Low-power Hackathon!!! | ||
Mon Mar 10 | Hackathon in Lab | |
Wed Mar 12 | Hackathon in Lab | |
Fri Mar 14 | Final judging of low power |