#ifndef AUDIO_CONFIG_H #define AUDIO_CONFIG_H #include // Audio Configuration #define AUDIO_SAMPLE_RATE 22050U // Hz (22.05 kHz) #define AUDIO_BUFFER_SIZE 512U // Samples per buffer (для FFT) #define AUDIO_NUM_BUFFERS 2U // ADC Configuration #define AUDIO_ADC_CHANNEL 1U // PA1 = ADC1_IN1 #define AUDIO_ADC_GPIO_PORT GPIOA #define AUDIO_ADC_GPIO_PIN 1U // PA1 // Timer Configuration // Timer2 будет триггерить ADC на частоте AUDIO_SAMPLE_RATE // APB1 Timer clock = 72 MHz (на STM32F103 при SYSCLK=72MHz) // Формула: Timer_Freq = Timer_Clock / ((PSC + 1) * (ARR + 1)) // Для 22050 Hz: 72000000 / 22050 = 3265.3 // Используем PSC=0, ARR=3264 → 72MHz / 3265 = 22051 Hz (погрешность 0.004%) #define AUDIO_TIMER_PRESCALER 0U #define AUDIO_TIMER_PERIOD 3264U // ARR value // DMA Configuration #define AUDIO_DMA_CHANNEL DMA1_Channel1 // ADC1 использует DMA1_CH1 // Data Types typedef uint16_t audio_sample_t; // Callback вызывается когда буфер заполнен typedef void ( *audio_buffer_ready_callback_t)(audio_sample_t* buffer, uint32_t size); #endif /* AUDIO_CONFIG_H */