Click on the blue text to follow us
01
Preface
The author has worked at an application-oriented technical university for nearly ten years. During this time, many students have learned new skills by running various examples on development boards, such as blinking an LED or driving a screen. When they successfully run these examples, they feel very happy, as it represents a breakthrough from 0 to 1 for them, just like when I learned C language and was excited to see “hello world”. However, knowing only these examples is far from enough, especially when they encounter comprehensive problems, they often feel helpless. Typically, they directly copy the programs from the tutorials, make some modifications, and run them, but most of the time, this approach does not work. The programs in the tutorials are merely demonstrations of specific functionalities, and if they want to apply them in practice, many additional processes must be handled. In summary, what is lacking is the training with complete cases to connect all the knowledge points that students have learned. Even though there are relevant case tutorials online, due to the students’ beginner status, they may not manage many details well, resulting in the entire program being unable to run smoothly. To help beginners get started effectively, I plan to write a series of tutorials to assist students in this introductory process.
02
Data Acquisition System
I plan to use a data acquisition system as a case study, covering topics including STM32, FPGA, Raspberry Pi/Linux, and digital signal processing, aiming to include the core courses studied by undergraduate students in electronic information. I will also create a Q&A group to help students answer questions they encounter while learning. Emphasizing, this is a Q&A group; just like in class, any questions related to this case can be asked in the group.
The title of this article is to teach everyone to learn embedded systems. My understanding of embedded systems may differ from the concept you see online. When embedded systems are mentioned online, it generally refers to embedded Linux development, while I consider embedded systems to be a broader concept. As long as it involves the development of small dedicated devices, regardless of the type of chip used, I categorize them as embedded development. If anyone has different opinions on this concept, we can discuss it further.
Next, let’s talk about the scheme for the data acquisition system.

(The above images are sourced from the internet and are included solely for aesthetic purposes. If there is any infringement, please contact the author for deletion.)
The AD/DA on the far right of the block diagram is the front end of the entire acquisition system, responsible for converting analog electrical signals into digital signals, which are then sent to the FPGA or STM32 through serial or parallel communication. Both FPGA and STM32 are used here because some digital signals are suitable for processing by FPGA, while others are better processed by STM32. Therefore, both methods are included. The collected digital signals are processed by FPGA or STM32, and then sent to the Raspberry Pi via USB2.0 for further processing. Here, the Raspberry Pi acts like a small computer running a Linux operating system, but this Linux has many more functionalities than embedded Linux. The Raspberry Pi will further process the collected data, such as filtering, and finally display the processed data on a touchscreen, with the graphical interface written in QT.
03
Conclusion
The initial idea is to have FPGA and STM32 control two ADCs to acquire two analog signals (the parameters of the analog signals are not yet determined) and, after processing by the Raspberry Pi, display the waveforms of the two analog signals on the screen, calculating the frequency and amplitude of each signal. It is similar to a simple oscilloscope, but with many fewer functions than a traditional oscilloscope. Although small, it has all the essential components. While the functionality is simple, it covers most of the knowledge required for embedded systems and is sufficient for students to get started with their learning.
QQ Q&A group: 1093852264, just like answering questions in class