This unit aims to provide an extensive overview of microcontroller utilisation within electronic products and the essential peripheral devices employed by microcontrollers to interact with the broader system.
The curriculum encompasses advanced topics in C/C++ programming, focusing on data structures tailored for embedded systems and the means to access memory-mapped peripheral interfaces from C/C++ programs.
Furthermore, the course delves into a comprehensive examination of several peripheral devices found in the STM32 family of microcontroller devices, which have been selected to represent those frequently encountered in embedded systems. Notable examples of such devices include:
- Digital input/output capabilities
- Analog-to-digital converters
- Serial communication interfaces (both asynchronous and synchronous)
- Techniques for polled and interrupt-driven data transfer
Additionally, this module explores commonly utilised design patterns in embedded systems, encompassing:
- State machines
- Time-driven approaches
Year 1 prerequisites for this module
It is required that students who wish to partake in the second level of this module have passed the prior level as well as a module on electronic projects.
The module is delivered through three primary channels, lectures, problem-based learning, and laboratory-based learning. The module has an additional emphasis on independent study.
On completion of the course, students will be able to:
- Explore the mechanisms by which high-level language programs interact with and manage hardware elements.
- Detail the functioning of various hardware devices, such as analog-to-digital converters, timers, counters, and serial peripherals.
- Provide insights into the generation and handling of interrupts in embedded systems, highlighting the advantages of interrupt-driven data transfer.
- Identify prevalent design patterns commonly employed in embedded software and clarify their specific applications.
- Develop and code solutions for common programming challenges in embedded systems, including tasks related to I/O pins, analog-to-digital converters, timers, serial interfaces, and more.
- Describe the iterative process of software development and the formulation and testing of hypotheses as integral aspects of the development cycle.