我在 STM32H753VIT6 上对 DFSDM1 完成了配置,外接一颗 MEMS 麦克风。现在遇到的问题是 DMA 的缓冲区回调函数不会调用。
我参考 AN5027 应用笔记,同时参考 Github 上的示例工程:
https://github.com/STMicroelectronics/STM32CubeH7/tree/master/Projects/STM32H743I‑EVAL/Examples/DFSDM/DFSDM_AudioRecord
调试时已经关闭了 D‑Cache,并且把音频采样频率降低到 4 kHz,以便通过串口调试输出。
下面是 main 函数:
DFSDM_Filter_HandleTypeDef hdfsdm1_filter0;
DFSDM_Channel_HandleTypeDef hdfsdm1_channel4;
DMA_HandleTypeDef hdma_dfsdm1_flt0;
.
.
.
.
int32_t LeftRecBuff[1024];
void HAL_DFSDM_FilterRegConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter)
{
/*Never Reached*/
}
int main(void)
{
HAL_Init();
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_DFSDM1_Init();
/* USER CODE BEGIN 2 */
// imu_init(&hspi4, GPIOE, GPIO_PIN_4 /* IIM-42652 CS */);
HAL_DFSDM_FilterRegularStart_DMA(&hdfsdm1_filter0, LeftRecBuff, 1024);
while (1)
{}
}
|
|