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

 
 
> АЦП в STM32F100, не работает
ELEKTROS
сообщение Jul 27 2011, 17:43
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Добрый день, что то с АЦП не ладиться у меня пните в нужном направлении или подскажите что не так?
Код
  RCC->CFGR &= ~RCC_CFGR_ADCPRE;
  RCC->CFGR |= RCC_CFGR_ADCPRE_DIV2;
  RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
  ADC1->CR1=ADC_CR1_SCAN|ADC_CR1_JAUTO;
  ADC1->CR2=ADC_CR2_ADON|ADC_CR2_CONT|ADC_CR2_JSWSTART;
  ADC1->SMPR2=ADC_SMPR2_SMP4_1|ADC_SMPR2_SMP5_1;
  ADC1->JSQR=ADC_JSQR_JL_0|ADC_JSQR_JSQ1_2|ADC_JSQR_JSQ2_0|ADC_JSQR_JSQ2_2;
  //// калибровка АЦП ////
  ADC1->CR2 |= ADC_CR2_RSTCAL;
  while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_RSTCAL);
  ADC1->CR2 |= ADC_CR2_CAL;
  while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_CAL);
  ADC1->CR2=ADC_CR2_ADON;

Хочу использовать ижекционных канала два 4 и 5-й в непрерывном преобразовании.
потом считываю просто из регистров ADC_JDR1_JDATA и ADC_JDR2_JDATA в любой момент времени. А там постоянно висят единицы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ELEKTROS
сообщение Sep 12 2011, 07:16
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Вообщем, видать АЦП не запускается потому что все регистры согласно тому что хочу записаны. Программный запуск, два ижекционных канала. Немного подправил так наверное должно быть, но опять не хочет. Читаю вот отсюда ADC1->JDR1 и ADC1->JDR2.
Код
RCC->CFGR &= ~RCC_CFGR_ADCPRE;
  RCC->CFGR |= RCC_CFGR_ADCPRE_DIV2;
  RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
  ADC1->CR1=ADC_CR1_SCAN|ADC_CR1_JAUTO;
  ADC1->CR2=ADC_CR2_EXTSEL | ADC_CR2_JEXTSEL | ADC_CR2_CONT | ADC_CR2_JSWSTART;
  ADC1->SMPR2=ADC_SMPR2_SMP4_1|ADC_SMPR2_SMP5_1;
  ADC1->SQR1=ADC_SQR1_L_0;
  ADC1->SQR3=ADC_SQR3_SQ1_2|ADC_SQR3_SQ2_2|ADC_SQR3_SQ2_0;
  ADC1->JSQR=ADC_JSQR_JL_0|ADC_JSQR_JSQ1_2|ADC_JSQR_JSQ2_0|ADC_JSQR_JSQ2_2;
  //ADC1->CR2 |=ADC_CR2_ADON;
  SETBIT_REG_PERIPH(ADC1->CR2,0);
  ADC1->CR2 |= ADC_CR2_RSTCAL;
  while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_RSTCAL);
  ADC1->CR2 |= ADC_CR2_CAL;
  while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_CAL);
Go to the top of the page
 
+Quote Post



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

 


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


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