0
我想以8KHz的速率設置AD轉換器(用於語音採樣)。 我知道如何用定時器中斷來做到這一點。 但是我想直接使用DMA進行設置.. 工作時鐘在144Mhz(應該在那裏) - > ADC時鐘是APB2/2 = 36Mhz 現在使用ADC_SMPR1我可以添加12 + 480個週期,而不是足夠。 有什麼聰明的方法將ADC時鐘設置爲8Khz?stm32f4discovery A/D設置
我想以8KHz的速率設置AD轉換器(用於語音採樣)。 我知道如何用定時器中斷來做到這一點。 但是我想直接使用DMA進行設置.. 工作時鐘在144Mhz(應該在那裏) - > ADC時鐘是APB2/2 = 36Mhz 現在使用ADC_SMPR1我可以添加12 + 480個週期,而不是足夠。 有什麼聰明的方法將ADC時鐘設置爲8Khz?stm32f4discovery A/D設置
爲了使用DMA和ADC,您不會降低Core或DMA的速度。提及的時鐘不會影響採樣率。採樣率必須由計時器設置!但是你不應該使用定時器中斷! 使用以下方案:
HAL_TIMEx_MasterConfigSynchronization
功能,例如hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO;
果醬計時器到主模式:
TIM_MasterConfigTypeDef master_config = {
.MasterOutputTrigger = TIM_TRGO_UPDATE,
.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE
};
HAL_TIMEx_MasterConfigSynchronization(&hAudioInTim3, &master_config);
運行ADC:HAL_ADC_Start_DMA(&hadc, buffer, size);
HAL_ADC_ConvCpltCallback
事件