[Решен] провод.Начните сбой загрузчика

joeedarock
Вторник 28 августа 2018 18:48
Моя плата - синяя таблетка с загрузчиком USB STM32Duino, LCD 2x16 и устройством I2C. Мой код загружается и работает нормально, пока я не расстроен провод.начало »заявление. Каждый раз, когда я это делаю, он сбоят USB -загрузчик, и мне приходится перезагрузить загрузчик с Stlink. Идеи?

Джо

Эдогальдо
Вторник 28 августа 2018 г., 19:02
Какое ядро?!
Какой метод загрузки?
Как насчет публикации образца разрыва эскиза?

joeedarock
Вторник 28 августа 2018 г., 19:25
«Blue Pill» плата STM32F103C8 с STM32Duino USB Bootloader.

Простая программа Blinky с прерыванием Encoder и устройством I2C (SI5351). Загрузчик взрывается, как только «Провод.начинать »разрешено выполнять.

Код:
..Arduino\libraries\rfid-master\src/MFRC522.h: In constructor 'MFRC522::MFRC522(SPIClass*, SPISettings)': ...Documents\Arduino\libraries\rfid-master\src/MFRC522.h:422:20: warning: 'MFRC522::_spiSettings' will be initialized after [-Wreorder] const SPISettings _spiSettings; // SPI settings. ^

joeedarock
Вторник 28 августа 2018 г., 19:27
Примечание: процедуры SI5351 находятся в отдельном кодовом модуле, не показанном для краткости.

Эдогальдо
Вторник 28 августа 2018 г., 19:36
Какое ядро?
Какой метод загрузки?
Как сказать, что загрузчик сломается?
Какие симптомы?

joeedarock
Вторник 28 августа 2018 г., 19:49
Если под «ядром» вы имеете в виду менеджера совета директоров, это так:
https: // github.com/stm32duino/boardmana ... индекс.json

Не уверен, что вы имеете в виду под методом загрузки. Это Arduino IDE с загрузчиком USB USB STM32DUINO в плате приложений.

Как только код загружает и запускает выполнение, USB -загрузчик поражается и больше не виден в диспетчере устройств Windows. Затем мне нужно подключить Stlink и перезагрузить загрузчик. Этого не произойдет, если будет прокомментировано заявление «Wire'begin».

Эдогальдо
Вторник 28 августа 2018 г., 19:59
Итак, вы используете официальное ядро ​​STM, но оно не совместимо с загрузчиком..
Если вы хотите использовать загрузчик DFU, вы должны использовать ядро ​​Роджера по адресу: https: // github.com/rogerclarkmelbourne/arduino_stm32

MòRE Информация в вики и приветственные сообщения.

Ура, e.

joeedarock
Вторник 28 августа 2018 г. 20:06
Я использую загрузчик Roger по ссылке на этой странице:

https: // github.com/rogerclarkmelbourne/ ... плохой доски

Это «голубая таблетная» доска, очень широко известная в сообществе и многосторонние из Китая на eBay и других сайтах.

Не уверен, с какой частью вы не знакомы.

joeedarock
Вторник 28 августа 2018 г. 20:08
Хорошо, я думаю, я вижу, что ты говоришь. Я думал, что использую работу Роджера до конца, но, очевидно, мне нужно другое ядро ​​в моей IDE?

Эдогальдо
Вторник 28 августа 2018 г. 20:11
Да, ты делаешь.. : D

Эдогальдо
Вторник 28 августа 2018 г. 20:18
Конечно, если вы хотите использовать загрузчик Roger's Bootloader..

Если вместо этого вы хотите придерживаться ядра STM, вам не нужен загрузчик Roger: он использует ST-Link или стандартный загрузчик USART..

joeedarock
Вторник 28 августа 2018 11:05
Afaik я установил ядра и загрузчик из инструкций Роджера, безусловно, загрузчик, который пришел из статьи, на которую я ссылался. Пожалуйста, укажите ссылку на совместимые ядра и файлы поддержки, которые я должен использовать.

Mrburnette
Вторник 28 августа 2018 11:33
[Эдогальдо - Вторник 28 августа 2018 г. 20:11] - Да, ты делаешь.. : D
Я прикасаюсь к ядрам здесь: http: // stm32duino.com/viewtopic.PHP?f = 2&t = 3111

Это может быть немного запутанным. Надеюсь, вы были указаны на эту ссылку в ответ на вашу Новый пользователь почта.

Луча

joeedarock
Ср 29 августа 2018 г. 12:14
Я только что нашел эту ветку, которая может указать на реальную проблему

https: // github.com/rogerclarkmelbourne/ ... 2/pull/545

Теперь я думаю, что когда ».Начните «Выполняться в« настройке »при запуске, это дублированный звонок, который блокирует код i2c блокирующим образом, что выглядит. Поскольку перезагрузка загрузчика также вытирает программу, похоже, что это исправило ее.

Завтра я проверю на наличие дубликата «Провод.Начните «вызовы и посмотрите, устраняет ли это проблему. Возможно, пересмотренная библиотека Роджера тоже это исправит.

joeedarock
Ср 29 августа 2018 г., 11:57
Я изменил файл "STM32F1/cores/maple/libmaple/i2c.C "согласно сообщению в указанном потоке. Проблема все еще существует, но изменилась. Код все еще блокируется, когда «провод».начинать »составлен, но теперь я могу выздороветь без перепрошивания загрузчика. Для этого я должен нажать сброс, прежде чем я смогу перезагрузить эскиз с помощью «Провод.начинать »прокомментировал, затем он снова работает.

joeedarock
Ср 29 августа 2018 12:06
Fwiw, на булавках i2c нет устройств или подтягиваний. Я поставлю пару сегодня вечером и посмотрю, изменит ли это «Повещение.

Mrburnette
Ср 29 августа 2018 12:13
Джо,

Если вы используете загрузчик, синюю таблетку и ядро ​​Роджера (старый либмапл), то вики для вас:

https: // github.com/rogerclarkmelbourne/ ... STM32/Wiki и загрузчик должен соответствовать конкретному ядру - оно связано здесь:
https: // github.com/rogerclarkmelbourne/ ... Загрузчик
Загрузка объяснена в этом разделе вики: https: // github.com/rogerclarkmelbourne/ ... /Загрузка

Обратите внимание, что для этого ядра нет файла XML для вставки в Arduino IDE для этого ядра. Вы должны загрузить Zip или клонировать репозиторий GIT. Если вы ранее использовали другое ядро ​​с установкой XML, они все это необходимо удалить, и это включает в себя вход в Arduino IDE и использование менеджера совета директоров.

Я подозревает, что у вас есть проблема с конфигурацией с IDE. Если у вас есть другой компьютер, вы можете заполнить установку и попробовать свой код.


Луча

joeedarock
Ср 29 августа 2018 12:18
Хорошо, я выяснил непосредственную причину проблемы. Когда я включаю внутренние подтягивания на линии I2C, проблема исчезает. Несмотря на то, что это работоспособное решение, это, кажется, указывает на слабость в том, как обрабатывается порт I2C.

Изменить 5 минут спустя:
Хотя проблема сбоя на проводе.Begin 'решается, система по -прежнему сбивается с выполнением других функций I2C. Это может исчезнуть, когда в автобусе что -то есть....Посмотрим.

Fredbox
Четверг 30 августа 2018 г., 2:43
I2C имеет довольно конкретные требования к подтягивающим резисторам. Внутренние подтягивания слишком высоки, чтобы их можно было использовать. Как правило, вам нужно 1-2 миллиампер для надежной работы. За 3.3 Вольт процессор, это 1.5K до 3.3K. Даже с этими ценностями вам нужно сохранить провода так же коротки, как практично. В мире Arduino (5V), 2.7k до 5.Рекомендуется 1K.

Стивестронг
Пт 31 августа 2018 г., 21:39
Я бы попытался установить значение IRQ PRIO чуть выше (меньше Prio), скажем, к 5 вместо 0, здесь: https: // github.com/rogerclarkmelbourne/ ... #L127-L128.

joeedarock
Пт 31 августа 2018 г. 22:03
Проблема была решена, с чем -то на автобусе и правильных подтягивании, она работает .

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

DFU Converter