[Решено] USB и универсальная плата STM32F1. Новичные вопросы....

Александрос
Пт 26 января 2018 12:09
Привет, ребята, я и мой приятель строили доску с MCU STM32F1 64K, я делаю детские шаги, чтобы узнать больше о USB и загрузку прошивки из USB и тому подобное.

Наша общая плата - прототип, мы добавили напрямую
USB-PA11
USB+ PA12
НЕТ БОЛЬШЕ в порты данных USB, конечно, когда я подключаю его к ПК, я получаю сообщение «Не распознавать устройство» из Windows.
У меня нет кнопки Boot 0 или перемычки в плату, и даже не подтягивающий резистор около 1.5K до PA12
PC14 тоже не используется в моей плате PC12
У меня есть светодиод в PA2

Я читаю о загрузчиках от Роджера https: // github.com/rogerclarkmelbourne/ ... загрузчик
http: // wiki.STM32duino.com/index.PHP?тип ... загрузчик

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

Моя основная цель - когда пользователь подключается к USB, я хочу, чтобы MCU распознавал, который подключен к ПК в первую очередь, и последовательные данные из него ,
и из программы Windows, чтобы установить доску в режим DFU и загрузить Firwmare.

Поэтому я ищу руководство или что -то в этом роде, ребята, для моего конкретного оборудования, любая помощь или комментарий будут намного апрецированными

Mrburnette
Пт 26 января 2018 г. 13:29
Наша общая плата - прототип, мы добавили напрямую
USB-PA11
USB+ PA12
Нет в портах данных USB ,
Немного сложнее заставить ПК перечислять.
Я бы порекомендовал прочитать это о синей таблетке:
http: // wiki.STM32duino.com/index.PHP?title = blue_pill

Загрузчики хранятся здесь: https: // github.com/rogerclarkmelbourne/ ... загрузчик


Конкретно: Аппаратная установка
Bluepillusbresistor.JPG
Стандарт USB требует 1.5 кОм резистор подтягивания на D+, но эта плата, как известно, имеет неправильное значение (R10 на плате). Он поставляется с резистором 10 кОм или 4.7 кОм резистор, но его следует заменить на 1.5 кОм резистор или поместите соответствующее значение резистора (e.G 1.8 кОм) между PA12 и 3.3В. Также верно, что некоторые компьютеры терпимы к неправильному значению, поэтому, прежде чем изменить сопротивление, вы можете попробовать, если оно работает в вашем случае.
Когда я играл с V-USB, я всегда использовал резисторы с небольшими значениями ... Как схема ниже:
Изображение

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

Луча

Александрос
Пт 26 января 2018 г. 13:48
Большое спасибо за ваш ответ

Предположим, я добавил схему, и все хорошо и хорошо работает

Предлагаете ли вы добавить багажник 0?

Mrburnette
Пт 26 января 2018 13:59
[Александрос - Пт 26 января 2018 г. 13:48] - Большое спасибо за ваш ответ

Предположим, я добавил схему, и все хорошо и хорошо работает

Предлагаете ли вы добавить багажник 0?
Ах, это вопрос хитрости, не так ли?
Серьезно, прочитайте это: https: // www.Eevblog.com/forum/microcont ... ботинок/
Все будет раскрыто ... : D

Подсказка для всех тех, кто не хочет вырубить детали длинного поста: boot0 и boot1 отображаются при сбросе, <...>"Значения на штифтах загружены на 4 -й подъемной край sysclk после сброса. Пользователь должен установить контакты Boot1 и Boot0 после сброса, чтобы выбрать требуемый режим загрузки."

Александрос
Сб 27 января 2018 г. 15:26
Мой плохой ,
Кажется, я сделал ошибку, есть 1.5K в USB, и все в порядке.
Дальнейшее копание ,

Я думаю, что заставил это работать....
  • Я загрузил generic_boot20_pb12.корзина со св ,
  • Установите драйверы из Arduino \ Hardware \ arduino_stm32-master \ Drivers \ Win
  • С прикрепленным USB и теперь узнаваемым с ПК, который я загружаю из Arduinio Ide The Blink Sketch..
Все сработало. Доска зашла в DFU (метод загрузки STM32Duino Bootloader) и вошел в нормальный режим после самого Reeboot.

Теперь я загружаю свой эскиз больше, этот мигающий набросок :) Загружено суссонее

Когда я попытался повторно загрузить свой проект, Arduino IDE застрял здесь
Maple_Loader v0.1
Сброс в загрузчик через DTR Pulse
Поиск устройства DFU [1EAF: 0003]...



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

Только на более легких набросках процедура загрузки гладкая, как счета мигания ,
Мне нужно что -то добавить в свой проект ?

Mrburnette
Сб 27 января 2018 г., 17:37
Я часто слышу подобные жалобы, есть много предложений, но я не читал о 100% исправлении. Немного более дорогого клона Maple Mini, кажется, имеет сброс сброса остальных, но он не приближается к 100%. На Linux у меня, кажется, нет проблем с блюзом или MM. Может быть, что переход от DFU на USB -перечисление в Windows является проблемой времени.

Вот Google, если вы хотите изучить больше

Честно говоря, я думаю, что для большинства людей развитие на Maple Mini и Final Burn to Blue - это простое исправление... или на заказ в вашем случае. Я помню несколько сбросов, которые были предложены, так что, возможно, вы можете реализовать в своем собственном дизайне.

Луча

Стивестронг
Сб 27 января 2018 г., 17:55
Чтобы сбросить плату STM32 и перейти в режим DFU, ПК Отправляйте магическую последовательность над USB Serial.
Таким образом, загрузка работает только в том случае, если вы используете Serial (USB Serial) в своем фактическом запущенном коде.
Если у вас нет сериала USB в вашем коде, сброс должен быть сделан вручную (или с помощью un-plug->Повторно проникать в USB-кабель или цикл питания).

Александрос
Сб 27 января 2018 г., 19:37
[Стивестронг - Сб 27 января 2018 г., 17:55] - Чтобы сбросить плату STM32 и перейти в режим DFU, ПК Отправляйте магическую последовательность над USB Serial.
Таким образом, загрузка работает только в том случае, если вы используете Serial (USB Serial) в своем фактическом запущенном коде.
Если у вас нет сериала USB в вашем коде, сброс должен быть сделан вручную (или с помощью un-plug->Повторно проникать в USB-кабель или цикл питания).
Что ты имеешь в виду?
как сериал.начинать(.... ? Я знаю, что сериал для USB.. Если да, я уже сделал сериал.Начните (115200), но Diidnt работает
Извините за мое невежество

Rogerclark
Сб 27 января 2018 г., 21:32
Если вы выберете какой -либо из вариантов сборки, которые загружают через USB в загрузчик, то USB Serial.begin () автоматически вызывается ядром еще до настройки ()

Ты не ДОН’t на самом деле нужно назвать серийным.Начни себя и свой призыв к серийному.Begin (xxx) игнорируется ядром, потому что USB Serial уже начат.

КСТАТИ. Установка скорости бодского уровня в сериале.Begin - это избыточно для USB -сериала, потому что передача на самом деле не выполняется так же, как аппаратный сериал . Фактическая скорость передачи данных намного выше. (Существуют различные сообщения на форуме, где люди исследовали серийную скорость передачи данных USB, так как он варьируется в зависимости от длины строки данных, которую вы отправляете в сериал.писать() )


Возвращение к последовательности загрузки...

Загрузчик обрабатывает загрузку, она’S отдельная программа, которая работает только после перезагрузки процессора.
После того, как загрузчик справился с загрузкой, он прекращает и освобождает все свои ресурсы (дает 3K оперативной памяти, которую он использовал)

Итак, чтобы начать загрузку, ядро ​​должно перезагрузить процессор.

IDE нуждается в некотором смысле, чтобы сказать ядро, что он хочет загрузить новый эскиз (двоичный), и то, как это делается, представляет собой специальную последовательность изменяющихся линий управления, а магическое число (последовательность символов) отправляется IDE через USB -сериал до глубины души.

Ядро постоянно проверяет любой входящий USB -сериал для этой последовательности, и если оно получено, ядро ​​перезагружает процессор

Александрос
Солнце 28 января 2018 11:50 утра
Очень много ответов, ребята, особенно Roger, спасибо, ребята.

Да, Роджер, Эйритинг понял ,

Теперь добраться до этой части IDE нуждается в некотором смысле, чтобы сказать ядро, что он хочет загрузить новый эскиз (двоичный), и то, как это делается, представляет собой специальную последовательность изменяющихся линий управления, а магическое число (последовательность символов) отправляется IDE через USB -сериал до глубины души.
Ядро постоянно проверяет любой входящий USB -сериал для этой последовательности, и если оно получено, ядро ​​перезагружает процессор
С простым эскизом, таким как проект Blink, ядро ​​получает последовательность и перезагружает процессор, и программа загружает просто идеальную.

Теперь по какой-то причине мой проект не получит этого Sequense (должен быть не повторно), так как SOOS, как IDE отправляет команду стека проектов, и не перезагружаюсь, я должен продолжить расследование, может быть, библиотека или что-то в этом роде вызывает проблему.

Я должен что -то упомянуть, я не знаю, как я буду попробовать, чтобы IDE правильно отправила Seequensy, Skecth должен бежать внутри Vide Lop () сверху вниз, а не внутри ребенка петля или while () ? если вы понимаете, о чем я

РЕДАКТИРОВАТЬ: Нет, это не так, это также перезагрузите и загрузите просто отлично void loop() { digitalWrite(PB9, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(PB9, LOW); // turn the LED off by making the voltage LOW delay(1000); do { }while (1==1); }

Александрос
Вторник 30 января 2018 г. 23:49
Есть ли другая программа, кроме Arduino IDE, которая может загрузить файл bin с помощью метода загрузки "STM32Duino Bootloader"?

Rogerclark
Ср 31 января 2018 г., 3:13
Он просто использует dfu-util

Посмотрите в папке Tools (для вашей операционной системы)

Также посмотрите на платформу.TXT и сценарии загрузки клена, чтобы увидеть, какие параметры необходимы

Mrburnette
Ср 31 января 2018 г. 13:12
[Александрос - Вторник 30 января 2018 г. 23:49] - Есть ли другая программа, кроме Arduino IDE, которая может загрузить файл bin с помощью метода загрузки "STM32Duino Bootloader"?
Вообще говоря, многочисленные вопросы, проходящие через запрос.. Участники используют ценное время, чтобы ответить на сообщения и предоставить точные и целевые ответы. Когда отвечают на вопрос, отметьте поток [решен], и если один вопрос ведет к другому, попытайтесь разрешить второй самостоятельно, а не просто бросить другой вопрос. Вопросы в цепях заставляют найти ценные ответы в длинном посте очень сложным.

Поскольку на этот пост был ответ, я отмечаю его [решен].

Луча