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 (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 0: Course introduction | ||
Fri Sept 28 | Introduction | Lecture 1 Slides |
Week 1: Introduction to embedded systems | ||
Mon Oct 2 | Intro to Project and MCUs |
ARM Cortex M for Beginners (pdf) Lecture 2 Slides |
Wed Oct 4 | MCUs (cont) |
Lecture 3 Slides |
Fri Oct 6 | I/O Overview |
Lecture 4 Slides |
Week 2: How to develop code for embedded systems | ||
Fri Oct 9 | Development Environment Schematics, and Datasheets | (In class demo recorded on Piazza) |
Wed Oct 11 | Using Pointers, Headers, and Registers, and GPIO (cont.) | Lecture 5 Slides |
Fri Oct 13 | Time | Lecture 6 Slides |
Week 3: Interrupts | ||
Mon Oct 16 | Interrupts | Lecture 7 Slides |
Wed Oct 18 | Debugging | Lecture 8 Slides |
Fri Oct 20 | Serial | Lecture 9 Slides |
Week 4: Serial inter-device communication | ||
Mon Oct 23 | Serial busses | Lecture 10 Slides |
Wed Oct 25 | Serial busses (cont.) | Lecture 11 Slides |
Fri Oct 27 | Serial busses (cont.) | Lecture 12 Slides |
Week 5: Serial inter-device communication and peripherals | ||
Mon Oct 30 | Intro to peripherals - Accelerometer | Lecture 13 Slides |
Wed Nov 1 | Programming for the I2C bus | Lecture 14 Slides |
Fri Nov 3 | Debugging busses using a logic analyzer | In class demo (and reviewing I2C interface for accel in datasheet) |
Week 6: Midterm Exam | ||
Mon Nov 6 | Midterm Review Session (Video posted online) | |
Wed Nov 8 | Midterm Exam | |
Fri Nov 10 | No class (Veterans day) | |
Week 7: Grab bag | ||
Mon Nov 13 | Direct Memory Access | Lecture 16 Slides |
Wed Nov 15 | Analog | Lecture 17 Slides |
Fri Nov 17 | Analog and Wireless intro | Lecture 18 Slides |
Week 8: Wireless Communication | ||
Mon Nov 20 | Intro to Wireless | Lecture 19 Slides |
Wed Nov 22 | Intro to Wireless (cont.) | Lecture 19 Slides (cont) |
Fri Nov 24 | No class (Thanksgiving holiday) | |
Week 9: Wireless Communication and Intro. Sensing | ||
Mon Nov 27 | Wireless | |
Wed Nov 29 | Wireless | |
Fri Dec 1 | Sensing | |
Week 10: Final project development week | ||
Mon Dec 4 | In-class hackathon (must attend) | |
Wed Dec 6 | In-class hackathon (must attend) | |
Fri Dec 8 | In-class hackathon (must attend) | |
Final exam | ||
Fri Dec 15 | Final (8:00am - 10:00am) |