Здравствуйте!
Кто нибудь запускал ADC на STM32F303 на максимальной скорости - Dual interleaved mode?
АЦП не хочет работать на максимальной частоте 72MHz, если уменьшить частоту(HCLK/2) в два раза то все работает.
Делал, как написано здесь
Кто нибудь запускал ADC на STM32F303 на максимальной скорости - Dual interleaved mode?
АЦП не хочет работать на максимальной частоте 72MHz, если уменьшить частоту(HCLK/2) в два раза то все работает.
Делал, как написано здесь
Спойлер
Код: Выделить всё
void adc12Init (void){
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA->MODER |= GPIO_MODER_MODER0; //CH_B - Analog mode
GPIOA->MODER |= GPIO_MODER_MODER1; //CH_A - Analog mode
GPIOA->MODER |= GPIO_MODER_MODER6; //CH_B - Analog mode
RCC->AHBENR |= RCC_AHBENR_ADC12EN; //ADC Clock Enable
RCC->CFGR2 |= RCC_CFGR2_ADCPRE12_NO; //ADC12 - AHB clock
ADC1_2->CCR |= (0x2<<16); //00:(Asynchronous clock mode), 01: HCLK/1, 10: HCLK/2, 11: HCLK/4
ADC1_2->CCR |= (4<<8); //Delay
ADC1_2->CCR |= (7<<0); //Interleaved mode only
//ADC voltage regulator enable
ADC1->CR &=~ADC_CR_ADVREGEN;
ADC2->CR &=~ADC_CR_ADVREGEN;
//Calibration adc1_2
ADC1->CR |= ADC_CR_ADCAL;
while (ADC1->CR & ADC_CR_ADCAL);
ADC2->CR |= ADC_CR_ADCAL;
//adc1,2 enable
ADC1->CR |= ADC_CR_ADEN;
ADC2->CR |= ADC_CR_ADEN;
while ((ADC1->ISR & ADC_ISR_ADRD) == 0);
while ((ADC2->ISR & ADC_ISR_ADRD) == 0);
ADC1->CFGR |= ADC_CFGR_RES_1; //ADC1 - 8bit
ADC2->CFGR |= ADC_CFGR_RES_1; //ADC2 - 8bit
ADC1->SQR1 |= ADC_SQR1_SQ1_0; //ADC1_IN1
ADC2->SQR1 |= ADC_SQR1_SQ1_1 | ADC_SQR1_SQ1_0; //ADC2_IN3
// Set sampling time for regular group 1
ADC1->SMPR1 &=~ADC_SMPR1_SMP1; //1.5 ADC clock cycles
ADC2->SMPR1 &=~ADC_SMPR1_SMP1; //1.5 ADC clock cycles
ADC1->CFGR |= ADC_CFGR_CONT; //0: Single conversion mode, 1: Continuous conversion mode
ADC1->CFGR |= ADC_CFGR_OVRMOD;
ADC1->CR |= ADC_CR_ADSTART;
}
