Возникла у меня проблема оцифровки сигнала SDADC микроконтроллера STM32F373.
Проблема заключается в следующем. В RM0313 стр. 231 на мк. STM32F373 написано 50 ksps input sampling rate for single-channel operation. Это получается, что ацп может оцифровать прямоугольный сигнал длительностью 20 мкс.
Я обрадовался этому мне как раз нужно оцифровывать сигналы прямоугольной формы длительность от 20 мкс до 25 мкс. Амплитуда 1В
Написал простенький код для теста, начал смотреть результаты в регистре RDATAR и увидал, что данные в RDATAR 700-800 в момент формирования прямоугольного сигнала 1В, а должно быть примерно 10000. Опора 3,3В внешняя.
Синхронизацию прямоугольного импульса с входом ацп сделал очень простую (для теста): На рисунки прямоугольник сформированный на входе ацп.
1.Устанавливаю порт ввода вывода в "1"
2.Читаю данные из регистра SDADC1->RDATAR. После этого должен быть сброшен бит DADC_ISR_REOCF.
3.Жду установки бита DADC_ISR_REOCF, while( (SDADC1->ISR&SDADC_ISR_REOCF) != SDADC_ISR_REOCF);
4.Забираю данные из RDATAR (SDADC1->RDATAR)
Код
N1_SIGNAL_ON;
adcSD = SDADC1->RDATAR;
while( (SDADC1->ISR&SDADC_ISR_REOCF) != SDADC_ISR_REOCF);
adcSD = SDADC1->RDATAR;
N1_SIGNAL_OFF;
adcSD = SDADC1->RDATAR;
while( (SDADC1->ISR&SDADC_ISR_REOCF) != SDADC_ISR_REOCF);
adcSD = SDADC1->RDATAR;
N1_SIGNAL_OFF;
Запускаю АЦП : SDADC1->CR2 |= SDADC_CR2_RSWSTART;
Значение регистров:
CR1 = 0x00;
CR2 = 0x01440001;
CONF0R = 0x04700FCB; калибровку ацп делаю.
Уже все перечитал в мануале, нашел только одну строчку:
In fast continuous mode (FAST=1), the first conversion takes still 360 SDADC
clocks, but then each subsequent conversion finishes in 120 SDADC clocks.
Очень мало информации по FAST режим.
Подумываю о то что ацп не может преобразовывать на частотах выше 16600 Гц.
Если отключить FAST то ацп работает нормально.