Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

есть отельная прога. STMStudio. Вот там есть лог-анализатор (в том числе аналоговый) и все что вам от него требуется. Работает именно в живую и с STLink-ом. Правда не всегда стабильно. Я не пользуюсь, так как мне проще нужные отладочные данные получить через UART напрямую не тормозя процессор

Изменено пользователем mail_robot

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

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Читаю UM1850 - версия апрель 2017, стр. 238-239, только что скачан с st.com. Описание функции HAL_GPIO_WritePin - для параметра PinState предполагаются значения: GPIO_BIT_RESET и GPIO_BIT_SET.

Проект Куба 4.22.1  (и соответственно, библиотека HAL) таких значение PinState не знают - традиционные GPIO_PIN_SET и GPIO_PIN_RESET.

Это очередные фокусы "отличной" документации от STM или мой нубский тупняк?

Изменено пользователем Darth_Vader
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

вообще этот абзац можно очень интересно прочитать

Quote

PinState: specifies the value to be written to the selected bit.
This parameter can be one of the GPIO_PinState enum
values: GPIO_BIT_RESET: to clear the port pin
GPIO_BIT_SET: to set the port pin

причем он не меняется уже давно, и я сомневаюсь что его типа не заметили при очередной правке. Перечитайте еще разок

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

Ссылка на комментарий
Поделиться на другие сайты

ну тут либо в ST дураки, либо одно из двух. А вы что хотите сказать?

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

Ссылка на комментарий
Поделиться на другие сайты

прошей через STLink любым "чистым" кодом и ардуино умрет само

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

Ссылка на комментарий
Поделиться на другие сайты

st link v2 как он может иметь лог. анализатор, вообще от этого отладчика толку почти нет, тупит все, переменную если одну и показывает и то хорошо, даже по шагам тоже показывает не так как есть, у меня SPI работает а он даже по шагам показывает что регистр данных SPI пуст, и так далее, а анализатор может быть только отдельный, тогда ты видишь реальный уровень на ножках, а в стлинк можно посмотреть только лог.1 или 0 на выводе программно, но на самом деле вывод может не работать

Ссылка на комментарий
Поделиться на другие сайты

не стоит так категорично отзываться о том, чем не умеете еще (судя по всему) правильно пользоваться. Отладка в железе это вам не за пивком сбегать. Тут надо понимать что может быть доступно отладчику, а что нет. И как это недоступное получить в обход ограничений. А просто так тыкать мышкой в отладчике и ныть это каждый нуб может

Читайте доку внимательно и учитесь. Отладчик великолепный

Изменено пользователем mail_robot

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

Ссылка на комментарий
Поделиться на другие сайты

mail_robot Просто времени особо нет с отладчиком сидеть, а документации на английском кучу страниц читать тоже не выход)

Ссылка на комментарий
Поделиться на другие сайты

14 часа назад, MihaNN52 сказал:

Коллеги подскажите бывшему ардуинщику)) что надо подключить в кейле чтоб появился класс String? 

Наверное стоит "подключить" Wiring.

Ссылка на комментарий
Поделиться на другие сайты

для embedded system насколько я помню такого класса нет. По крайней мере в стандарте. Обычно используют векторы типа char[ ] с известной длинной. Все необходимые функции для работы с такими строками присутствуют в стандарте

Изменено пользователем mail_robot

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

Ссылка на комментарий
Поделиться на другие сайты

Жаль было очень удобно и код компактный получался. Вообще старт с стм32 быстрым назвать нельзя, даже медленным))) Наверное все дело во мне. Очень много простых и понятных вещей  нет.

Ссылка на комментарий
Поделиться на другие сайты

после ардуино весь мир конечно предстает в серых красках. Примерно как ломка у наркоманов. Только в наркоте той счастья нет.

Хотя на самом деле дуринка вполне годный девайс для своих применений. Тормозная, кругло-квадратно-деревянная. Но там где надо просто и быстро, цены ей конечно нет. Вернее есть и довольно дорого для такой деревяшки. Но одной обычно достаточно в хозяйстве. У меня их правда штук 15. Перепало как то по случаю на халяву от человека который завязал и все раздал. Юзаю иногда, туда где жалко стм-ку

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

Ссылка на комментарий
Поделиться на другие сайты

неплохой настрой. STM32 по сравнению с ардуиной это примерно как Су35 по сравнению с кукурузником. То и то в принципе летает, но немного по разному. И я могу с уверенностью сказать - если освоите и научитесь внедрять стм-ку в свои поделки, это принесет очень много новых ощущений. Основное - GOD MODE. Лично я, освоив этот камень, полностью забил на все остальные, ибо он всегда дешевле и всегда быстрее. И под него гораздо приятнее писать софт (и быстрее тоже). Самый подходящий камень для замены ардуины (Atmega328) считаю STM32F030F4P6. Простой, понятный и стоит 3 копейки кучка + корпус более менее удобный (SSOP20). По скорости правда их не сравнить. Все таки стм есть стм и кортекс уделывает AVR по всем направлениям. Но в плане удобства интеграции самое то. Я их с али беру по 36 рублей корпус в пачке по 10 штук. И большинство конструкций выходит именно на них. Потому как эти крохотули перекрывают почти 90% всех задач.

Следующий по применяемости у меня STM32F030K6T6 (больше памяти, больше ног, ядро то же Cortex M0 48МГц). Потом идет STM32F103C8T6 (народный STM) в виде готовых 2-х долларовых модулей под посадку на DIP40, а потом уже 103RBT6, 103VET6 и 103VCT6. Изредка STM32F051 какой нибудь, когда за дешман надо получить нормальный ЦАП в устройстве.

Вообще семейство F030 очень и очень вкусное и душевное. Прям то что нужно в лаборатории любителя. Позволяет решать подавляющее число задач с новым уровнем вычислительных возможностей за смешнючие копейки. Например у меня в котельной сейчас трудится суточный таймер, который управляет электрокотлом дома на F030F4P6. Я его разработал и спаял за 4 дня. Лабораторный блок питания с контролем каждого полюса по току и выходом ЦАП в качестве управляемого опорного напряжения для поделок с дискретой 12 бит на F030K6T6. Зарядное устройство для литиевых аккумуляторов на 8 каналов одновременно опять де на F030F4P6. Разработано и собрано за неделю вместе с софтом. И я не профи, я такой же любитель как все остальные. Без образования в этом деле. Все чисто по книжкам и методом тыка + интернет.

Ну и что приятно в СТМ, так это то, что освоив один камень, ты по сути освоил их все (ну за мелкими нюансами). Так как архитектура что у 030-го, что у монстра 407-го  почти идентичная. Отличается только ее состав и скорость работы. Поэтому освоив СТМ можно уверенно решать любые задачи вообще. Ну с оговоркой - доступные для встроенных приложений. Ясно что обработка видео на лету или самописный DSP не то пальто для этих камней (хотя отчасти и возможно). Первое что я осваивал была дискавери на STM32F051. И после нее я понял что мне пофик под какой камень в семействе STM вообще писать

Самый оптимальный инструментарий (а опробовано было все что доступно) - Keil + CubeMX + FreeRTOS(опционално). Осваивайте эти инструменты и разработка станет простым и приятным процессом, ничуть не сложнее чем писать под ардуино.

 Надеюсь все у вас получится и мои рекомендации как то помогут освоиться в море STM-ок. Если что, советом поможем )

Изменено пользователем mail_robot

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

Ссылка на комментарий
Поделиться на другие сайты

Настрой боевой на самом деле))

Вот интересный момент пока не нахожу обьяснения.

Пытаюсь передавать отладочную информацию по USB STM32F103C8T6 народный.

Функция CDC_Transmit_FS отсутствует в документации почему то.

Если я  запускаю ее в цикле то она работает.

Создаю отдельный .h .c файлы для функций.

В нем пишу функцию которая принимает строку из UART посимвольно и по формату &AXXX\0 Начало и конец пакета,название переменной и значение.  Вот как так можно было сделать функцию приема в которой я должен знать длину сообщения... от куда я могу ее знать?)) что там тот же GSM модуль скажет?) Долго думал но так и не понял зачем это сделали. Но фиг с ним можно символы принимать складывать и т.д это мы умеем.

 

В общем имею функцию void HAL_UART_RxCpltCallback(UART_HandleTypeDef * UartHandle)  По вашим  же рекомендациям стал принимать в ней. Все работает спасибо за наводку.

В ней же отправляю в USB данные для отладки.

sprintf(str_tx, "Valve = %s\n", valve);
CDC_Transmit_FS((uint8_t*)str_tx, strlen(str_tx));

Все отправляет нормально.

Но дальше строку мне надо разобрать по этому я делаю функцию paser_uart2(char* valve) в которую передаю свою строку.

Разбираю строку, все норм.

Но при попытке отправит хоть что то в USB ни чего не отправляется.

Удалю весь код из функции отставляю просто отправку строки

char test[] = "Test";
CDC_Transmit_FS((uint8_t*)test, strlen(test));

И тишина отправляет только из колбэка, что выходит за рамки моего понимания))

Ссылка на комментарий
Поделиться на другие сайты

по правде говоря я с CDC плотно еще не работал. Как то не возникало необходимости. Использую в основном чистый UART если требуется выкидывать отладочную информацию и посылать команды из консоли в контроллер. Все собирался раскурочить USB, но руки так и не дошли пока. Дом достраиваю. Уже год как нет времени даже за кнопки сесть. До 1-го ноября надо въехать кровь из носу )

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

Ссылка на комментарий
Поделиться на другие сайты

 MihaNN52 насколько понял вы из колбэка хотите сделать CDC_Transmit_FS ? Лучше так не делать, колбэк должен быть коротким, он вызывется из прерывания. Потому лучше там установить какой нибудь флаг, а в основном цикле проверить этот флаг, и сделать то что хотели. Ещё проблема может быть в том, после обработки колбэка, сбрасываются флаги (говорю абстрактно) которые используются в работе юсб. А так получается, что приём до конца не обработался, а вы уже отправлять надумали.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Все предложенные к рассмотрению источники питания работают примерно по одному принципу: сетевое напряжение выпрямляется, фильтруется (получаем чуть больше 300 вольт постоянного), затем преобразуется снова в переменное, но уже на частотах в несколько десятков килогерц, понижается на трансформаторе и снова выпрямляется. За счёт высокой частоты преобразования используется трансформатор на ферритовом, а не на стальном, сердечнике, гораздо меньших габаритов и стоимости. Минусы: значительное усложнение схемы блока и вероятность возникновения различных помех от него. Модули управления (кроме первого) также являются импульными преобразователями, с теми же достоинствами и недостатками. Если нужно по быстрому собрать некое подобие ЛБП, то уж лучше брать модуль вроде этого. Ну и блок питания к нему соответствующий. Но не очень понятно, какой практический опыт можно получить от соединения готовых модулей парой проводов.  
    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
×
×
  • Создать...