Jump to content
LiVit

STM32F030R8 греется - кто сталкивался?

Recommended Posts

Приветствую, коллеги!

Ситуация такая: есть серия устройств на STM32F030R8, на некоторых время от времени начинает греться микроконтроллер. 
Вся логика работает, всё вроде в порядке, кроме потребления в 250мА. И перегретого корпуса микроконтроллера.

В прошивке изначально отсутствовала инициализация неиспользуемых ног, кроме того, проц сначала старается завести внешний кварц, и только потом переходит на внутренний генератор.
Нога BOOT0 притянута к земле напрямую, без резистора.

На проце который уже начал перегреваться, я сделал инициализацию всех ног на вход, с подтяжкой ног к земле. Сразу завожу внутренний тактовый генератор.
К сожалению, ему уже ничего не помогает, - даже будучи стертым, он жрет 200 мА. Как я понимаю, тут мои полномочия всё.

Хотелось бы услышать от коллег, что именно могло вызвать такую странную неисправность проца? Может кто сталкивался? В Errata ничего подобного не нашел.

Share this post


Link to post
Share on other sites
6 минут назад, LiVit сказал:

В прошивке изначально отсутствовала инициализация неиспользуемых ног

Это не значит, что она отсутствовала. Была инициализация Default.

 

10 минут назад, LiVit сказал:

что именно могло вызвать такую странную неисправность проца?

Например, неподключенное "аналоговое" питание.

Share this post


Link to post
Share on other sites

кмк для начала надо посмотреть схему, что и как спроектировано. Чудес не бывает. Не могут камни сами по себе время от времени умирать, да еще и пачками.

Инициализация ног по дефолту - цифровой вход. Производитель рекомендует на всякий пожарный инициализировать неиспользуемые как аналоговый вход, чтобы минимизировать энергопотребление. Но мне кажется это не ваш случай. Дело тут в другом.


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее

Да, видимо проще схему приложить. scheme.PDF
Убрал со схемы всё, что не распаяно на плате.

На счет дефолтного конфига ног я в курсе, друзья. Я имел в виду, что они по дефолту к земле не подтянуты.
Остается только подозрение по поводу подключения LCD, но управляющие линии посажены на 5В толерантные ноги. Да и подтягивающие резисторы 10к - не тот ток, чтобы проц угробить.

Edited by LiVit

Share this post


Link to post
Share on other sites

Барьерные силовые клеммы от Degson – расширение складского ассортимента Компэл

Обновленная линейка барьерных клеммных блоков Degson, поступивших на склад Компэл, содержит широкий ряд клемм, подходящих для соединения проводников различного сечения (от 22AWG до 10AWG). Барьерные клеммные колодки сочетают в себе удобство, простоту и надежность соединения. Это достигается за счет ответственного производства и использования высококачественных материалов. Винтовые клеммные блоки барьерного типа Degson предназначены в первую очередь для коммутации в сильноточных цепях, например, в распределительных и измерительных системах.

Подробнее

Проверьте инициализацию тактирования, не завышена ли у какого нибудь модуля частота! Был такой косячек на контроллерах с Али, при чем интересно после установки тактовых частот в предел нормы ток потребления  в норму уже не возвращался. Такое ощущение что чему то приходит кирдык. При всем при этом, ранее заказанные процы с элитана спокойно с этим справляются. 


Сергей.

Share this post


Link to post
Share on other sites

Материалы вебинара «Решения Analog Devices для гальванической изоляции. Обзор технологий и новинок»

Опубликованы материалы вебинара, посвященного решениям Analog Devices для гальванической изоляции. На вебинаре рассказали о: технологии гальванической изоляции iCoupler, цифровых изоляторах, технологии isoPower, гальванически изолированных интерфейсах (RS-485, CAN, USB, I2C, LVDS) и многом другом. Материалы вебинара будут интересны разработчикам промышленной автоматики и медицинской техники.

Подробнее

схемка ни о чем конечно. Учебная

однако спроектирована все равно с ошибками. Линии данных дисплея в подтяжках не нуждаются, тем более к 5 вольтам. А вот включение последовательно ногам резисторов 220 Ом является хорошим тоном, особенно на линиях т.н. толерантных

DA4 вообще лишняя в схеме. А все что лишнее - потенциальный источник проблем

опять же, если есть DA4, для какого тогда фига стоит VT1? А если он таки есть, то зачем биполярный? Лишняя гальваника на цепи 12В

кнопки тоже по чукотски стоят

сдается мне что дело опять не в бобине...

Edited by mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites
22 минуты назад, optima сказал:

Проверьте инициализацию тактирования, не завышена ли у какого нибудь модуля частота! Был такой косячек на контроллерах с Али, при чем интересно после установки тактовых частот в предел нормы ток потребления  в норму уже не возвращался. Такое ощущение что чему то приходит кирдык. При всем при этом, ранее заказанные процы с элитана спокойно с этим справляются. 

А вот ваша идея мне нравится.
Проверю - отпишусь.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

  • Similar Content

    • By One _ moment
      Здравствуйте. Нужно разобраться с принципом работы интерфейса I2C на Stm32. понимаю, что материала в интернете много, но почему-то даже просто структура, где определяются параметры, у меня другая.
      Моя вот такая:
      typedef struct
      {
        uint32_t I2C_Timing;  
        uint32_t I2C_AnalogFilter;      
        uint32_t I2C_DigitalFilter; 
        uint32_t I2C_Mode;  
        uint32_t I2C_OwnAddress1;
        uint32_t I2C_Ack;
        uint32_t I2C_AcknowledgedAddress;
      }I2C_InitTypeDef;
      Те, что даются в примерах, в статьях, такая:
      typedef struct
      {
        uint32_t I2C_ClockSpeed;          
       
        uint16_t I2C_Mode;                
       
        uint16_t I2C_DutyCycle;           
       
        uint16_t I2C_OwnAddress1;         
       
        uint16_t I2C_Ack;                 
       
        uint16_t I2C_AcknowledgedAddress; 
      }I2C_InitTypeDef;
       
      Найдя пример на этом форуме (https://forum.cxem.net/index.php?/topic/202586-i2c-%D0%B2-stm32f030/) увидел, что используются параметры такие же, что и у меня, но теперь не понятно, откуда такие значения берут и по какой логике. 
      Прошу не пинать ногами и кидать в меня гнилые помидоры, а помочь разобраться в этом всём или подсказать, где можно найти исчерпывающую информацию, где хорошо и по полочкам всё разложено.
      Программирую в keil uVision v5
      Отладочная плата stm32f0 disco
      МК stm32f0030r8
      Благодарю заранее.
    • By LiVit
      Привет коллеги! Данная публикация - для тех, кто еще не все плюшки UARTA попробовал ))
      USART1 (и только он) микроконтроллеров серии STM32F030 предоставляет возможность принимать пакеты данных с неизвестной заранее длиной пакета.
      Для этого можно использовать овертаймер.
      Работает это так:
      Если в течение заданного времени не будет принят старт-бит очередного байта, генерируется прерывание.
      Время ожидания задается не физически (в секундах), а в количестве бит, которые могли бы быть приняты на данной скорости.
      т.е., если мы зададим число 16, то прерывание возникнет, если в течение времени эквивалентному приему 16 бит, на вход USART не поступит старт-бит.

      Как включить.
      1 разрешим прерывание - бит RTOIE регистра CR1
      2 зададим время (количество бит) в регистре RTOR
      3 разрешим работу овертаймера - бит RTOEN регистра CR2
      4 при возникновении прерывания от USART1, смотрим флаг RTOF в регистре ISR, - если есть флаг, значит это оно
      5 сбросим флаг прерывания - бит RTOCF в регистре ICR.
      Как я это использую.
      Включаю прерывание при инициализации порта и задаю количество бит для счетчика.
      Как только приходит первый байт сообщения - в прерывании разрешаю работу овертаймера.
      Все принятые байты сохраняю в буфер.
      Когда возникнет прерывание по овертайму - запрещаю овертаймер, и передаю пакет на парсинг.
    • By User_1
      Всем привет!
      Почему-то этот код работает: 
      void Send_to_UART(char* string) { char data = 0; while(*string) { while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE))); data = *string; USART1->TDR = data; string++; } while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE))); USART_SendData(USART1, 0x0D); while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE))); USART_SendData(USART1, 0x0A); while(!(USART_GetFlagStatus(USART1, USART_FLAG_TC))); } char hello[13] = {'H','e','l','l','o',' ','W','o','r','l','d','!'}; int main (void) { Init_Clock(); Init_USART1(); Send_to_UART(hello); while(1); } А если написать вот так:
      int main (void) { Init_Clock(); Init_USART1(); Send_to_UART("Hello World!"); while(1); } то не просто не работает - микроконтролер зависает даже до входа в main().
      В Си ведь, насколько я понимаю, строка - это тот же массив символов
      Объясните, пожалуйста, что я делаю не так?
      Камень stm32f030, среда CooCox CoIDE
    • Guest Максим
      By Guest Максим
      Всем светлым и умным головам привет!

      Никак не могу найти информацию о данном прерывании TIM1_BRK_UP_TRG_COM.
      Вопрос 1: Что это за стек или система прерываний? 
      Вопрос 2: Когда будет вызываться обработчик прерывания TIM1_BRK_UP_TRG_COM_IRQHandler, если также есть обработчик прерывания TIM1_CC_IRQHandler?
      Вопрос 3: период переполнения таймера равен 100 мкс. Сколько раз будет вызываться обработчик прерывания TIM1_BRK_UP_TRG_COM_IRQHandler до обработчика прерывания TIM1_CC_IRQHandler? По логике вещей, предполагаю, что 100 раз?
      Заранее благодарен!

      Всем радости))
    • By User_1
      Доброго времени суток!
      Вкратце: нужно после того, как я записал байт данных в SPI1->DR, отменить передачу этого байта и вместо него отправить 0х00
      Подробно: Смысл вот в чём: некий контроллер, с которым я пытаюсь наладить общение по SPI, запрашивает произвольный участок массива байт и считывает их сплошным потоком. Ну примерно как считывается микросхема EEPROM: задаёшь начальный адрес, а потом просто шлёшь сплошные 0xFF, а она сама инкрементирует адрес и прямо непрерывным потоком байт выдаёт содержимое памяти. Только тут в роли этой микросхемы мой stm32f030 и мне нужно следующий байт отправлять в SPI1->DR сразу после отправки предыдущего. Но когда поток заканчивается (а он каждый раз разной длины и длина эта заранее неизвестна), один байт остаётся не переданным и отправится первым при следующем запросе. А мне нужно, чтобы первым байтом всегда отправлялся 0х00
      Пином (ну то есть битом) NSS управляю программно, его выставление в единичку и снова в ноль, очевидно, не помогает вообще никак. Пока решил проблему так: деинициализирую модуль SPI и выключаю его тактирование, затем включаю тактирование и снова инициализирую. Работает, скорости хватает. Но должно же быть менее костыльное решение?)
      Может кто сталкивался с такой проблемой?
      Курение даташита, reference manual и результатов поиска в гугле, не особо помогло.
×
×
  • Create New...