Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

ADC in STM32F373

Непрочитано 20.01.2017, 02:20  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию ADC in STM32F373

Доброй ночи! Запутался с АЦП... Чтото видимо недочитал...Подскажите что неправильно сделал плиз.
Вот инит
PHP код:
void ADC_init(void)
{
   /*
      ADC_IN0 PA0
      ADC_IN1 PA1
      ADC_IN3 PA3
   */
   
   RCC-›AHBENR |= RCC_AHBENR_GPIOAEN;
   GPIOA-›MODER |= GPIO_MODER_MODER0 | GPIO_MODER_MODER1 | GPIO_MODER_MODER3; // PA0,1,3 - analog, MODER = 11
   GPIOA-›OTYPER &=~ GPIO_OTYPER_OT_0 & ~GPIO_OTYPER_OT_1 & ~GPIO_OTYPER_OT_3 ; //OUT Push-pull PA0,1,3, OT4 = 00
   GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR0 | GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR3; // OSPEEDR0,1,3 = 11 Hight
   GPIOA-›PUPDR &= ~GPIO_PUPDR_PUPDR0 & ~GPIO_PUPDR_PUPDR1 & ~GPIO_PUPDR_PUPDR3; // PUPDR0,1,3 = 00  noPULLUP 
//   GPIOB-›AFR[0] |= (0x02 ‹‹ 4*6) | (0x02 ‹‹ 4*7); // AF2 PB6,7
   
   RCC-›APB2ENR |= RCC_APB2ENR_ADC1EN; // включаем тактирование АЦП
   
   ADC1-›CR2 |= ADC_CR2_CAL;  
   while ((ADC1-›CR2 & ADC_CR2_CAL)) ; //ждем окончания калибровки 
 
   ADC1-›CR1 |= ADC_CR1_JDISCEN  // Discontinuous mode on injected channels
               | ADC_CR1_JAUTO   // Automatic Injected Group conversion
               //| ADC_CR1_SCAN    // Scan mode
               | ADC_CR1_JEOCIE  // Interrupt enable for injected channels
               | ADC_CR1_EOCIE   // Interrupt enable for EOC
               | ADC_CR1_DISCNUM_1
               ;
   
   ADC1-›CR2 |= ADC_CR2_JSWSTART // Start conversion of injected channels
               
               ;
   
//   ADC1-›JOFR1 = ;

// у нас 4 инжектированных канала. Тут мы выбираем от 1 до 4 каналов рабочих. И выбираем номера канала.

ADC1-›JSQR |= ADC_JSQR_JL_1
            | ADC_JSQR_JSQ2_0
            | ADC_JSQR_JSQ3_1 | ADC_JSQR_JSQ3_0
            ;
            
 NVIC_EnableIRQ(ADC1_IRQn); // включаем прерывания АЦП           
 ADC1-›CR2 |= ADC_CR2_ADON;  
 
 
  
}
После запуска калибровки висит в вайле. А без калибровки не работает...
VSSA - на минусе
VDDA - на плюс 3.3в
VREF+ - на 3.3в
VDD - на 3.3в
VSSSD - на минусе
VDDSD - на 3.3в
VREFSD+ - на 3.3в
VDD - на 3.3в
VSS - на минусе
VBAT - на подключен 
Реклама:
miwutka вне форума  
Непрочитано 22.01.2017, 22:05  
EugenPKH
Прописка
 
Регистрация: 08.10.2009
Сообщений: 101
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
EugenPKH на пути к лучшему
По умолчанию Re: ADC in STM32F373

Сообщение от miwutka Посмотреть сообщение
Доброй ночи! Запутался с АЦП... Чтото видимо недочитал...Подскажите что неправильно сделал плиз.
Вот инит
PHP код:
void ADC_init(void)
{
   /*
      ADC_IN0 PA0
      ADC_IN1 PA1
      ADC_IN3 PA3
   */
   
   RCC-›AHBENR |= RCC_AHBENR_GPIOAEN;
   GPIOA-›MODER |= GPIO_MODER_MODER0 | GPIO_MODER_MODER1 | GPIO_MODER_MODER3; // PA0,1,3 - analog, MODER = 11
   GPIOA-›OTYPER &=~ GPIO_OTYPER_OT_0 & ~GPIO_OTYPER_OT_1 & ~GPIO_OTYPER_OT_3 ; //OUT Push-pull PA0,1,3, OT4 = 00
   GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR0 | GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR3; // OSPEEDR0,1,3 = 11 Hight
   GPIOA-›PUPDR &= ~GPIO_PUPDR_PUPDR0 & ~GPIO_PUPDR_PUPDR1 & ~GPIO_PUPDR_PUPDR3; // PUPDR0,1,3 = 00  noPULLUP 
//   GPIOB-›AFR[0] |= (0x02 ‹‹ 4*6) | (0x02 ‹‹ 4*7); // AF2 PB6,7
   
   RCC-›APB2ENR |= RCC_APB2ENR_ADC1EN; // включаем тактирование АЦП
   
   ADC1-›CR2 |= ADC_CR2_CAL;  
   while ((ADC1-›CR2 & ADC_CR2_CAL)) ; //ждем окончания калибровки 
 
   ADC1-›CR1 |= ADC_CR1_JDISCEN  // Discontinuous mode on injected channels
               | ADC_CR1_JAUTO   // Automatic Injected Group conversion
               //| ADC_CR1_SCAN    // Scan mode
               | ADC_CR1_JEOCIE  // Interrupt enable for injected channels
               | ADC_CR1_EOCIE   // Interrupt enable for EOC
               | ADC_CR1_DISCNUM_1
               ;
   
   ADC1-›CR2 |= ADC_CR2_JSWSTART // Start conversion of injected channels
               
               ;
   
//   ADC1-›JOFR1 = ;

// у нас 4 инжектированных канала. Тут мы выбираем от 1 до 4 каналов рабочих. И выбираем номера канала.

ADC1-›JSQR |= ADC_JSQR_JL_1
            | ADC_JSQR_JSQ2_0
            | ADC_JSQR_JSQ3_1 | ADC_JSQR_JSQ3_0
            ;
            
 NVIC_EnableIRQ(ADC1_IRQn); // включаем прерывания АЦП           
 ADC1-›CR2 |= ADC_CR2_ADON;  
 
 
  
}
После запуска калибровки висит в вайле. А без калибровки не работает...
VSSA - на минусе
VDDA - на плюс 3.3в
VREF+ - на 3.3в
VDD - на 3.3в
VSSSD - на минусе
VDDSD - на 3.3в
VREFSD+ - на 3.3в
VDD - на 3.3в
VSS - на минусе
VBAT - на подключен 
аналоговая часть не включена и ненастроенная частота для adc
EugenPKH вне форума  
Непрочитано 22.01.2017, 23:33  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: ADC in STM32F373

Спасибо, я уже разобрался. Если долго мучиться то что-нибудь получится )) Зато увидел что ацп делает 820000 измерений в секунду. Произвел такой замер... при частоте ядра 128 МГц. Интересно сколько надо измерений делать за 20 мкс чтобы получился trueRMS вольтметр...???
Кстати тут оцифровываются 3 канала по очереди. Когда тоже самое сделал на инжектированных то опрос трех происходил 8000 измерений в секунду и вывод на ЖК 16х2 был в хлам заторможенный... На форуме вычитал что сильно падает производительность ядра, но не думал что настолько....

Последний раз редактировалось miwutka; 22.01.2017 в 23:35.
miwutka вне форума  
Непрочитано 23.01.2017, 01:32  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,274
Сказал спасибо: 11,856
Сказали Спасибо 4,157 раз(а) в 3,175 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: ADC in STM32F373

На тему TrueRMS надо отсюда например начать. Ну и оценить зависимость погрешности от числа измерений за период для реального сигнала не совсем синусоидальной формы одной частоты.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…

Последний раз редактировалось mike-y-k; 23.01.2017 в 05:03.
mike-y-k вне форума  
Непрочитано 25.01.2017, 23:18  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: ADC in STM32F373

mike-y-k, я знаю как RMS считается... Мне интересно сколько нужно обеспечить выборок за единицу времени чтобы было TrueRMS......
miwutka вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stm32F030f4 + ADC + DMA miwutka ARM 40 05.11.2016 12:42
ADC в режиме Sleep Mode kolobokus AVR 2 08.12.2014 17:18
Tim19 -> DMA -> значение ADC в memory kvark85 ARM 6 03.06.2014 15:00
LPC2148 ADC напряжение на выходе nerozero Микроконтроллеры, АЦП, память и т.д 6 14.07.2012 09:35
Шумит и свистит ADC на LPC2148 Vas2 Микроконтроллеры, АЦП, память и т.д 5 01.03.2009 16:14


Часовой пояс GMT +4, время: 01:39.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.