реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> АЦП stm32f205
Sonya
сообщение Mar 11 2013, 09:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 10-02-11
Пользователь №: 62 860



Не работает АЦП stm32f205. Собственные мысли, где может быть ошибка, кончились, поэтому обращаюсь с просьбой помочь разобраться.
Пытаюсь следить за напряжением на PA.1, там где положено быть первому каналу АЦП (как я понимаю любого из трех модулей АЦП).
Опорное напряжение = 3,3В. Напряжение на PA.1 меняю от 0,2 до 1,5 В.
Вот мой скромный код:
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;//тактирование порта А
GPIOA->MODER |= GPIO_MODER_MODER1; //analog mode PA.1
GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR1; //No pull-up, pull-down PA.1
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; //тактирование АЦП
ADC1->CR1 &= ~ADC_CR1_RES; //12-битный результат
ADC1->CR2 |= ADC_CR2_CONT;//Continuous conversion - не понимаю, что это такое, роли не играет
//ADC1->CR1 |= ADC_CR1_JAUTO; //не играет роли
ADC1->CR2 &= ~ADC_CR2_ALIGN;//выравнивание по правому краю
ADC1->JSQR |= ADC_JSQR_JL;//разрешаю все четыре преобразования
ADC1->JSQR |= ADC_JSQR_JSQ1_0;//выставляю, что первое преобразование - это будет с моего первого канала на PA.1
ADC1->CR2 |= ADC_CR2_ADON;//разрешаю АЦП
ADC1->CR2 |= ADC_CR2_JSWSTART; //стартую
while (!(ADC1->SR & ADC_SR_JEOC));//жду окончания
INA = ADC1-> JDR1;//забираю результат в регистр INA

После выполнения этих нехитрых операций в регистре INA появляется результат в десятичном виде: 4001 счета при 0,2В на PA.1 и 4063 счета при 1,5В на PA.1.
Получается контроллер нагло врет, выдавая мне эти результаты. Но почему?

Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 18 2013, 11:32
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Я в регистры не пишу, пользуюсь библиотекой (кто хочет, кидайте тапки. Курил, курю и курить буду sm.gif ).
У меня есть ещё одна команда, которой я у Вас не заметил:
// ADC1 regular channel1 configuration
ADC_RegularChannelConfig ( ADC1, ADC_Channel_1, 1, ADC_SampleTime_3Cycles );

Там манипуляции с регистром SMPR2 ....

PS.
У меня STM32F4 ...


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 18 2013, 11:49
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Первое преобразование описывается битами ADC_JSQR_JSQ4, это в примечании указано.
Go to the top of the page
 
+Quote Post
Sonya
сообщение Mar 20 2013, 09:44
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 10-02-11
Пользователь №: 62 860



hd44780, разный time selection выставляла, не помогло.
ViKo, я задаю JL[1:0] = 3, значит первое преобразование описывается в JSQ1[4:0].
Думаю, что у меня просто АЦП сгорел.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 20 2013, 10:22
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Sonya @ Mar 20 2013, 12:44) *
ViKo, я задаю JL[1:0] = 3, значит первое преобразование описывается в JSQ1[4:0].

Да, правильно. А остальные 3 преобразования что делают? Задайте им тот же вход, потом сравните результаты.
Еще тактовые частоты посмотрите.
А бит ADC_SR_JEOC потом сбрасываете?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 03:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01626 секунд с 7
ELECTRONIX ©2004-2016