USBERIAL и SERIAL TERMINAL

Дэйвид.Прентис
Солнце 02 апреля 2017 14:36
На обычном Uno, Мега, Леонардо, ... Вы можете загрузить эскиз через загрузчик, независимо от того, открыт ли серийный терминал или нет.
Если терминал открыт, IDE очищает его, строит и загружает, а затем вновь открывает серийный терминал, эскиз работает.

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

Загрузчик STM32DUIN. В конце загрузки DFU он пытается вновь открыть сериал. Это терпит неудачу, потому что USBSerial не начинается до начала программы.

STM32Duino Bootloader загружает нормально, если нет открытого терминала. Программа работает. Вы можете щелкнуть значок терминала. Вы теряете первые байты серийных. Значок терминала не сбрасывает программу.

Как я могу получить терминал для сброса программы? я.эн. DTR Pulse
Или возможно отрегулировать время для повторного открытия COM-порта?

У меня такой же результат с платами Bluepill и Iteadmaple (Maple Rev3).

Я хотел бы иметь поведение в соответствии с обычным ООН, мега, ...
я.эн. Захватить весь серийный выход. Программа сброса с DTR из программы терминала.

Дэйвид.

michael_l
Пн, 03 апреля 2017 г., 6:49
Я тоже думал об этом, но, к сожалению, я не знаю достаточно, чтобы это работало. Вот некоторая информация о том, как STM32duino Bootloader делает сброс.

https: // github.com/rogerclarkmelbourne/ ... загрузчик

На «общими» платах USB-сброс (для принудительного возобновления хоста) запускается реконфигурированием USB-линии D+ (PA12) в режим GPIO и приводя к низкому низкому периоду PA12, прежде чем установить штифт на его USB -эксплуатационный режим.

Поскольку в STM32 нет конвертера USB-сериала, как в Arduino (CH340, FTDI и т. Д.

Должен быть какой -то способ, как Arduino IDE обнаруживает, что COM -порт «готов» быть открытым с помощью Arduino Poards, если он может снимать все последовательные данные с начала эскиза. Я предполагаю, что не что -то подобное для загрузчика STM32Duino также.

Стивестронг
Пн, 03 апреля 2017 г. 8:06 утра
Обходной путь, который я использую: void setup() { Serial.begin(); while ( !Serial.isConnected() ) ; // wait till serial connection is setup, or serial monitor started ... }

Дэйвид.Прентис
Пн, 03 апреля 2017 г. 9:53 утра
@Майкл,

Устройство USB CDC реализовано в пользовательском приложении, а не код загрузчика. Поэтому, если IDE пытается «вновь открыть» серийный терминал слишком скоро, он потерпит неудачу. Я предполагаю, что тщательное время между завершением DFU и запуском приложений может поймать перечисленный CDC. Но это было бы рискованно.

@Стив,

Да, я знаю, что я могу повесить, пока не будет искал () правда. Это не будет компилироваться на обычном ардуино.
И многие приложения используют только сериал в качестве «дополнительного» E.глин. Чтобы показать некоторую диагностическую информацию.

Да, я могу отложить на «долгое время». Это будет работать на любом ардуино. Публика просто нужно щелкнуть на значок терминала «достаточно быстро»

Я мог бы использовать тайм -аут с isconnectect () или серийным != Null на Леонардо. Это добавляет грязные условные условия к простому эскизу Arduino.

Идеальное расположение было бы, если «нажмите на значок терминала», перезагрузив чертеж. я.эн. Терминал успешно открывается. BluePill начинается с USBERIAL. Каждый байт пойман. Похоже на любое другое ардуино.

Дэйвид.

Вассилис
Пн, 03 апреля 2017 г. 10:45
Дэйвид.Прентис написал: Загрузчик STM32DUIN. В конце загрузки DFU он пытается вновь открыть сериал. Это терпит неудачу, потому что USBSerial не начинается до начала программы.

STM32Duino Bootloader загружает нормально, если нет открытого терминала. Программа работает. Вы можете щелкнуть значок терминала. Вы теряете первые байты серийных. Значок терминала не сбрасывает программу.

Дэйвид.Прентис
Пн, 03 апреля 2017 г., 11:13
Я пытался менять доски.TXT и перезапустил IDE. Это не имело никакого значения.
Я все еще могу загрузить эскиз. Но если у меня открывается декорация, когда я запускаю сборку, я получаю: ... Sketch uses 46,472 bytes (70%) of program storage space. Maximum is 65,536 bytes. Global variables use 4,048 bytes of dynamic memory. maple_loader v0.1 Resetting to bootloader via DTR pulse Searching for DFU device [1EAF:0003]... Found it! Opening USB Device 0x1eaf:0x0003... Found Runtime: [0x1eaf:0x0003] devnum=1, cfg=0, intf=0, alt=2, name="STM32duino bootloader v1.0 Upload to Flash 0x8002000" Setting Configuration 1... Claiming USB DFU Interface... Setting Alternate Setting ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing Transfer Size = 0x0400 bytes_per_hash=929 Starting download: [##################################################] finished! state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present Done! Resetting USB to switch back to runtime mode processing.app.SerialException: Error opening serial port 'COM28'. at processing.app.Serial.(Serial.java:127) at processing.app.Serial.(Serial.java:66) at processing.app.SerialMonitor$3.(SerialMonitor.java:93) at processing.app.SerialMonitor.open(SerialMonitor.java:93) at processing.app.AbstractMonitor.resume(AbstractMonitor.java:110) at processing.app.Editor.resumeOrCloseSerialMonitor(Editor.java:2246) at processing.app.Editor.access$2400(Editor.java:77) at processing.app.Editor$DefaultExportHandler.run(Editor.java:2212) at java.lang.Thread.run(Thread.java:745) Caused by: jssc.SerialPortException: Port name - COM28; Method name - openPort(); Exception type - Port not found. at jssc.SerialPort.openPort(SerialPort.java:167) at processing.app.Serial.(Serial.java:116) ... 8 more Error opening serial port 'COM28'.

Вассилис
Пн, 03 апреля 2017 г. 13:44
Очень странно ... кажется, что у вас есть проблема водителей
Посмотрите на панель управления компьютером. Есть ли дополнительный COM -порт (USB -последовательный порт) при подключении чертежа или клена к USB -порту ?

Дэйвид.Прентис
Пн, 03 апреля 2017 г., 15:24
Я отредактировал C: \ users \ david \ appdata \ local \ arduino15 \ packages \ stm32duino \ adware \ stm32f1 \ 2017.3.26 \ Доски.текст

Когда я смотрю на диспетчер устройств, я вижу «Teensy USB-сериал (COM28)» на моем ноутбуке Win7-32
Когда я смотрю на инструменты->Порт в IDE, я вижу «com28 (Maple mini)»

У меня есть мышь в одном USB -порту, чертеж в другом USB -порту.

Я могу посмотреть успешную загрузку в диспетчере устройств.
COM28 исчезает. Atmel USB -устройства->Maple DFU появляется. COM28 появляется, когда завершено.

Я предполагаю, что скрипт IDE пытается открыть COM -порт, как только DFU завершится, но до начала CDC пользовательским приложением.

Поскольку загрузчик Maplemini начинается правильно, это означает, что сброс попадает в Bluepill.
Я был бы вполне доволен закрытием серийного терминала перед загрузкой.
Если бы «открытие» сделало успешный сброс, это было бы хорошо. (как ранний Arduino IDE, используемый ведущим)

Дэйвид.

Стивестронг
Пн, 03 апреля 2017 г., 17:38
То же поведение для меня: нет сброса, когда я открываю окно серийного монитора. Это всегда было так.

michael_l
Пн, 03 апреля 2017 г., 17:44
Так же, когда (сериал.isconnected ()) так же, как и в то время как (!Серийный) в образцах Arduino Sketches.

ZMEMW16
Пн, 03 апреля 2017 г., 21:08
Это то же поведение на всех платформах, Win/Mac/Linux?
На Linux я обычно подключаю свои устройства к концентратору в определенном порядке; Stlink, Target USB, Target UART1, может быть, Target UART2 ... ...
Затем /dev /ttyusbn обычно переключается от 0 до 2 на загрузках, и я меняю порт (неоднократно)

SRP