stm32f4发现 A/D 设置



我想以8KHz速率设置AD转换器(用于语音采样)。 我知道如何使用计时器中断来做到这一点。 但是我想直接使用 DMA 进行设置。 工作时钟为144Mhz(应该在那里)-->ADC时钟为APB2/2=36Mhz 现在使用 ADC_SMPR1我可以添加 12+480 个循环,这还不够。 有没有将ADC时钟设置为8Khz的聪明方法?

为了使用 DMA 和 ADC,您不会降低内核或 DMA 的速度。提到的时钟不会影响采样率。采样率必须通过计时器设置!但是你不应该使用定时器中断! 使用以下方案:

  1. 在8KHZ上设置计时器,我想你有它,但不要启用interrypt!
  2. 设置事件以启动 ADC 转换,例如:hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO;
  3. 通过
  4. HAL_TIMEx_MasterConfigSynchronization功能将定时器与主模式进行配置,例如:

    TIM_MasterConfigTypeDef master_config = {
    .MasterOutputTrigger = TIM_TRGO_UPDATE,
    .MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE
    };
    HAL_TIMEx_MasterConfigSynchronization(&hAudioInTim3, &master_config);
    
  5. 运行 ADC:HAL_ADC_Start_DMA(&hadc, buffer, size);

  6. 等待HAL_ADC_ConvCpltCallback事件,然后处理您的数据。

相关内容

  • 没有找到相关文章

最新更新