This project leverages a dual-core microcontroller to create an integrated oscilloscope and signal generator system with a touchscreen interface. The microcontroller is divided into two cores, each dedicated to specific functionalities to ensure smooth and efficient operation.
-
CM7 Core:
- Manages the oscilloscope functionality, capturing and plotting data in real-time.
- Handles the user interface (UI) on the touchscreen, providing an intuitive and interactive experience.
- Offers various oscilloscope features such as triggering and scaling.
-
CM4 Core:
- Operates the signal generator, allowing users to select and generate different waveforms.
- Supports multiple waveform types including sine, square, triangle.
-
Oscilloscope:
- Real-time data acquisition and plotting.
- Triggering options and adjustable scaling.
-
Signal Generator:
- Multiple waveform generation (sine, square, triangle, ecc.).
-
Touchscreen Interface:
- User-friendly touchscreen for easy navigation and control.
- Real-time waveform display and interactive oscilloscope controls.
- Intuitive menus for selecting and configuring the signal generator parameters.
To use this project, you will need the following software:
- OpenOCD
- ARM toolchain
To use this project, you will need the following hardware:
- STM32H747I-DISCO Discovery kit
- Linear potentiometers
git clone git@github.com:Tonidotpy/oscilloscope.git
cd Makefile
make flash -j
Oscilloscope
├── CM4 # signal generator core
│ └── Core
│ ├── Inc
│ │ ├── main.h
│ │ ├── stm32h7xx_hal_conf.h
│ │ ├── stm32h7xx_it.h
│ └── Src
│ ├── main.c
│ ├── stm32h7xx_hal_msp.c
│ ├── stm32h7xx_it.c
│ ├── syscalls.c
│ └── sysmem.c
├── CM7 # oscilloscope core
│ └── Core
│ ├── Inc
│ │ ├── chart_handler.h
│ │ ├── config.h
│ │ ├── lcd.h
│ │ ├── lvgl_api.h
│ │ ├── lvgl_colors.h
│ │ ├── main.h
│ │ ├── stm32h7xx_hal_conf.h
│ │ ├── stm32h7xx_it.h
│ │ └── touch_screen.h
│ └── Src
│ ├── chart_handler.c
│ ├── lcd.c
│ ├── lvgl_api.c
│ ├── main.c
│ ├── stm32h7xx_hal_msp.c
│ ├── stm32h7xx_it.c
│ ├── syscalls.c
│ ├── sysmem.c
│ └── touch_screen.c
├── Common
| └── Inc
│ └── waves.h # contains all the points of the signal generator
├── Drivers
│ ├── BSP
│ ├── CMSIS
│ └── STM32H7xx_HAL_Driver
├── Makefile
│ ├── CM4
│ ├── CM7
│ └── Makefile
├── Scripts
| ├── generate_waves.cpp # Script to generate waves.h
| └── plot.py # used to plot waves.h
├── README.md
├── openocd.cfg
└── oscilloscope.ioc
- Antonio Gelain: Signal Rescaling, Micro configuration, Data processing, LVGL integration
- Enrico Dal Bianco: Signal generator, Trigger, Data processing, User Interface