Сброс + серийное входное взаимодействие?

Роффи
Чт 29 сентября 2016 г., 9:41
Это на Maple Mini с загрузчиком v2. Использование его USB для программы. Boot1 Pin.
Новичок в STM32 как таковой и удивлен тем, насколько легко мне было запустить все это, благодаря всей работе, времени и программному обеспечению, которые были доступны .. Должен быть благодарностью за это.

В любом случае, у меня есть 4 таймеры, два последовательных порта, ЖК -диск и PPM. Просто может быть возможность перекачивать данные в серийный порт RX при сбросе. Это вызывает то, что кажется «вечным» режимом загрузчика?
Я пока не могу найти какие -либо подробности о взаимодействии сброса во время присутствия последовательных данных, поэтому я бы по -настоящему оценил какое -либо разъяснение по этому поводу.

Единственный маршрут, который я могу себе представить в данный момент, - это взять сигналы в входные выводы, а затем снова в режиме RX и манипулировать выходами в программном обеспечении, таким образом, чтобы сигнал не присутствовал во время сброса. Надеюсь, нет!

Спасибо за помощь в этом

Дэйв

Роффи
Чт 29 сентября 2016 г., 11:51
Да, простой предвзятый "или" MOSFET и выходной штифт, чтобы выключить вывод сортирует его.

Дэйв

Rogerclark
Чт 29 сентября 2016 г., 8:51 вечера
IDE сбрасывает доску через USB -сериал, отправив магическую последовательность байтов, которая перехватывается USB -серийным кодом RX.

Однако в вашем случае это звучит так, как будто доска каким -то образом сбрасывается с помощью данных, прибывающих на аппаратный сериал UART.

Или я скучал по пониманию проблемы ?

Роффи
Пт 30 сентября 2016 г., 4:57 утра
Спасибо, что ответили Роджер...
Это все еще первые дни и кривая обучения для меня в данный момент, наряду с теми связанными с ним разочарованием, что не находит информацию, которую вы хотите, когда вам это нужно, только чтобы показать, что на самом деле он смотрит на лицо! Мне жаль, если это так!

Нет, цикл происходит после того, как код был загружен, все работает хорошо, а внешние последовательные данные входят. Проверка, что произойдет, если произойдет сброс... Может быть по разным причинам.(Power Glitch и т. Д.) На сбросе, если присутствуют последовательные данные, возврат к нормальной операции не выполняется с помощью светодиодного быстрого пульса.
Удалить последовательный вход, и процесс сброса восстанавливает программу запущенной работы.
Это происходит в любом порте RX.

Я предполагаю, что это связано с тем, что позволяет легкому программирования запуска и т. Д., И это не понимание того, насколько легко вы все это сделали.

Я отмечаю, что с Mini есть несколько булавок, которые, по -видимому, действительно нуждаются в либо внешних подтягиваниях (падениях), чтобы обеспечить целостность.
Один из «мини -минимум», прикрепленных к РЧ -приемнику, просто имеющему дело с отправленными потоками ширины импульса чтения, выйдет случайным образом в этот режим цикла запуска после другого мини -мини, который управляет радиочастотным передатчиком, получает сброс. Я смотрю на это сегодня. и, вероятно, найдет открытые булавки, которые не помогают.

Добраться медленно ... Но иду туда, я буду!

еще раз спасибо ....

Rogerclark
Пт 30 сентября 2016 г. 5:54 утра
Maple Mini предварительно сочетается с загрузчиком, чтобы упростить использование (поскольку для загрузки кода не нужно никакого внешнего оборудования)

Если у вас есть USB -сериал и прикрепите его к RX1 и TX1, нажмите и удерживайте кнопку, нажимая и выпустив кнопку сброса, она попадает во внутренний серийный серийный Bootloaeder MCU, и вы можете загрузить через внешний USB в сериал

Но в этом случае вам необходимо выбрать общую плату STM32F103CB, так как параметр Maple Mini Poard не имеет параметры последовательной загрузки, а MCU, которую он использует, является F103CB

Но... Есть ошибка в дизайне аппаратного обеспечения, и вам нужно вытащить Pin Pin Boot1 Low (по мере его плавания)

Если вы загрузите таким образом, у вас нет загрузчика в MCU, а код запускается с начала Flash (0x8000000)

(Обратите внимание, что это стирает загрузчик, но вы можете переустановить через USB в сериал)

Или если у вас есть программист Stlink, вы также можете загрузить таким образом


Однако ничто из этого не учитывает ситуацию с аварии / сбоем.

Роффи
Пт 30 сентября 2016 г., 6:40
Спасибо, Роджер ....

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

Дэйв

Rogerclark
Пт 30 сентября 2016 г., 7:04
КСТАТИ
Просто может быть возможность перекачивать данные в серийный порт RX при сбросе. Это вызывает то, что кажется «вечным» режимом загрузчика? Я думаю, что он не входит в загрузчик, более вероятно, что в коде была запущена Assert, так как в некоторых случаях это заставляет код выполнять функцию «стробоскоп», которая исчезает светодиод вверх и вниз (не просто включает его и выключенный).

У меня не было проблем с кодом, утверждающим для веков (не было никого другого), но это возможно.

Из памяти, если это утверждает, это также может попытаться привести к тому, что какой -то текст отладки в один из портов UART (возможно, UART2, но я действительно не могу вспомнить детали)

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

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

Роффи
Пт 30 сентября 2016 г., 9:36 утра
Да, я думаю, это на самом деле то, что происходит..... высокочастотный ШИМ на светодиоде, постоянно изменяющийся.
Типичный .. Stlink на работе! (Полу на пенсии здесь).
Ну, по крайней мере, я знаю, что искать! Утверждая хммм?
Время для еще большего обучения....

Спасибо, что тратили свое время на это. Я ценю это.

Дэйв

Rogerclark
Пт 30 сентября 2016 г. 10:29 утра
Привет, Дэйв.

Не беспокойся

Извините, я не могу больше помогать, но мы не видим, что никаких утверждений происходят в течение длительного времени, и я на самом деле собирался их удалить, так как часто лучше, если MCU вызывает исключение отладчика, поскольку его легче отладить, чем утверждение

Я не уверен, есть ли у вас Stlink, но если вы этого не сделаете выпустил бинарный. Но некоторые русские сайты, как известно, имеют копии)

Стивестронг
Пт 30 сентября 2016 г., 11:38 утра
Просто убедитесь, что загрузка 0 привязана к GND при сбросе.
В противном случае, когда загрузка 0 равен «1», а загрузка 1 снят, чип может интерпретировать входящие данные на последовательных в течение 3 секунд после сброса, когда попытка программировать чип (так как он будет загружаться из системной памяти).

Rogerclark
Пт 30 сентября 2016 г., 11:57 утра
Я думаю, что Boot0 натянут на Maple Mini, но, как вы знаете, Steve, есть дизайн с Boot1

Но я думаю, что каким -то образом проблема в том, что это утверждение, вызванное где -то в ядре, и проблема не в перезагрузке

Я сделал поиск всего ядра для Assert, но он использовался в нескольких местах e.глин.

#include void setup() { // put your setup code here, to run once: Serial.begin(9600); delay(100); } void loop() { // put your main code here, to run repeatedly: }

Стивестронг
Пт 30 сентября 2016 г. 12:29
Хорошо, я могу что -то неправильно понять.
Согласно Spec, чип должен запускать код из Flash, когда загрузка 0 - «0», независимо от состояния загрузки 1.
Таким образом, вы говорите, что даже если загрузка 0 - «0», чип может непреднамеренно реагировать на ввод последовательных данных во время загрузки/сброса/инициализации?
РЕДАКТИРОВАТЬ
Было бы интересно поймать данные о серийном TX, если таковые имеются, в случае неисправности.
Кроме того, я думаю, что только утверждает для Exti, USB или сериала, остальные, похоже, не актуальны.

Роффи
Пт 30 сентября 2016 г. 13:09
Ну что ж. Только что нашел мою проблему .... Извините, глупая ошибка на моей стороне. Порчил условие, которое возникнет, когда «получение» Mini был представлен с особыми неправильными данными о кадре после сброса отправителя, которые вызовут переполнение в матрице данных приемника, тем самым записывая на неизвестную территорию и, следовательно, ответ.
Еще раз спасибо за помощь .... Каждая неудача имеет положительный результат, и, по крайней мере, я узнал некоторые полезные факты здесь.