Preface to a Simple Oscilloscope and Signal Generator Based on STM32H750
I've always wanted to build a simple oscilloscope to fully learn the hardware and software development process. Last month, I was fortunate enough to see this training camp held by LCSC and excitedly participated.
Although I was too busy with work to rewrite the software design from scratch, I gained a lot in hardware design. I'm setting a goal here to definitely complete the software design of an oscilloscope myself.
Hardware Circuit
Because this is a simple oscilloscope, all the examples in this training camp are only small-scale signal input detection. The hardware circuit has been greatly simplified. However, I believe that a deeper understanding of this hardware circuit, and the ability to apply the knowledge to other situations, will definitely enrich our circuit knowledge. The


positive and negative power supplies for the op-amp section are provided by this part.
We are all familiar with the MT3608 BOOST circuit, but adding two diodes and two capacitors to generate a negative voltage is quite advanced. Currently, it's too messy, so the circuit has been simplified. The circuit shown in the


left box is a simplified BOOST section, which will not be analyzed here. Let's look at the circuit in the right box. Because the high-speed switching of the switch on the left side turns the power supply on the left side of C92 into a pulse signal. When the signal goes from low to high, the capacitor C92 charges (left +, right -). When the signal goes from high to low, the left side of C92 becomes 0 volts, but the voltage difference across the capacitor cannot change abruptly, causing the voltage on its right side to become -V. This allows the current to flow through GND->C91->D6->C92->GND. The final result is that the voltage at the positive terminal of D6 is a negative voltage slightly higher than -V.
Later, when I searched for relevant information online, I found that the structure of the block diagram on the right is a typical charge pump circuit, where energy transfer relies on the voltage difference of the capacitors. Because the current that can be provided is generally relatively small, around tens of milliamps, it is usually used as a power supply for simple op-amps.


This is the 3.3V power supply of my system, which includes both the switching power supply and the LDO. In actual soldering, I only soldered the switching power supply.


In my initial version, I only made a jumper to 3.3V for the signal relay power supply, but the signal relay I bought was a 5V power supply specification, which was a careless oversight. Therefore, two power supply options were added here.


The official documentation for the oscilloscope's analog front-end clearly explains attenuation, gain, DC bias, and comparator triggering.
Currently, the STM32H750VBT6 chip costs only around 20, so I chose to integrate the chip directly without borrowing a development board. Also, considering that the DSO, DDS, LCD, buttons, and relays don't use many pins, it would be a waste to leave the remaining pins unused. To increase its versatility,


I added some peripherals to the board, such as a TF card for expanding waveform capture functionality; QSPI for external FLASH; and KT6368A Bluetooth and ESP8266WIFI for remote control and display. For the remaining pins, I chose the Raspberry Pi expansion interface, which has the most compatible modules, allowing for easy direct connection of various modules. To simplify layout and routing, I modified some interface pins
in the software ; the modified pins are shown below. For ordinary I/O, only the pins need to be modified. It's important to note that when modifying SPI, the priority of the SPI transmission interrupt and DMA transmission interrupt should not be too high, otherwise, a freeze may occur. Regarding saving waveforms on the SD card, I initially planned to save the waveforms as BMP images, as shown in the screenshot taken at the beginning. However, when I tried to take screenshots during runtime, it froze. I currently suspect this is due to the blocking mode used for writing and reading from the TF card, which is frequently interrupted by the ADC interrupt. I will try switching to DMA mode later. This function is not yet complete. The flying wire in the lower right corner is related to the relay power supply issue mentioned earlier (already modified in the PCB). The flying wire in the upper left corner is because the 3225 package crystal oscillator I purchased cannot power the Bluetooth chip, so I used the included 2-pin crystal oscillator for testing. Later, there is a video showing the ADC DMA buffer data being uploaded to the VOFA+ display via the Bluetooth transparent serial port. The ESP8266 is not yet soldered because I am still learning about network-related operations and knowledge. Once I learn, I will complete this part and create some fun functions. That's about it for now, a summary of my progress in participating in this training camp in my spare time. The code is on GitHub; feel free to follow it if you're interested. I will update it if new features are developed (if I have time). https://github.com/starry-m/H750_ADCDAC.git Future Plans and Ideas Functionality Completion Status Screenshots (To be completed ) Host Computer Display and Control (Bluetooth) (To be completed ) USB Simulated USB Flash Drive Firmware Upgrade (To be completed) WIFI Control (To be completed ) Although I'm still far from my goal of building a complete oscilloscope, this training camp experience allowed me to go through the design and drawing of hardware circuits, which is not bad. Problem Log The downloader can run after downloading, but the screen does not display after resetting and powering on . Solution: It should be due to unstable power supply during startup; a 1-second delay before startup resolves the issue and allows for normal display.







