We may earn an affiliate commission when you visit our partners.
Course image
Boyan Lazic

*Before enrolling, carefully read the description*

This is the second part of the embedded course, which was created mostly for students, but also for people wishing to start their career on this path to gain general knowledge of embedded systems.

When starting with embedded systems, from my experience and the experience of others, the problem is that there are many unclarities when it comes to reading the documentation and schematics, and later on combining it with programming at the beginning of their studies or research.

Read more

*Before enrolling, carefully read the description*

This is the second part of the embedded course, which was created mostly for students, but also for people wishing to start their career on this path to gain general knowledge of embedded systems.

When starting with embedded systems, from my experience and the experience of others, the problem is that there are many unclarities when it comes to reading the documentation and schematics, and later on combining it with programming at the beginning of their studies or research.

This course was made exactly to bridge those gaps and give them insight how simple it is to achieve many functionalities, all by going step-by-step through the reference manual, schematics and programming the device. During the course, all the concepts will be graphically explained. I think that visual learning is the best way of learning.

Because this field is such that just by talking you can't reach lot, so you must show some results, at the end of every important step, an experiment will be conducted to show the proof. This can also help students or employee beginners with their projects. The device that was used in this course is the

The only libraries and instructions that are used in this course, are the ones that can be used on any other C compiler. Everything else is self-made. The course content is kept minimalistic.

During the course you'll learn about:

- Universal Asynchronous Receiver-Transmitter (UART)

- Serial Peripheral Interface (SPI)

- Inter-Integrated Circuit (I2C)

- Analogue-to-Digital Converter (ADC)

- Digital-to-Analogue Converter (DAC)

I'm open to feedback on:

- what was explained well?

- what wasn't?

- where to put more emphasis on?

- is something missing?

- what would you like to see but was not covered? (it can also be something unrelated to the given topics)

The feedback is optional, it's supposed to be less about me, but more about others.Those who decide to share their opinion, I would ask for constructive feedback, because that way I can consider it and make new courses better and more understandable for future viewers.For the first 30-days I'm open to answering all questions regarding the course

Enroll now

What's inside

Learning objectives

  • Universal asynchronous receiver-transmitter (uart)
  • Serial peripheral interface (spi)
  • Reading schematics of sensors (accelerometer adxl345)
  • Inter-integrated circuit (i2c)
  • Analogue-to-digital converter (adc)
  • Digital-to-analogue converter (dac)

Syllabus

Introduction
Serial Peripheral Interface (SPI)
Universal Asynchronous Receiver-Transmitter (UART)
Set up programs needed
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses graphical explanations and experiments to demonstrate concepts, which is helpful for visual learners and those new to embedded systems
Focuses on bridging the gap between documentation, schematics, and programming, which is a common challenge for beginners in embedded systems
Covers UART, SPI, I2C, ADC, and DAC, which are fundamental communication protocols and peripherals in embedded systems
Emphasizes a minimalistic approach by using only instructions that can be used on any C compiler, which promotes portability
Requires part 1 of the embedded course, which may require additional time and effort for learners to catch up
Uses the ADXL345 accelerometer as a case study, which may limit the breadth of knowledge gained about other types of sensors

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Stm32 bare metal communications and peripherals

Please note: We were unable to analyze actual student reviews for this course as the review data was not provided. Based on the course description, this course on STM32 bare metal programming, presented as part 2, focuses on implementing key communication protocols and peripherals. The instructor aims to bridge the gap between documentation and programming, taking a minimalistic approach by avoiding standard libraries and building everything from scratch. Key topics covered include UART, SPI, I2C, ADC, and DAC. The description emphasizes visual explanations and includes experiments to demonstrate concepts practically. Intended for students and career beginners, it assumes prior embedded knowledge (from part 1 or elsewhere).
It is the second part of a larger series.
"This is the second part of the embedded course."
"It is intended for those starting embedded systems but follows a previous part."
"May require completing the first part or having equivalent knowledge."
Helps connect datasheets to code.
"The course is made to bridge the gaps when reading documentation and schematics."
"It shows how to combine reference manual reading with programming."
"Helps understand how simple functionalities are achieved by following documentation."
Includes hands-on coding demonstrations.
"Experiments are conducted at the end of every important step to show proof."
"I can see real results from the programming steps shown."
"There are experiments for UART, SPI, and I2C communications."
Focuses on low-level, library-free coding.
"The course uses only self-made code, avoiding standard libraries for any C compiler."
"Everything is built from scratch; no external libraries are used."
"It's a minimalistic approach to programming the device directly."
Explores key communication and analog functions.
"I will learn about UART, SPI, and I2C communication protocols."
"The course includes modules on the ADC and DAC peripherals."
"It focuses on fundamental STM32 peripherals needed for projects."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in STM32 bare metal guide for future embedded projects (part 2) with these activities:
Review Digital Logic Fundamentals
Reinforce your understanding of digital logic concepts, which are foundational for understanding how the STM32 microcontroller works at a low level.
Browse courses on Digital Logic
Show steps
  • Review basic logic gates (AND, OR, NOT, XOR).
  • Study Boolean algebra and truth tables.
  • Practice simplifying logic circuits.
Review 'Making Embedded Systems' by Elecia White
Learn about best practices in embedded systems design to improve the quality and maintainability of your STM32 projects.
Show steps
  • Read the chapters on state machines and concurrency.
  • Study the design patterns for embedded software.
  • Apply the concepts to your STM32 projects.
Review 'Embedded Systems Architecture' by Raj Kamal
Gain a deeper understanding of embedded systems architecture to better grasp the concepts covered in the STM32 course.
Show steps
  • Read the chapters related to microcontroller architecture.
  • Focus on sections covering memory management and peripheral interfaces.
  • Take notes on key concepts and diagrams.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement SPI Communication with a Dummy Device
Solidify your understanding of SPI communication by implementing it with a simple dummy device or another microcontroller.
Show steps
  • Set up an SPI communication between the STM32 and a dummy device.
  • Write code to transmit and receive data using SPI.
  • Debug and test the communication thoroughly.
Create a Blog Post on I2C Communication
Deepen your understanding of I2C by explaining the protocol and its applications in a blog post format.
Show steps
  • Research I2C communication protocol in detail.
  • Write a blog post explaining the basics of I2C, addressing, and data transfer.
  • Include diagrams and examples to illustrate the concepts.
  • Publish the blog post on a personal blog or platform like Medium.
Build a Simple Data Logger with ADC and UART
Apply your knowledge of ADC and UART to build a data logger that reads analog data and transmits it serially.
Show steps
  • Connect an analog sensor (e.g., temperature sensor) to the STM32's ADC input.
  • Write code to read the analog value using ADC.
  • Configure UART to transmit the data to a computer.
  • Display the data on a serial monitor.
Contribute to an STM32 Open Source Project
Gain practical experience and contribute to the embedded community by contributing to an open-source STM32 project.
Show steps
  • Find an open-source STM32 project on GitHub or GitLab.
  • Identify a bug or feature to work on.
  • Fork the repository and make the necessary changes.
  • Submit a pull request with your changes.

Career center

Learners who complete STM32 bare metal guide for future embedded projects (part 2) will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests software and firmware for embedded systems. This course directly aligns with the practical skills required for this role, particularly in understanding hardware communication protocols. The course covers Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface, and Inter-Integrated Circuit communication, which are essential for interfacing with sensors and other peripherals. The practical experiments in the course, like programming data transmission with serial and integrating ADC and DAC functionalities, help build a foundation for real-world tasks performed by an embedded systems engineer. This course provides hands-on experience that is applicable to embedded projects.
Firmware Engineer
A Firmware Engineer develops low-level software that controls the hardware of a system. This course will be useful for an aspiring firmware engineer because of its focus on bare-metal programming and direct hardware interaction. The curriculum's focus on Serial Peripheral Interface, Inter-Integrated Circuit, Analog to Digital Converter, and Digital to Analog Converter is highly relevant to communicating with and controlling hardware components. The practical, experiment-driven approach of the course helps a firmware engineer by providing real-world experience in setting up and programming low-level functions. A firmware engineer will benefit from this course.
Internet of Things Engineer
An Internet of Things Engineer designs and develops connected devices and systems. The communication protocols like Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface, and Inter-Integrated Circuit, covered in this course, are widely used in IoT devices for sensor communication. Working with analog and digital converters, as taught in this course, helps an Internet of Things engineer interface with sensors and actuators. The course will help build a foundation for developing robust IoT devices. This course's focus on practical experimentation aligns well with the needs of an Internet of Things engineer.
Control Systems Engineer
A Control Systems Engineer designs and implements systems that control the behavior of dynamic systems. This course provides foundational knowledge for a control systems engineer because it covers topics directly relevant to sensor data acquisition and actuator control, which are critical in control systems. The course's deep dive into Serial Peripheral Interface, Inter-Integrated Circuit, Analog to Digital Converter, and Digital to Analog Converter, along with the practical experiments, will help a control systems engineer understand how to interface the hardware components necessary for their work. The course will be useful to anyone looking to start in this field.
Robotics Engineer
A Robotics Engineer designs, builds, and tests robots and robotic systems. The communication protocols covered in the course, including Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface, and Inter-Integrated Circuit, are fundamental for sensor integration and control systems in robotics. Specifically, the course teaches how to read schematics, helping with integrating different sensors like the ADXL345 accelerometer. The course helps a robotics engineer gain hands on experience in communicating with sensors and actuators. This is vital for the development of robust and functional robots. This course’s practical experiments will be useful to robotics engineers.
Automation Engineer
An Automation Engineer designs and implements automated systems and processes. The course’s focus on hardware communication, including Serial Peripheral Interface and Inter-Integrated Circuit, will be useful for an automation engineer wanting to integrate sensors and actuators into their systems. The course covers Analog to Digital Converter and Digital to Analog Converter, which are essential for controlling and monitoring physical processes. This course's practical approach will be useful for developing automated systems. An automation engineer can apply the concepts introduced in the course.
Hardware Engineer
A Hardware Engineer designs and develops physical components of electronic devices. While primarily focused on the physical aspects, a hardware engineer also requires an understanding of how software interacts with hardware. The hands-on experience with communication protocols like Serial Peripheral Interface, Inter-Integrated Circuit, and Universal Asynchronous Receiver-Transmitter, as covered in this course, will help bridge this gap. Furthermore, knowledge about configuring ADC and DAC as well as how to read schematics can make a hardware engineer more effective. This course offers a practical understanding of how hardware and software work together, essential for a hardware engineer.
Electrical Engineer
An Electrical Engineer designs and develops electrical systems and components. The communication protocols and concepts this course covers help an electrical engineer to understand how software can interface with hardware. For example, the course provides hands-on experience with Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface, Inter-Integrated Circuit, Analog to Digital Converter, and Digital to Analog Converter. An electrical engineer can apply the concepts in the course to the design of complex electrical systems. The course will be useful to prospective electrical engineers.
Product Development Engineer
A Product Development Engineer is involved in all stages of product development, from design to manufacturing. This course will be useful for a product development engineer because it provides insights into how software and hardware components interact. The course’s lessons on Serial Peripheral Interface, Inter-Integrated Circuit, Analog to Digital Converter, and Digital to Analog Converter will help the product development engineer understand how to integrate the hardware components into a final design. This course will be useful to product development engineers.
Test Engineer
A Test Engineer develops and executes tests to ensure the quality of products or software. This course may be useful for a test engineer because it provides a foundation in embedded systems and hardware interaction. A test engineer working on embedded systems products will benefit from understanding how different hardware components communicate using various communication protocols. The practical experiments will also provide insights into potential points of failure. A test engineer will find this course useful.
Technical Consultant
A Technical Consultant provides expert advice and support to clients on technology-related issues. This course may provide a technical consultant with specialized knowledge in embedded systems. The course’s focus on Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface and Inter-Integrated Circuit may help a technical consultant advise clients needing this type of expertise. Learning about Analog to Digital Converter and Digital to Analog Converter further broadens a technical consultant's expertise for clients who need it. As a result, the course may be useful.
Research Scientist
A Research Scientist conducts scientific experiments and analysis to advance knowledge in a particular field. A research scientist interested in embedded systems might find this course useful. The course provides hands-on experience with Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface, Inter-Integrated Circuit, Analog to Digital Converter, and Digital to Analog Converter. This practical approach may benefit a research scientist in developing new technologies and testing new designs. A research scientist may find this course useful.
Applications Engineer
An Applications Engineer works with customers to understand their needs and provide solutions using existing technology. This course may be useful for an applications engineer working with embedded systems as the course’s focus on Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface, and Inter-Integrated Circuit communication will help an applications engineer understand customer requirements. The practical experiments using Analog to Digital Converter and Digital to Analog Converter will help in designing customer solutions. This course may be suitable for an applications engineer.
Systems Analyst
A Systems Analyst studies computer systems and develops solutions to improve efficiency and productivity. A systems analyst who works with embedded systems in particular would find this course useful in providing background knowledge about hardware and software interaction. The course covers Universal Asynchronous Receiver-Transmitter, Serial Peripheral Interface, and Inter-Integrated Circuit communication, which helps give a systems analyst insight into communication protocols used in embedded systems. This course may be useful to a systems analyst.
Educator
An educator teaches students about electronics, embedded systems, or related topics. This course may be useful for educators hoping to expand their practical knowledge of embedded systems. The hands-on approach, along with the focus on hardware communication using Serial Peripheral Interface, Inter-Integrated Circuit, and Universal Asynchronous Receiver-Transmitter, may assist an educator in creating teaching materials or delivering more informed lessons. The course also covers Analog to Digital Converter and Digital to Analog Converter, which are central concepts in embedded systems. It may be useful to an educator.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in STM32 bare metal guide for future embedded projects (part 2).
Focuses on the practical aspects of embedded systems development, providing design patterns and best practices for creating robust and maintainable software. It covers topics such as state machines, concurrency, and real-time operating systems. This book is valuable for understanding how to structure embedded software projects effectively. It useful reference tool for best practices.
Provides a comprehensive overview of embedded systems architecture, programming, and design. It covers various aspects of embedded systems, including hardware and software components. It is particularly useful for understanding the underlying principles of embedded systems and how they are designed. This book can be used as a reference text.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser