Jump to content
ART_ME

STM32 для чайника

Recommended Posts

а китайский свисток за 2 бакса чем вас всех не устроил?


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

Share this post


Link to post
Share on other sites

Китайский 2 бакса, а этот бесплатно :)


Сергей.

Share this post


Link to post
Share on other sites
Posted (edited)

Неожиданно забузил J-link, перешитый из китайского ST-Link.

Выглядит это как показано на скрине ниже, но только после запуска программы и не сразу, а через несколько секунд.

После чего bluepill превращается в кирпич и ни на что более не реагирует.

После его реанимации с помощью ST-Link (т.е. неперепрошитого под J-link) загрузка в bluepill осуществляется, но опять только до первого же старта программы.

С ST-Link отладчик запускается и работает без замечаний.

С настройками J-link поигрался, а также заново его перепрошил.

Куда копать дальше?

Снимок.JPG

Edited by ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Быстро и просто. Разработка бюджетного неизолированного источника питания на контроллере VIPer122

С помощью VIPer122 можно создавать как изолированные, так и неизолированные сетевые источники питания. Разберем самый простой и бюджетный вариант – разработку неизолированного понижающего источника питания с выходным током в несколько сотен миллиампер без трудоемких расчетов трансформаторов и компонентов обвязки.

Подробнее

Posted (edited)

Попробовал на другом bluepill - тот же результат. :( 

Загрузка программы, как и очистка памяти, с J-Link успешно осуществляется. Проблема только с отладчиком. 

log ниже.

cspycomm.rar

Edited by ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Пополнение линейки ViperPlus от STMicroelectronics

Компания ST обновила семейство ШИМ-регуляторов со встроенным ключом ViperPlus, выпустив новые бюджетные микросхемы VIPER122 и VIPER222, и микросхемы VIPER265K и VIPER267K, имеющие встроенный ключ MOSFET напряжением 1050 В. С их помощью возможно реализовать топологии: изолированный и неизолированный обратноходовой преобразователь (flyback), понижающий преобразователь (buck), повышающе-понижающий преобразователь (buck-boost).

Подробнее

08.07.2020 в 16:26, elki сказал:

информацией по настройке?

В интернете есть несколько гайдов на эту тему, можете попробовать. Я настраивал себе по mac и там в принципе оказалось все не сложно. Если вам по win то я вообще ничем помочь не смогу.

Единственное что недавно всплыло, что не компилится исходник под l0 серию типа l011d3, но пока руки так и не дошли написать об этом разработчикам. Так что если вы пишите под L0 с малым количеством памяти на хале то скорее всего возникнут проблемы (хотя может и нет)

Share this post


Link to post
Share on other sites

LED-драйверы LCM - бюджетное решение для умного дома!

Для более простого и бюджетного решения по организации управляемого освещения в здании с имеющейся системой KNX компания Mean Well предлагает готовые к использованию LED-драйверы семейства LCM/KN, управляемые по протоколу KNX. По своим техническим возможностям эти изделия похожи на драйверы из популярного семейства LCM/(DA).

Подробнее

Posted (edited)
5 часов назад, ART_ME сказал:

Попробовал на другом bluepill - тот же результат. :( 

Поставил KEIL - не работает J-Link!

Нашел исходник старой программы, запустил - на ней J-Link работает. :shok:

Выходит, разница только в содержимом программы?

Никак не пойму, как пользовательская программа может влиять на работу отладчика, когда основная разница в библиотеках, а именно - неработающая создана в Cube. :wall:

Edited by ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Проблема решена, спасибо всем откликнувшимся . :)


Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Ну конечно же настройка Cube! :D

Ну а почему отладчик St-Link работал при запрещенной отладке - хз. 

 

Снимок.JPG


Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Исходные данные проц: STM32L053R8
работаю с HAL
мне надо ногу PA9 сначала подергать вручную, а потом чтоб она была уартом.
я решил делать так:
конфигурирую как ногу на выход:
 

  /*Configure GPIO pins : PA9 */

    GPIO_InitStruct.Pin = GPIO_PIN_9;
      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
      GPIO_InitStruct.Pull = GPIO_NOPULL;
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

дергаю ногой:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_RESET);
HAL_Delay (582);// это будет 582 задержка
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_SET);
HAL_Delay (158);// это будет 158 задержка
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_RESET);
HAL_Delay (24); // это будет 24 задержка очень чувствительно. ставлю 25 перестает работать.
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_SET);
HAL_Delay (24);// это будет 24 задержка

конфигурирую как уарт:
// ниже конфигурирую пин PA9 опять как уарт
    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

отправляю:
HAL_UART_Transmit(&huart1, &start_posilka_abs, 1, 30);  //отправляю 1 байт
принимаю:
HAL_UART_Receive_IT(&huart1, (uint8_t*)buffers_first, 1);//запускает прием по уарту как токо придут все байты будут приняты сработает прерывание каллбэк

вообщем вроде все работает кроме одного, перестает работать прием ) перестают работать прерывания на прием.

Share this post


Link to post
Share on other sites

и еще вопрос, почему не работает этот код.
у меня стоит драйвер, который параллелит при отправке RX и TX ну вроде как эхо называется.
поэтому пишу вот так:
HAL_UART_Abort_IT (&huart1);//запрет прерываний по приему.
HAL_UART_Transmit(&huart1, &start_posilka_abs, 1, 30); //отправляю 1 байт
HAL_UART_Receive_IT(&huart1, (uint8_t*)buffers_first, 1);//запускает прием по уарту как токо придут все байты будут приняты сработает прерывание каллбэк

каждый цикл срабатывает каллбэк на прием. но я же вроде как запретил прием.

Share this post


Link to post
Share on other sites
39 minutes ago, Zombie47 said:

запретил прием

Функция HAL_UART_Receive_IT() обратно разрешает прерывания по приёму.

Share this post


Link to post
Share on other sites
Только что, Yurkin2015 сказал:

Функция HAL_UART_Receive_IT() обратно разрешает прерывания по приёму.

да это понятно, но я же уже отправил, все , ниче не должно быть в приеме дублироваться.

Share this post


Link to post
Share on other sites
14 minutes ago, Zombie47 said:

ниче не должно

Честно говоря, Вас трудно понять: то какой-то драйвер параллелит эхо, то в каком-то цикле срабатывает коллбэк, то почему-то не должно в приёме дублироваться ...

Одно могу добавить, функция HAL_UART_Receive_IT() не очищает флаги прерывания, а только разрешает их. Поэтому если когда-то UART принял байт, то установится RXNE флаг, что байт принят без всяких прерываний. И этот флаг будет ждать своего часа. Потом вы стартуете эту самую HAL_UART_Receive_IT(), обнаруживаете принятый байт и забираете его.

Share this post


Link to post
Share on other sites
Только что, Yurkin2015 сказал:

Честно говоря, Вас трудно понять: то какой-то драйвер параллелит эхо, то в каком-то цикле срабатывает коллбэк, то почему-то не должно в приёме дублироваться ...

Одно могу добавить, функция HAL_UART_Receive_IT() не очищает флаги прерывания, а только разрешает их. Поэтому если когда-то UART принял байт, то установится RXNE флаг, что байт принят без всяких прерываний. И этот флаг будет ждать своего часа. Потом вы стартуете эту самую HAL_UART_Receive_IT(), обнаруживаете принятый байт и забираете его.

Спасибо теперь понятнее стало почему так работает. Вообщем вопрос в следующем, как запретить поднимать эти флаги прерывания на прием пока я отправляю?

Share this post


Link to post
Share on other sites
3 minutes ago, Zombie47 said:

как запретить

Запретить невозможно, флаг поднимается в железе. Надо RXNE сбрасывать перед стартом приёма пакета, что-нибудь, типа, очистить висящие флаги прерывания 

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

Ну, или сделать приёмник UART RX disabled, тогда приёмные байты будут игнорироваться, и флаги не поднимутся.

Share this post


Link to post
Share on other sites
10 часов назад, Yurkin2015 сказал:

Запретить невозможно, флаг поднимается в железе. Надо RXNE сбрасывать перед стартом приёма пакета, что-нибудь, типа, очистить висящие флаги прерывания 

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

Ну, или сделать приёмник UART RX disabled, тогда приёмные байты будут игнорироваться, и флаги не поднимутся.

Значит так флаг поднялся. Сработало прерывание, и обработчик прерываний? вызвался каллбэк?
А как переконфигурировать сначала в ногу на выход а потом в ногу уарта? я переконфигурирую и у меня впринципе прием перестает работать

Share this post


Link to post
Share on other sites
11 часов назад, Yurkin2015 сказал:

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

такого нет впринципе.

Share this post


Link to post
Share on other sites

Подскажите, что означает "время выборки" в характеристике АЦП. На что оно влияет. В STM32F4xx время выборки может составлять от 3 до 480 тактов.

Share this post


Link to post
Share on other sites

ну сам подумай, на что оно может влиять, если АЦП один, а УВХ емкостного типа


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

Share this post


Link to post
Share on other sites
12 часов назад, Скептик сказал:

Подскажите, что означает "время выборки" в характеристике АЦП.

Время выборки - это время в течении которого ключ УВХ соединяет конденсаторный блок АЦП со входным пином. За это время конденсатор УВХ должен успеть зарядиться от источника сигнала с требуемой погрешностью. Ток заряда ограничен внутренним сопротивлением цепей МК от пина (включая ключ УВХ) до конденсатора и внутренним сопротивлением источника сигнала.

Share this post


Link to post
Share on other sites
14.07.2020 в 01:38, Yurkin2015 сказал:

Запретить невозможно, флаг поднимается в железе. Надо RXNE сбрасывать перед стартом приёма пакета, что-нибудь, типа, очистить висящие флаги прерывания 

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

Ну, или сделать приёмник UART RX disabled, тогда приёмные байты будут игнорироваться, и флаги не поднимутся.

где взять эту функцию? USART_ClearITPendingBit
где взять это USART_IT_RXNE у меня этого просто нету.
я понимаю что второе это регистр, но он где то должен быть определен. а у меня нигде не определен и как это сделать я не пойму.

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...

  • Сообщения

    • Наша огромная страна и есть рынок сбыта. Даже людям в 200 ойро необходимо дома иметь бытовую технику от лампочки до индукционной плиты и телевизора. Немыслим без электроники весь наземный и подземный транспорт, машиностроение, пищевая, химическая, лёгкая  промышленность со множеством автоматики итд итп. Я замучаюсь все перечислять. Да пофигу, что было. Вопрос в том, что необходимо возрождать свое собственное производство во всех отраслях промышленности, а не покупать у китайцев .
    • Дорисуйте выпрямитель с конденсатором.
    • Операционник подключается к выходам темброблока, темброблок отключен и фактически вход TDA связан только с инверсным входом и землей через обвязку и конденсатором, вторая нога которого в воздухе. Сравниваю номиналы обвязки и даташитов на TDA2050 и UTC2030 - отличия в полтора - два раза, и вообще разводка какая-то странная.  Хочу выпаять одну из TDA  и собрать отдельно, заменить номиналы обвязки на рекомендуемые и проверить будет ли шум, если шума не будет то приходит идея сделать новую плату лутом и собрать по схеме из ДШ. До кучи можно будет трансформатор поменять на что-то вроде ТТП40 и вынести диодный модуль с конденсаторами ближе к трансу.    Нарисовал часть схемы после темброблока в KiCad, к сожалению номиналы SMD конденсаторов не видны (может они с обратной строны?). Некоторые номиналы сильно отличаются от того, что в даташите TDA2050 и TDA2030 (R19, R23, R34, C13, C15, C24), да и схема отличается (в даташите нет C39, C40, C20) может это приводить к шуму? 1597443486872_TDA.sch
    • Ну вот, пока на вас не наорёшь, совсем думать не хотите. Теперь понесу в ремонт. А ещё кто-то сказал что новую заказать, только негде, совсем нигде
    • Доброго времени суток всем! Подскажите пожалуйста, собрал инвертор, поварил, все не плохо! Решил подключить осциллятор для тиг сварки, при искровом разряде чегото контроллер перезапускается. Не знаю в чем может быть проблема. Стоит на защиту конденсатор и варистор по выходу, все как пологается, а такая вот неприятность. Помогите что добавить в схему?
    • Если лама горит значит есть КЗ. Лампу включают за место предохранителя, хотя тут и не уместно уже. Что касается вопроса @stereorail то у него неисправность в БП, вот после того как заменит все сгоревшие можно и через лампочку включать, через гвозди он уже пробовал, не прокатило.
    • Индуктивность обмоток трансформатора какая то странная.
×
×
  • Create New...