Dual Function Generator (DAC/DMA) part 1 | STM32 Tutorial #88

This is part 1 of a multi-part video creating a dual channel function generator on a STM32 MCU. Buy Streamline here: https://currentmakers.com/products/st... Raspberry Pi Pico World channel:    / @rppicoworld   ADC and DAC page on the STM32World wiki: https://stm32world.com/wiki/STM32_ADC... Original 1 channel Sine Wave:    • STM32 Tutorial #15 - Sine wave on DAC with...   Original dual channel using FreeRTOS:    • STM32 Tutorial #30 - Sine wave (Dual DAC) ...   Blinky Orgy video explaining LED connectivity:    • RP2350 Blinky Orgy | RP Pico #4   #STM32 #GettingStarted #Tutorial #STM32CubeIDE #STM32CubeMX #STM32World #CurrentMakers #Streamline #STM32F407 0:00:00 Intro and goal 0:01:29 WHY this particular video 0:03:58 Theoretical background - the math - sine waves 0:05:00 The STM32World Wiki 0:05:48 The Unit Circle 0:08:06 The Sine Wave 0:08:45 Frequency, angular velocity or rate of angle change 0:12:01 The hardware set - Streamline 0:13:51 Configuring the MCU in STM32CubeMX 0:14:47 The Project Manager setup - remember to select STM32CubeIDE 0:16:02 The basic steps - swd, clock and usart 0:17:05 The clock configuration 0:18:55 The usart used for serial debugging 0:19:49 The LED and BTN pins 0:20:36 Enabling BOTH DACs 0:22:15 Enabling two DMA channels - one for each DAC 0:23:39 Configuring Timer 6 - TIM6 0:24:17 Looking up the timer bus in the datasheet 0:27:20 Configuring the timer values to get 100 kHz 0:29:10 Adding the ARM CMSIS DSP library for fast math 0:30:41 Firing up STM32CubeIDE and adding the new project 0:31:46 Looking at main.c and first build 0:32:37 Adding printf redirect 0:34:10 Superloop timed execution - led flash and tick print 0:38:06 First run - LED not flashing 0:40:38 Fixing LED in STM32CubeMX 0:42:32 Flashing fixed version - now blinking 0:43:44 Include the math.h and arm_math.h - fixing mistake 0:46:43 Adding channel handlers 0:47:48 Project defines / settings 0:49:31 Global variables - dma buffers and handlers 0:54:50 Defining the dma callbacks 0:56:50 The buffer update calculations shared between the callbacks 0:58:50 Starting the timer and DACs 1:00:33 Compiling and running 1:01:04 Flashing the project - working! 2 Beautiful Sine Waves 1:03:02 Performance analysis 1:04:49 Comparing performance penalty for DAC and DMA 16 million loops vs. 14 1:04:59 Using the built-in statistical profiler 1:07:50 Profiler result - less than 10 % spend on Sine Wave calculation 1:09:50 Increasing the sample rate to 200 ksps 1:13:31 Running profiler with 200 ksps about 18 % spend in calculation 1:15:10 Final thoughts and outtro Corrections: 41:12 I don't think I made a mistake - STM32CubeMX bug? 48:51 I meant 12 bit 4096