Далее непонятный эффект, если ставлю предделитель на 4 (тактовая ADC = 12 MHz), то выборку могу поставить только 1.5 ADC clock cycles, при 7.5 сс данные становятся случайными, хотя:
7.5cc + 12.5cc=20cc, плюс еще trigger start latency 2.625 ADC clock cycles = 22.625cc => 1/12MHz * 22.625 = 1,885 us
Если ставлю предделитель на 2 (тактовая ADC = 24 MHz, что ни есть хорошо),
То все работает вплоть до выборки 28,5сс
28.5cc + 12.5cc + 2.75сс =43.75cc, 2.75 => 1/24MHz * 43,75 = 1.823us
Код
// ADC1
ADC1->CFGR1 = ADC_CFGR1_DISCEN; //discontinuos mode, the each TRIGOI event do convertion
//ADC1->CFGR1 = ADC_CFGR1_CONT | ADC_CFGR1_SCANDIR;
//ADC1->CFGR2 |= ADC_CFGR2_CKMODE_1; //APBCLK/4 = 12MHz
ADC1->CFGR2 |= ADC_CFGR2_CKMODE_0; //APBCLK/2 = 24MHz
ADC1->CFGR1 |= ADC_CFGR1_EXTSEL_1 | ADC_CFGR1_EXTEN_0; // SEL = 010 TIM2 TRIGOut EN = 01 ON RISING
// Время для всех каналов
//ADC1->SMPR &= !ADC_SMPR_SMP; //Для всех каналов 000: 1.5 ADC clock cycles
//ADC1->SMPR |= ADC_SMPR_SMP_0; //Для всех каналов 001: 7.5 ADC clock cycles, 7.5cc + 12.5cc=20cc, 1/12MHz * 20 = 1,66us 1/24MHz * 20 = 0.8us
//ADC1->SMPR |= ADC_SMPR_SMP_1; //Для всех каналов 010: 13.5 ADC clock cycles, 13.5cc + 12.5cc=26cc, 1/12MHz * 26 = 2.16us 1/24MHz * 26 = 1.08us
ADC1->SMPR |= ADC_SMPR_SMP_1 | ADC_SMPR_SMP_0; //Для всех каналов 011: 28.5 ADC clock cycles, 28.5cc + 12.5cc=41cc, 1/24MHz * 41 = 1.708us
ADC1->CFGR1 = ADC_CFGR1_DISCEN; //discontinuos mode, the each TRIGOI event do convertion
//ADC1->CFGR1 = ADC_CFGR1_CONT | ADC_CFGR1_SCANDIR;
//ADC1->CFGR2 |= ADC_CFGR2_CKMODE_1; //APBCLK/4 = 12MHz
ADC1->CFGR2 |= ADC_CFGR2_CKMODE_0; //APBCLK/2 = 24MHz
ADC1->CFGR1 |= ADC_CFGR1_EXTSEL_1 | ADC_CFGR1_EXTEN_0; // SEL = 010 TIM2 TRIGOut EN = 01 ON RISING
// Время для всех каналов
//ADC1->SMPR &= !ADC_SMPR_SMP; //Для всех каналов 000: 1.5 ADC clock cycles
//ADC1->SMPR |= ADC_SMPR_SMP_0; //Для всех каналов 001: 7.5 ADC clock cycles, 7.5cc + 12.5cc=20cc, 1/12MHz * 20 = 1,66us 1/24MHz * 20 = 0.8us
//ADC1->SMPR |= ADC_SMPR_SMP_1; //Для всех каналов 010: 13.5 ADC clock cycles, 13.5cc + 12.5cc=26cc, 1/12MHz * 26 = 2.16us 1/24MHz * 26 = 1.08us
ADC1->SMPR |= ADC_SMPR_SMP_1 | ADC_SMPR_SMP_0; //Для всех каналов 011: 28.5 ADC clock cycles, 28.5cc + 12.5cc=41cc, 1/24MHz * 41 = 1.708us
Не хватает чуть чуть...
Может кто-то имеет опыт в этом деле. Получится запустить на ADC на 12 MHz с выборкой 7,5сс?