feat(mic): try1: setup sound with usb
This commit is contained in:
29
firmware/App/Inc/audio_adc.h
Normal file
29
firmware/App/Inc/audio_adc.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#ifndef AUDIO_ADC_H
|
||||
#define AUDIO_ADC_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "audio_config.h"
|
||||
|
||||
/**
|
||||
* @brief Инициализация ADC, DMA и Timer для audio capture
|
||||
* @param callback Функция, вызываемая при заполнении буфера
|
||||
* @return true если успешно, false при ошибке
|
||||
*/
|
||||
bool audio_adc_init(audio_buffer_ready_callback_t callback);
|
||||
|
||||
/**
|
||||
* @brief Запуск непрерывного захвата аудио
|
||||
*/
|
||||
void audio_adc_start(void);
|
||||
|
||||
/**
|
||||
* @brief Остановка захвата аудио
|
||||
*/
|
||||
void audio_adc_stop(void);
|
||||
|
||||
/**
|
||||
* @brief Получить текущее количество обработанных буферов
|
||||
*/
|
||||
uint32_t audio_adc_get_buffer_count(void);
|
||||
|
||||
#endif /* AUDIO_ADC_H */
|
||||
35
firmware/App/Inc/audio_config.h
Normal file
35
firmware/App/Inc/audio_config.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef AUDIO_CONFIG_H
|
||||
#define AUDIO_CONFIG_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// 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 */
|
||||
Reference in New Issue
Block a user