Easyelectronics.ru

Электроника для всех
Текущее время: 26 май 2020, 18:41

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 13:42 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
Пытаюсь запустить температурный датчик. Уже и снипппеты попробовал google перерыл и вроде всё правильно делаю, а всё равно возвращает 4095....
Коллеги, подскажите, пожалуйста, где я прое@...
Код:
// Enable clock on ADC
   RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
   RCC->CR2 |= RCC_CR2_HSI14ON;
   while ((RCC->CR2 & RCC_CR2_HSI14RDY) == 0)
      ;
   ADC1->CHSELR = ADC_CHSELR_CHSEL16; /* (3) */
   // Start calibration of ADC
   ADC1->CR |= ADC_CR_ADDIS;
   while ((ADC1->CR & ADC_CR_ADEN) != 0)
      ;//TODO: make time management
   ADC1->CR |= ADC_CR_ADCAL;

   // Wait and of calibration
   while ((ADC1->CR & ADC_CR_ADCAL) != 0)
      ; //TODO: make time management
   // Select discontinious mode
   ADC1->CFGR1 |= ADC_CFGR1_DISCEN;


   // Select sampling mode
   ADC1->SMPR |= ADC_SMPR_SMP_0 | ADC_SMPR_SMP_1 | ADC_SMPR_SMP_2;
   //Enable temp sensor
   ADC->CCR |= ADC_CCR_TSEN;
   // Enable ADC interrupts
   ADC1->IER |= ADC_IER_EOCIE;
   // Enable IRQ on NVIC
   NVIC_EnableIRQ(ADC1_IRQn);
   //Enable ADC
   ADC1->CR |= ADC_CR_ADEN;

   CurrentChannel = 0; /* Initializes the CurrentChannel */
   ADC1->CR |= ADC_CR_ADSTART; /* start the ADC conversions */

//ну и в прерывании
Код:
void ADC1_COMP_IRQHandler(void)
{

   if ((ADC1->ISR & ADC_ISR_OVR) != 0)  /* checks OVR has triggered the IT */
   {
      ADC1->ISR |= ADC_ISR_EOC | ADC_ISR_EOSEQ | ADC_ISR_OVR; /* clears all pending flags */
      ADC1->CR |= ADC_CR_ADSTP; /* stop the sequence conversion */
      /* the data in the DR is considered as not valid */
   }
   else
   {
      if ((ADC1->ISR & ADC_ISR_EOC) != 0)  /* checks EOC has triggered the IT */
      {
         ADC1->ISR |= ADC_ISR_EOC; /* clears the pending bit */
         temperature_C = ADC1->DR;
         GPIO_TEST->ODR ^= GPIO_ODR_TEST;
         ADC1->CR |= ADC_CR_ADSTART; /* start the ADC conversions */
         
      }
      if ((ADC1->ISR & ADC_ISR_EOSEQ) != 0)  /* checks EOSEQ has triggered the IT */
      {
         ADC1->ISR |= ADC_ISR_EOSEQ; /* clears the pending bit */
         temperature_C = ADC1->DR;
         //CurrentChannel = 0; /* reinitialize the CurrentChannel */
         GPIO_TEST->ODR ^= GPIO_ODR_TEST;
         ADC1->CR |= ADC_CR_ADSTART; /* start the ADC conversions */
      }
   }
}

в прерывание заходит, но всё равно 4095.... что за х....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 15:21 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4601
Откуда: КЧР, поселок Нижний Архыз
Я DMA обычно использую, вот так работает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 15:53 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
и через DMA пробовал, остальные каналы - нормально, а датчик всё равно 4095! попробую другой кристалл взять....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 16:35 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6736
"// Select discontinious mode"
А это зачем?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 17:03 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
u37 писал(а):
"// Select discontinious mode"
А это зачем?

это же просто проверить, живет ли оно, поэтому не принципиально...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 17:13 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6736
Откройте Keil, запустите пустой проект на процессоре STM32F031C8. Запустаете отладку, отрываете аппаратуру/RCC, включаете ADC. Затем аппаратуру/ADC: CONT и ADEN. Затем ADSTART. В CHSELR включаете птичку на ch16. После чего идете в регистр CCR и периодически нажимаете птичку на TSENS и наблюдаете 0/0x700 в регистре DR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 17:41 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
ну это вообще пиздец какой-то!!!
/// не включаем датчик
//ADC1_COMMON->CCR |= ADC_CCR_TSEN;
и... работает... феном нагреваешь - пошли показания вверх..... что за хуйня


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 17:50 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6736
Это называется "воздух" - вход ADC никуда не подключен и ловит "чушь".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 18:10 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
да... чушь он ловит, а термодатчик поймать не может...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 19:45 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1434
Не знаю надо ли это в этом чипе, но какой-нибудь VREFINT не забыт?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 16 сен 2019, 22:15 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4785
Откуда: Кемеровская область, Киселевск
u37 писал(а):
Это называется "воздух" - вход ADC никуда не подключен и ловит "чушь".


Он подключен к 16 каналу, это внутренний канал температурного датчика.


Вот мой код STM32F030F4:
Код:

void INI_ADC()
{
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
RCC->CR2 |= RCC_CR2_HSI14ON;
while ((RCC->CR2 & RCC_CR2_HSI14RDY) == 0){}

ADC1->SMPR |= ADC_SMPR_SMP_0 | ADC_SMPR_SMP_1 | ADC_SMPR_SMP_2;
ADC1->CHSELR = ADC_CHSELR_CHSEL16; 
ADC->CCR |= ADC_CCR_TSEN;
      
ADC1->CR |= ADC_CR_ADEN;
while ((ADC1->ISR & ADC_ISR_ADRDY) == 0){}   
}


#define TEMP110_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7C2))
#define TEMP30_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7B8))

//main loop
  uint16_t temp, TEMP30;
  float SLOPE;

INI_ADC();
TEMP30 = *TEMP30_CAL_ADDR;
SLOPE = ((float)110 - 30) / ((float)( TEMP30 - *TEMP110_CAL_ADDR));

while(1)
{
  ADC1->CR |= ADC_CR_ADSTART;
  while ((ADC1->ISR & ADC_ISR_EOC) == 0){};


  temp  = (uint16_t)(SLOPE * ((float)TEMP30 - ADC1->DR)) + 30;
  show_temp(temp);
}

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 17 сен 2019, 12:39 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
У меня нет слов!!! Попробовал чистый сниппет с термодатчиком - работает! Хорошо, комментим остальное, вылавливая кто же нас подосрал.... И... есть у нас хардеверный DE - переключатель направления на RS485!!! Вот так мы её настраиваем:
//а теперь попробуем hardware DE on PA1
//1. select AF on PA1
GPIOA->MODER = (GPIOA->MODER & ( ~ GPIO_MODER_MODER1)) | GPIO_MODER_MODER1_1;
//2/должны выбрать AF1 in AFR[0]
GPIOA->AFR[0] = (GPIOA->AFR[0] & ( ~ GPIO_AFRL_AFRL1)) | (1 << (1 * 4));
//и теперь конфигурим её как DE
USART2->CR3 |= USART_CR3_DEM;

И вот эта хуйня не даёт термодатчику работать.... Колеги, подскажите пожалуйста, где я не дочитал... ..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 17 сен 2019, 13:37 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4785
Откуда: Кемеровская область, Киселевск
Это не влияет на работу.


Настраивать AF нужно так (у тебя в принципе тоже самое только как то коряво). Сброс можно не писать, если нули по умолчанию, т.е. сразу конфигурировать.

Код:

GPIOA->MODER &= ~GPIO_MODER_MODER1; //сброс
GPIOA->MODER |= GPIO_MODER_MODER1_1; //установка //10: Alternate function mode


GPIOA->AFR[0] &= ~GPIO_AFRL_AFSEL1; //сброс
GPIOA->AFR[0] |= 1 << GPIO_AFRL_AFSEL1_Pos; //установка //0001: AF1 for AFSEL1


PA1 если настроить на AF1, по таблице это подключиться функция USART2_RTS (DE) для A1

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 17 сен 2019, 15:24 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
Уже выпил Йаду, пойду убьюсь ап стену!!! Я же подключил к вот такому преобразователю https://protosupplies.com/product/max48 ... ce-module/ И запитал его от 5V
А у контроллера выводы PA1, PA2, PA3 даже не 5V tolerant!!! И ничего, контроллер живет, всё работает ну вот только с датчиком жопа вылезла.... Запитал всё от 3 вольт и паровоз поехал! Коллеги, прошу у вас прощения за потраченное время....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 17 сен 2019, 15:49 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6736
АЦП очень не любит "овервольтажа" по аналоговым входам, вылезают всякие чудеса. Требование не вылезать за 0-0.5...VddA+0.5 очень жесткое. Т.е. защиту только диодами Шоттки, "обычные" уже дают проблемы. IMHO


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 13:32 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
И снова, здГаствуйте!:)
Итак у нас калибровочные значения при 30С = 1760
при 110С = 1316
Итак все прекрасно работает. Грею феном, температура выставлена 100С и где-то при значении 1520(ну это явно не больше 110С), проц вылетает в Hard Fault.... Даже и не знаю что сказать... Коллеги, может кто-нибудь подскажет где копать.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 13:42 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1434
Измерения проводились при том же напряжении питания что и заводская калибровка? Я как-то феном L053 до 160 по внутреннему датчику разогрел - работал :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 13:52 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4601
Откуда: КЧР, поселок Нижний Архыз
Так эта темпратура ж с точностью ±лапоть измеряется! У меня торчат железяки при температуре воздуха +5°C, температуру чипа (который едва-едва что-то делает) показывает +20°C. Сейчас на столе железяка лежит, чип немного греется, но не до 53°C же, как показывает внутренний "термометр"!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 13:59 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
VladislavS писал(а):
Измерения проводились при том же напряжении питания что и заводская калибровка? Я как-то феном L053 до 160 по внутреннему датчику разогрел - работал :)

Если верить производителю, они меряли при 3.3V у меня так же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 14:44 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
Eddy_Em писал(а):
Так эта темпратура ж с точностью ±лапоть измеряется! У меня торчат железяки при температуре воздуха +5°C, температуру чипа (который едва-едва что-то делает) показывает +20°C. Сейчас на столе железяка лежит, чип немного греется, но не до 53°C же, как показывает внутренний "термометр"!

Не то слово! Да ещё какой лапоть! У меня вон 35 показывает, хотя едва ли в комнате 20С. Ну да непрерывно модбабасит, и rfid считыватель опрашивает.... но чтобы так разогреться...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 14:55 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6736
radioslon, этот температурный датчик не предназначен для "измерений". Я это попробовал уже давно и ставлю дискретный датчик температуры.
Вот, теперь и вы знаете. ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 15:05 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 167
Да я и так знаю)) Только теперь у меня есть убедительные аргументы для руководства....)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 15:24 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4601
Откуда: КЧР, поселок Нижний Архыз
Но, несмотря на это, можно хотя бы приблизительно понимать, что МК нехорошо себя чувствует: если термодатчик больше 100°C показывает, значит, МК немного нагрелся...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 16:20 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 285
Откуда: Таганрог
запускал на stm32l152, проверяли в термошкафу. до температуры 60 градусов отклонение в измерениях были 0.5, от 60 - 75 (выше шкаф не давал) ощибка была уже 1 градус.
так что вопрос в том, как правильно эти коды использовать.

в кратце, использовали усреднее по 128 измерениям, плюс поправочный коэффициент полученный от измерения внутренней опоры.

ну и не забываем, что со слов ST : "не подходит для измерения температуры, но может служить для оценки изменения температуры"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f030C8T6 температурный датчик
СообщениеДобавлено: 20 сен 2019, 17:37 
Старожил

Зарегистрирован: 02 ноя 2015, 19:21
Сообщения: 671
Откуда: Санкт-Петербург
гонял вроде f1 от -30 до +30 в камере. показывало вполне нормально. +-2-3 градуса. Естественно о каких либо измерениях речи не идет, но понять о том что изменилась окружающая среда вполне возможно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: AstraHard, cheblin, fmkit, Kelvin, Maik


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB