Easyelectronics.ru

Электроника для всех
Текущее время: 23 окт 2019, 23:30

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



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

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

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 136
Пытаюсь запустить температурный датчик. Уже и снипппеты попробовал 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
Сообщения: 4016
Откуда: КЧР, поселок Нижний Архыз
Я DMA обычно использую, вот так работает


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

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


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

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


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

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

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


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

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6226
Откройте 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
Сообщения: 136
ну это вообще пиздец какой-то!!!
/// не включаем датчик
//ADC1_COMMON->CCR |= ADC_CCR_TSEN;
и... работает... феном нагреваешь - пошли показания вверх..... что за хуйня


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

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


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

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


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

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


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

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4344
Откуда: Кемеровская область, Киселевск
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
Сообщения: 136
У меня нет слов!!! Попробовал чистый сниппет с термодатчиком - работает! Хорошо, комментим остальное, вылавливая кто же нас подосрал.... И... есть у нас хардеверный 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
Сообщения: 4344
Откуда: Кемеровская область, Киселевск
Это не влияет на работу.


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


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

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


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

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


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

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


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

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


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

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

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


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

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

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


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

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


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

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


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

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


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

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

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

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


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

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


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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