АЦП STM32

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

АЦП STM32

Сообщение Z_h_e »

Хочу запустить АЦП STM32F103C8. Надо опрашивать постоянно два канала. Настраиваю вот так.
Спойлер

Код: Выделить всё

CC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

ADC1->CR2 |= ADC_CR2_CAL; //Запуск калибровки АЦП
while (!(ADC1->CR2 & ADC_CR2_CAL));

//Задаем длительность выборки
ADC1->SMPR2 |= (ADC_SMPR2_SMP8_2 | ADC_SMPR2_SMP8_1 | ADC_SMPR2_SMP8_0);

ADC1->CR2 |= ADC_CR2_JEXTSEL; //Преобразование инжектированной группы

ADC1->CR2 |= ADC_CR2_JEXTTRIG; //Разрешаем внешний запуск инжектированной группы
ADC1->CR2 |= ADC_CR2_CONT; //Преобразования запускаются одно за другим
ADC1->CR1 |= ADC_CR1_JAUTO; //Разрешить преобразование инжектированной группы


ADC1->JSQR = ADC_JSQR_JL_0 | //два канала в группе
			ADC_JSQR_JSQ3_3| //Задаем номер канала (выбран IN8) 
			ADC_JSQR_JSQ4_3 | ADC_JSQR_JSQ4_0 //Задаем номер канала (выбран IN9) 
			;

ADC1->CR2 |= ADC_CR2_ADON;//Теперь включаем АЦП 

ADC1->CR2 |= ADC_CR2_JSWSTART; //Запуск преобразований
По идее данные для канала IN8 должны быть в регистре JDR1, для IN9 в JDR2. В JDR1 действительно есть данные адекватно каналу8, а вот в остальных JDR2-4 лежат нули. Подскажите в чем у меня ошибка, спасибо.

----------------------------

Обратил внимание, что время выборки для 8 и 9 каналов у меня диаметрально разные. Скорректировал код

Код: Выделить всё

//Задаем длительность выборки
ADC1->SMPR2 |= ADC_SMPR2_SMP8_2 | ADC_SMPR2_SMP8_1 | ADC_SMPR2_SMP8_0| //выборка 8 канала
			   ADC_SMPR2_SMP9_2 | ADC_SMPR2_SMP9_1 | ADC_SMPR2_SMP9_0; //выборка 9 канала
Но это тоже ничего не изменило. Это тут сейчас максимальное время стоит, если поставить минимальное то тоже ничего не меняется.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: АЦП STM32

Сообщение Z_h_e »

Запустил я АЦП как хотел, не хватало вот этого

Код: Выделить всё

ADC1->CR1|=ADC_CR1_SCAN;//сканирование каналов
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Ответить

Вернуться в «ARM»