EE342. Microcontroller Based System Design
Credits: 3
Microprocessor architecture, the microcontroller based system design context, and peripheral interfacing. C and machine language programming and debugging, and embedded applications. Associated laboratory exercises include topics such as stand-alone system programming, interfacing to peripherals, interrupts, timers, analog data acquisition, and intercomputer communications. Two hours of lecture and one two-hour lab per week.
Prerequisites: EE-241, and either EE-247 or CS-126 as corequisites.
This has long been one of my favorite courses. Over the course of the semester we do both hardware and software for an embedded application to, ultimately, do distributed control of an HO toy train layout. This involves programming the microcontroller (in C), building interface hardware, programming the Windows PC (using C++) for the application with which a user controls part of the train layout, and the communications (using USB) between the microcontroller and the PC. All of those things need to work together, and live cooperatively with the systems of the other students. It's an interesting challenge.
A special (limited/development) offering of this course is being offered Spring 2020, with the next regular offering expected Fall 2020. It is normally offered in the fall of even numbered years.
We are using the NXP/Freescale "Kinetis" family KL43Z microcontroller. (The DEMOJM prototyping boards and the Coldfire family of processors previously used have been discontinued by NXP.) Much of what we are doing will make use of the serial port and the "terminal" program borrowed from the Freescale JM family demo support software (PE Micro). The KL43Z puts the programmer farther from the hardware, which is accessed through driver functions in most cases. Much of the tutorial material to support the course is in an incomplete state of development (or at least needs some updating or revision) at this time. Below are the syllabus (with projects) and some other useful tutorials and documents.
Note: Some of the above materials were developed using Kinetis Development System (KDS) rather than the more recently recommended MCUXpresso IDE. Some of the utility or board related functions may have changed.
Reference material from previous F18 offering where the SH8 was used for initial phases of the course. The KL28Z was a possible candidate for this course. It comes with a similar DEMO board but does not have the LCD display. It does have more pins and more capability though.
The S17 course in the past made use of the Freescale/NXP "Coldfire" JM128 processor, which is now no longer available. Still, some of the materials below will continue to be useful, especially those concerned with programming on the Windows PC side of the interface.
This course is normally offered in the fall semester, and is normally taken by EE students with a particular interest in computers, or occasionally CS students. Background in digital design is necessary, and some experience with programming equivalent to an introductory programming course is needed, with either a follow up course taken or in progress (usually EE247 or CS126 or CS246). In this course we will be programming in C (for the embedded microcontroller) and C++ (on the Windows PC) although the depth we get into with C++ is pretty shallow. We are not really mastering C++ Windows programming, but doing just enough to have some perspective on it.