[Решено] серийный USB для Blue Pill Board

LSMOD
Ср 26 декабря 2018 г. 8:52 утра
Привет,

Я провожу свои первые эксперименты с STM32Duino.
Чтобы узнать, я не могу найти нить, которая отвечает на следующие вопросы:

Я хочу попытаться использовать USB -интерфейс синей таблетки STM32 в качестве последовательного устройства.
Программирование работает с PL2303 над UART1, и я могу получать данные там.
Но я хочу использовать встроенный USB для ввода и вывода.

Я думал, что часть вспыхнутого изображения - это программное обеспечение для использования интерфейса USB?
Или должен быть пропущен загрузчик 20 кб для использования интерфейса USB в качестве последовательного устройства?

Конечно, я обнаружил, что существует несоответствующий резистор R10 - я исправил его с параллельной резистором 1K8 - но без какого -либо результата.

Я нашел эту страницу http: // amitesh-singh.GitHub.IO/STM32/20 ... -таблетка.HTML
Но я не мог собрать программное решение: // This is required if proper pullup is not present at D+ line. // This is must for chinese stm32f103c8t6 aka "blue pill" rcc_periph_clock_enable(RCC_GPIOA); gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO12); gpio_clear(GPIOA, GPIO12); msleep(5); //delay

LSMOD
Ср 26 декабря 2018 г. 8:59
Проблемы немного похожи на ViewTopic.PHP?F = 28&t = 4468

Я хочу добавить, что я работаю с Linux.
Поэтому я вижу, что USB -устройство не может быть перечислено:
... [ 1573.486459] usb 1-6.1: new full-speed USB device number 21 using ehci-pci [ 1573.894384] usb 1-6.1: device not accepting address 21, error -32 [ 1573.895265] usb 1-6-port1: unable to enumerate USB device

Беннебой
Ср 26 декабря 2018 г. 11:06
Прочитать эту вступительную информацию, которую Mrburnette собрал вместе -> ViewTopic.PHP?f = 2&t = 3111

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

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

LSMOD
Ср 26 декабря 2018 г., 11:21
Да, но этот материал не организован, так что его можно легко найти. ;)

Вики говорит https: // wiki.STM32duino.com/index.PHP?Т ... Usb_serial Последовательный USB включен для всех плат F103 при загрузке с использованием загрузчика, он также доступен при загрузке с помощью ST-Link (SWD) в этих случаях:
Сериал.Печать ("Привет, мир"); будет печатать через серийный USB (CDC).
Таким образом, загрузчик 20 КБ должен быть установлен (адально), чтобы серийный USB был доступен?
Или является смыслом использования стандартного загрузчика, который можно использовать с UART1?

Нет ничего написано !?

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

Стивестронг
Ср 26 декабря 2018 г. 11:42
[LSMOD - Ср 26 декабря 2018 г. 11:21] - Нет ничего написано !?
Да, загрузчик будет на самом низком 4K памяти процессора и используется для загрузки нового кода по USB DFU.
USB Serial доступен в качестве «серийного» экземпляра по умолчанию и не имеет ничего общего с загрузчиком, это две разные вещи.

Беннебой
Ср 26 декабря 2018 г., 13:23
Главное, что я делал, - это не сказано, какое ядро ​​вы используете. CDC (серийный через USB) еще не доступен в ядре STM (он доступен в качестве пиара на их филиале Dev, но не через менеджер по доскам), но доступен в ядре Роджера....

Есть шаблон для задания вопросов в посте, который я связал, он хорошо продумал.

Paulvdh
Чт 27 декабря 2018 г. 12:07
Я также довольно новичок в STM32, и я весьма поражен AL вариантами для STM32.
Как своего рода случайный тестовый проект, который я скомпилировал, вспыхнул и немного экспериментировал с:
https: // github.com/satoshinm/pill_serial

Этот проект работал без модификаций исходного кода для меня. Он добавил 3 дополнительных последовательных порта в мою коробку Linux.
Я очень кратко протестировал все три, введя несколько символов в минием и провод с петлевой площадкой на синей таблетке.
Все 3 последовательных порта работают, и все они проходят один и тот же USB -кабель до моей синей таблетки.
Эхоизгодив данных немедленно прекратилось, когда был отключен проволока петли.

Согласно заметкам, которые я сделал, мне пришлось положить резистор 1K8 между PA12 и 3V3, чтобы получить мой ПК (с центром Sitecom), чтобы распознать синие таблетки.

Редактировать:
Вы спросили о каком -нибудь загрузчике.
Первое, что я делаю, когда начинаю с новой синей таблетки,-это разблокировать вспышку и, вероятно, также стирать / перезаписать загрузочный загрузчик, согласно практическому праймеру от Pandafruits (очень приятное введение в сценарии линкера и тому подобное).
Я просто использую китайский клон ST-Link V2 для программирования.

Беннебой
Чт 27 декабря 2018 г. 12:10
И опять же, это еще один проект, который не является STM32Duino One, он основан на либопенкме.

Я боюсь, что вы неправильно поняли цель этого форума.

LSMOD
Чт 27 декабря 2018 13:23
Спасибо всем за советы!
Теперь я должен испытать это. : D

Но мне не ясно, что пишет Беннибой?
[Беннебой - Ср 26 декабря 2018 г. 13:23] - Главное, что я делал, - это не сказано, какое ядро ​​вы используете. CDC (серийный через USB) еще не доступен в ядре STM (он доступен в качестве пиара на их филиале Dev, но не через менеджер по доскам), но доступен в ядре Роджера....

Есть шаблон для задания вопросов в посте, который я связал, он хорошо продумал.
Я думал с Blue Pill Board и STM32duino ясно, что я использую?
Что такое ядро ​​Роджера?

Хм - кажется, нет простого подхода для серийной USB -проблемы.
Я предположил, что это самая важная функция для использования внутреннего USB ... :?
[Беннебой - Чт 27 декабря 2018 г. 12:10] - И опять же, это еще один проект, который не является STM32Duino One, он основан на либопенкме.

Я боюсь, что вы неправильно поняли цель этого форума.
Да - это полный собственный проект - но интересный!
О.K. Это не то, о чем я просил, но дает некоторые идеи ...

Я вижу цель этого форума, чтобы изучить и сообщить все, чтобы работать с STM32 QCC.
STM32Duino - очень хороший подход, чтобы начать работать с этими контроллерами.

Беннебой
Чт 27 декабря 2018 г. 13:40
[Беннебой - Ср 26 декабря 2018 г., 11:06] - Прочитать эту вступительную информацию, которую Mrburnette собрал вместе -> ViewTopic.PHP?f = 2&t = 3111
^^

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

РЕДАКТИРОВАТЬ. Я подозреваю, что проблема в том, что вы используете официальное ядро ​​STM через менеджера Arduino Poards, оно пока не включает сериал над USB. Вам нужно будет использовать ядро ​​Roger's Leaflabs для USB Serial -> https: // github.com/rogerclarkmelbourne/arduino_stm32 Инструкции по установке здесь -> https: // github.com/rogerclarkmelbourne/ ... занижаем

LSMOD
Чт 27 декабря 2018 г., 13:54
[Беннебой - Чт 27 декабря 2018 г., 13:40] - Все, что вам нужно, там, вы просто должны приложить усилия, чтобы прочитать его.
О.K. Спасибо.

Проблема заключалась в том, что я не ожидал найти ответ на мой вопрос.
Нет описания, в чем разница между этими ядрами?
Или почему они существуют?

Mrburnette облажалась информацией вместе на действительно высоком уровне абстракции, не объясняя их. ;)

[Беннебой - Чт 27 декабря 2018 г., 13:40] - РЕДАКТИРОВАТЬ. Я подозреваю, что проблема в том, что вы используете официальное ядро ​​STM через менеджера Arduino Poards, оно пока не включает сериал над USB. Вам нужно будет использовать ядро ​​Roger's Leaflabs для USB Serial -> https: // github.com/rogerclarkmelbourne/arduino_stm32 Инструкции по установке здесь -> https: // github.com/rogerclarkmelbourne/ ... занижаем
Ах - я думаю, что теперь у меня есть ответ на основной вопрос этой ветки. : mrgreen:
Я постараюсь понять это ...

Paulvdh
Чт 27 декабря 2018 11:03
Если вы перейдете на главную страницу этого индекса форума и прокрутите вниз, вы найдете целый раздел форума, посвященный «ядрам»
ViewForum.PHP?F = 42

«Ядро» - это набор библиотек, которые формируют базу для создания вашего приложения на.
Роджер содержит их список в первой ветке в этом разделе форума:
ViewTopic.PHP?F = 42&t = 97

Кажется, что то, что называется «ядро» на этом форуме, несколько сопоставимо на том, что называется «платформа» на платформе:
https: // platformio.org/frameworks

LSMOD
Пт 28 декабря 2018 г. 9:26 утра
[Paulvdh - Чт 27 декабря 2018 г., 23:03] - «Ядро» - это набор библиотек, которые формируют базу для создания вашего приложения на.
Роджер содержит их список в первой ветке в этом разделе форума:
ViewTopic.PHP?F = 42&t = 97

Кажется, что то, что называется «ядро» на этом форуме, несколько сопоставимо на том, что называется «платформа» на платформе:
https: // platformio.org/frameworks
Хм - я не могу понять преимущество этой «основной» концепции.

Прежде чем я работал прямо с AVR-GCC очень простым способом.
Я делал меньшие проекты с AtteGa8 и непосредственно включен в основную.c или сделать создание того, что мне нужно.
Так что у меня был полный контроль и действительно маленькие двоичные файлы с большим количеством функциональности.
С опцией компилятора «-функциональные сечения» только необходимых функций, где скомпилированы и связаны.
С AVR-objdump я могу создать действительно хороший вывод, показывающий C- и сгенерированный код ассемблера.

Я тоже попробовал Arduino для AVR, но мне было тревожно не контролировать сгенерированный вывод.
Скомпилировано так много накладных расходов, что вы не могли использовать меньшие QCC, как atmega8.
Но когда вы используете большие QµC, преимущество в том, что у вас есть много библиотек, которые можно легко использовать!

Когда я должен решить о ядрах для STM32duino, я вижу преимущество простого использования библиотеков, потерянных !?

В большинстве случаев в большинстве случаев в большей части случаев доска с синими таблетками, и поэтому должно быть достаточно места для действительно больших проектов.
Но то, что я не могу понять, это то, что простая программа Blink нуждается в 1632 байт и 2472 байт ОЗУ.
И дополнительный скомпилированный код не может обрабатывать интерфейс USB. Что здесь происходит? : шок:

Есть ли что-то вроде подобного Objdump для Arm-none-eabi-gcc, чтобы увидеть, что происходит?
Что является частью скомпилированного ядра?

LSMOD
Пт 28 декабря 2018 г. 9:50 утра
Есть похожий обмен ARM-None-Eabi-objdump.
(Я дополнительно установил пакет Debian Binutils-Arm-None-Eabi)

Чтобы я мог обработать скомпилированную программу Blink с
cd /tmp/arduino_build_914460 arm-none-eabi-objdump -h -S Blink.ino.elf > blink.lst

LSMOD
Сб 29 декабря 2018 г. 13:30
[Беннебой - Чт 27 декабря 2018 г., 13:40] - РЕДАКТИРОВАТЬ. Я подозреваю, что проблема в том, что вы используете официальное ядро ​​STM через менеджера Arduino Poards, оно пока не включает сериал над USB. Вам нужно будет использовать ядро ​​Roger's Leaflabs для USB Serial -> https: // github.com/rogerclarkmelbourne/arduino_stm32 Инструкции по установке здесь -> https: // github.com/rogerclarkmelbourne/ ... занижаем
Пожалуйста - я не понимаю смысла Скопируйте папку arduino_stm32 в аппаратную папку в папке Arduino Sketches. Если аппаратная папка не существует, пожалуйста, создайте одну. Что такое аппаратная папка в папке Sketches?

Я могу найти STM32Duino в ~/.arduino15/packages/STM32duino
Но когда я добавляю файлы Роджера как ~/.arduino15/packages/Arduino_stm32 ничего не происходит ...

Я определил папку для эскизов.
Но когда я копирую файлы в .../библиотеки/Arduino_stm32 это то же самое.

Что нужно сделать, чтобы использовать это «ядро» ?

Стивестронг
Сб 29 декабря 2018 г. 20:38
http: // wiki.STM32duino.com/index.PHP?title = установка

LSMOD
Солнце 30 декабря 2018 г. 8:55 утра
Да, я следил за этой установкой и установил «Доски Arduino Sam» дополнительно.

Он помещен в ~/.arduino15/packages/arduino/hardware/SAM/1.6.11
Затем я положил загрузку в ~/.arduino15/packages/arduino/hardware/Arduino_stm32

Тогда я могу найти новую доску "Arduino Dues" с
* Порт программирования
* Родной USB -порт

Попытка скомпилировать программу Blink для ИТ приводит к ошибкам компиляции, например:
Sketch wird kompiliert... /home/me/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++ -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10808 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON "-DUSB_MANUFACTURER=\"Arduino LLC\"" "-DUSB_PRODUCT=\"Arduino Due\"" ... /srv/Arduino/Blink/Blink.ino: In function 'void setup()': Blink:22:13: error: 'PC13' was not declared in this scope pinMode(PC13, OUTPUT);

Беннебой
Солнце 30 декабря 2018 г., 16:26
Я не пользователь Linux, но я думаю, что вы должны разместить папку arduino_stm32 в область эскизов, которая будет где -то в /Home /Home /<Ваш пользователь>/Arduino/harpware. например ~/arduino/hardware/

Смотрите здесь -> http: // wiki.STM32duino.com/index.PHP?тип ... n_on_linux

Рик Кимбалл
Солнце 30 декабря 2018 г. 16:35
Как установить «ядро Роджера» из GitHub на Linux и использовать его с помощью BluePill.
Aka "Libmaple Core", «Оригинальный STM32Duino Core», «Не совместим с HAL Core». "Не тот, что ул работает над ядром"

1.) В Arduino IDE, из инструментов/ меню, выберите «Диспетчер платы» и установите один из ядер Arduino Sam Cortex-M3/ или Cortex-M0. Мы никогда не выберем ни одной из этих плат, она установлена ​​только для получения инструментального оборудования ARM-None-EABI-G ++/GCC (*)

2.) Закройте все окна Arduino, чтобы выйти из Arduino.

3.) Установить последнюю версию Core Roger от GitHub в Справочник рисования/ardware/arduino_stm32.
Примечание: предполагает, что ваш каталог эскизов - $ home/arduino (дефолт для Arduino IDE)

В окне терминала Linux: $ mkdir -p ~/Arduino/hardware $ cd ~/Arduino/hardware $ git clone https://github.com/rogerclarkmelbourne/Arduino_STM32.git Arduino_STM32

LSMOD
Пн 31 декабря 2018 г., 7:54 утра
Спасибо за подробное описание Рик!
Я проверю это и дам обратную связь.

Я опубликовал подержанные Linux-Folders в своих сообщениях выше.

Некоторые мысли раньше:

1.) кажется полным ненужным, потому что мы уже установили набор инструментов с платой STM32Duino с менеджером совета директоров.
Даже если вы выберете «arduino dueed», вы увидите, что ~/.arduino15/packages/Ардуино/Инструменты/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g ++ был вызван для компиляции.

Вы можете найти папку .../sam/1.6.11/ядер/arduino/usb который, кажется, содержит необходимые библиотеки USB.
Почему невозможно использовать только эту часть?

Рик Кимбалл
Пн 31 декабря 2018 г., 14:04
[LSMOD - Пн, 31 декабря 2018 г., 7:54 утра] - Я проверю это и дам обратную связь.
Пожалуйста, дайте нам знать, когда у вас есть рабочая настройка, используя приведенные выше инструкции.
[LSMOD - Пн, 31 декабря 2018 г., 7:54 утра] - Я опубликовал подержанные Linux-Folders в своих сообщениях выше.
Попытка установить ядро ​​в ~/.Arduino15 - неправильное место. Вот почему я создал подробные инструкции о том, куда он должен идти.
[LSMOD - Пн, 31 декабря 2018 г., 7:54 утра] - 1.) кажется полным ненужным, потому что мы уже установили набор инструментов с платой STM32Duino с менеджером совета директоров.
Да, очевидно, если вы уже сделали этот шаг.

Тем не менее, у меня было ощущение, что вы думали, что вы можете использовать Arduino Due Poard для создания кода для плат STM32. Это никогда не сработает. В Arduino Dued используется чип Microchip SAM3X8E. SAM3X8E также использует архитектуру Cortex-M3, однако все периферийные устройства на ней являются специфичными для микрочипов. Единственная вещь, совместимая между корой Cortex-M3 STM32F1 и SAM3X8E,-это набор инструкций ARM. Каждый поставщик, который использует ARM Cortex-M3 в качестве процессора, предоставляет свои собственные реализации периферийных устройств (GPIO, USART, USB, I2C, SPI и т. Д..), которые полностью несовместимы с любыми другими периферийными устройствами поставщиков.
[LSMOD - Пн, 31 декабря 2018 г., 7:54 утра] - Вы можете найти папку .../sam/1.6.11/ядер/arduino/usb который, кажется, содержит необходимые библиотеки USB.
Почему невозможно использовать только эту часть?
Большой вопрос заключается в том, почему вы думаете, что это может сработать? Расположение периферийных устройств и карты памяти для SAM3X8E полностью отличаются от STM32F1. Прочитайте справочное руководство для каждого чипа, и вы увидите, что это никогда не будет работать.

Рик Кимбалл
Пн 31 декабря 2018 г. 14:19
После того, как у вас будет рабочая настройка для ядра Роджера и успешно загрузил код Blink, который работает с использованием метода последовательной загрузки, вы можете перейти к следующему шагу.

Ваша проблема заключается в том, что вы хотите использовать метод загрузки встроенного в ROM USART, но также использовать нативное USB -устройство. Это возможно только в том случае, если вы измените доски.txt file. Роджер давно сделал предположение, что если вы хотите использовать серийный загрузчик USART, вы, вероятно, не хотели использовать нативные USB. Натуральный USB включен или отключен путем определения передачи в компилятор.

В STM32F1/Доски.TXT LINE 380, Мы можем посмотреть на запись метода загрузки Stlink для платы Bluepill, которая работает с Native USB:
genericSTM32F103C.menu.upload_method.STLinkMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DSERIAL_USB -DGENERIC_BOOTLOADER

LSMOD
Вторник 01 января 2019 г. 8:51
С Новым Годом!

Я раздражен, потому что я только что следовал предложенным инструкциям http: // wiki.STM32duino.com/index.PHP?title = установка.
Второй момент Запустите Arduino IDE и откройте инструменты меню -> Доски -> Менеджер доски. Установите пакет «Arduino Sam Boards» (включает в себя Arduino Due) из списка доступных плат. Это устанавливает поддержку компилятора для Arm Cortex-M3. И я не понял этого с самого начала. ;)
Так что это полная чепуха, когда вы установили STM32Duino. : шок:

О.K. - Тогда, конечно, нет смысла, что USB -материал «SAM» используется для USB STM32F103!

Теперь я перенес ядро ​​Роджера в/srv/arduino/Аппаратное обеспечение/arduino_stm32/Stm32f1/cores/maple, которая является моей папкой эскизов.
В папке клен Я мог бы найти такие файлы, как usb_serial.CPP это звучит то, что я хочу иметь. ;)
Интересная часть кажется
//Roger Clark. Two new begin functions has been added so that normal Arduino Sketches that use Serial.begin(xxx) will compile. void USBSerial::begin(unsigned long ignoreBaud) { volatile unsigned long removeCompilerWarningsIgnoreBaud=ignoreBaud; ignoreBaud=removeCompilerWarningsIgnoreBaud; begin(); } void USBSerial::begin(unsigned long ignoreBaud, uint8_t ignore) { volatile unsigned long removeCompilerWarningsIgnoreBaud=ignoreBaud; volatile uint8_t removeCompilerWarningsIgnore=ignore; ignoreBaud=removeCompilerWarningsIgnoreBaud; ignore=removeCompilerWarningsIgnore; begin(); }

Беннебой
Вторник 01 января 2019 12:15
Вы прошивали загрузчик?

LSMOD
Вторник 01 января 2019 12:49
Нет - до сих пор я не пробовал загрузчик, потому что не вижу смысла занять дополнительные 20.6 КБ вспышки, когда серийная загрузка работает без нее.

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

Резистор для USB припаян.

Рик Кимбалл
Вторник 01 января 2019 14:34
[LSMOD - Вторник 01 января 2019 г. 8:51 утра] - Теперь я перенес ядро ​​Роджера в/srv/arduino/Аппаратное обеспечение/arduino_stm32/Stm32f1/cores/maple, которая является моей папкой эскизов.
Итак, "/srv/arduino" - ваш каталог эскизов. Однако вывод компилятора показывает, что вы получаете свою платформу и ядро ​​от
~/.Arduino15/Packages/STM32DUINO/ADHAWARE/STM32F1/2018.12.3 ...

У вас есть серьезно сломанная установка Arduino.

LSMOD
Вторник 01 января 2019 14:36
Кажется, я хочу сначала иметь самую сложную функцию! :ржу не могу:
Я должен просто использовать UART1 и PL2303 USB-адаптер. ;)

Я немного искал и нашел несколько интересных немецких текстов для этой проблемы.
Вот полная статья для USB на STM32: https: // www.Микроконтроллер.сеть/статья ... _mit_stm32

Стефан написал, что серийный USB должен работать из коробки, но это полгоды назад:
http: // stefanfrings.de/stm32/#vcparduino

Он также узнал, что есть несколько действительно маленьких реализаций USB:
http: // stefanfrings.de/stm32/#vcpnohal
Это приводит к этому источнику:
https: // www.Микроконтроллер.net/topic/382790#4365472
С этой загрузкой
https: // www.Микроконтроллер.net/attachm ... Xp_stm.молния
это должно составлять и дать функциональность с Вспышка всего 6 КБ и 1,7 КБ ОЗУ.

Может быть, некоторые эксперты могут адаптировать код для STM32Duino здесь?

LSMOD
Вторник 01 января 2019 14:39
[Рик Кимбалл - Вторник 01 января 2019 14:34] - Итак, "/srv/arduino" - ваш каталог эскизов. Однако вывод компилятора показывает, что вы получаете свою платформу и ядро ​​от
~/.Arduino15/Packages/STM32DUINO/ADHAWARE/STM32F1/2018.12.3 ...

У вас есть серьезно сломанная установка Arduino.
Ах - я понимаю, что ты имеешь в виду.
Я ожидал, что установленная STM32Duino используется для компиляции и должен быть правильным.
Но эта библиотека должна быть составлена ​​из папки Roger's arduino_stm32.
Затем .../ardware/arduino_stm32 все еще не является правильным местом для файлов Роджера !?
Я не понимаю, почему это должно быть помещено в папку эскизов?

Какой должен быть правильный вывод?

Как я уже сказал - процесс компиляции Arduino является мистическим! :ржу не могу:

Рик Кимбалл
Вторник 01 января 2019 г. 15:24
[LSMOD - Вторник 01 января 2019 14:36] - Это приводит к этому источнику:
https: // www.Микроконтроллер.net/topic/382790#4365472
С этой загрузкой
https: // www.Микроконтроллер.net/attachm ... Xp_stm.молния
Это должно составлять и дать функциональность только с 6 КБ вспышкой и 1,7 КБ ОЗУ.
Похоже, вы думаете, что можете просто взять все со словами STM32, и он будет работать на STM32F103C8 с ядром Роджера? Можете ли вы просто взять вещи, в которых упоминается Atmel и USB и ожидать, что он будет скомпилировать и запустить USB -код ATMEGA32U4, который вы собираетесь запустить на аттину, используя Arduino Core?

Те статьи, которые вы указываете, не имеют ничего общего с ядром Libmaple здесь. Они специально говорят о STM32F4, который полностью отличается от STM32F103, который мы используем.

Я думаю, что проблема здесь заключается в языковом барьере. Я не говорю по -немецки, поэтому я, вероятно, плохо объясняю это.

Я дал тебе Простые шаги установки Чтобы заставить Роджера/Либмапл идти на коробку Linux. Шаг за шагом. Затем я дал вам инструкции, которые показывают вам, как Измените свои доски.текст так что это позволило бы вам использовать нативный USB, даже если вы загружаете через серийный загрузчик USART ROM. Тем не менее, вы, кажется, уже получили себя в состоянии чёртости. Вы смешиваете и сопоставляете инструкции до такой степени, что ваш .Справочник Arduino15 сломлен.

Мое предложение:

Резервное копирование и сохраните свой ~/.Arduino15
Резервное копирование и сохранить ~/arduino
удалить ~/.Arduino15
удалить ~/arduino

Следуйте указаниям, которые я указал
Получите мгновенный пример работы
Не обращайте внимания на то, что/var/log/syslog извергает сообщения о вашем устройстве USB BluePill.

Следуйте инструкциям для изменения ваших досок.TXT, чтобы добавить определение
Загрузите воспринимаемый пример на свой чертежи
хвост -f/var/log/syslog
Убедитесь, что штифт Boot0 на BluePill вернулся в режим работы.
Отключите и замените серийное соединение USB BluePill USB
... Вся проблема с местным USB.. Вы не собираетесь получить серийный терминал, работающий достаточно быстрым, чтобы поймать общепринятый выход
... Вы вернетесь, когда Modemmanager захватит /dev /ttyacm0 и думает, что он сможет совершать звонки
... Вы вернетесь, когда разрешения не позволят вам открыть /dev /ttyacm0
... Вы вернетесь и жаловатесь, что не видите вывода

Мне кажется, что вы должны быть довольны серийным загрузчиком USART ROM. Получите некоторый опыт использования BluePill с этой настройкой, а затем заняться Native USB в будущем.

(Вот я добавляю еще один гаечный ключ для обезьяны к успеху) Возможно, к тому времени, когда вам станет комфортно с STM32F1, ядро, разработанное ST, будет иметь нативную USB.

Fredbox
Вторник 01 января 2019 г. 16:58
Дополнительное предложение - убедиться, что ваше оборудование на самом деле работает. Паянка на синих таблетках, которые я получил на прошлой неделе, был плохим, а порт USB был нефункциональным на одном из них из-за припоя моста в разъеме.

Мигайте загрузчик. https: // github.com/rogerclarkmelbourne/ ... 0_PC13.бин
После мигания, отключите доску и перемещайте оба прыгунов для загрузки в положение 0. Подключите USB -кабель и посмотрите на DMESG. Убедитесь, что появляются коды идентификационных продуктов 0003 и 0004.[Tue Jan 1 10:40:21 2019] usb 3-6: new full-speed USB device number 116 using xhci_hcd [Tue Jan 1 10:40:21 2019] usb 3-6: New USB device found, idVendor=1eaf, idProduct=0003 [Tue Jan 1 10:40:21 2019] usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [Tue Jan 1 10:40:21 2019] usb 3-6: Product: Maple 003 [Tue Jan 1 10:40:21 2019] usb 3-6: Manufacturer: LeafLabs [Tue Jan 1 10:40:21 2019] usb 3-6: SerialNumber: LLM 003 [Tue Jan 1 10:40:23 2019] usb 3-6: USB disconnect, device number 116 [Tue Jan 1 10:40:23 2019] usb 3-6: new full-speed USB device number 117 using xhci_hcd [Tue Jan 1 10:40:23 2019] usb 3-6: New USB device found, idVendor=1eaf, idProduct=0004 [Tue Jan 1 10:40:23 2019] usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [Tue Jan 1 10:40:23 2019] usb 3-6: Product: Maple [Tue Jan 1 10:40:23 2019] usb 3-6: Manufacturer: LeafLabs [Tue Jan 1 10:40:23 2019] usb 3-6: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes [Tue Jan 1 10:40:23 2019] cdc_acm 3-6:1.0: ttyACM0: USB ACM device

Рик Кимбалл
Вторник 01 января 2019 г., 17:08
[Fredbox - Вторник 01 января 2019 г. 16:58] - Мигайте загрузчик. https: // github.com/rogerclarkmelbourne/ ... 0_PC13.бин
Весь смысл его поста заключается в том, что он не хочет использовать загрузчик DFU, загруженный DFU, он хочет использовать встроенный ROM Serial USART Bootloader. Однако он все еще хочет использовать Native USB в своем коде Arduino, который не поддерживается, если он не изменяет доски.txt file.
[Fredbox - Вторник 01 января 2019 г. 16:58] - Дополнительное предложение - убедиться, что ваше оборудование на самом деле работает. Паянка на синих таблетках, которые я получил на прошлой неделе, был плохим, а порт USB был нефункциональным на одном из них из-за припоя моста в разъеме.
В этом посте он описывает, как он использовал код, не являющийся Ардино, который позволяет ему создать нативный USB-ключ, который создал 3 серийных устройства TTYACM с использованием кода SatoShinm: ViewTopic.PHP?F = 28&T = 4474#P51935

Fredbox
Вторник 01 января 2019 18:56
Библиотеки USBComposite, которые были обновлены недавно и включены в ядро ​​Роджера, позвольте вам создать серийное устройство USB без особых проблем. Мне не нужно было изменять какие -либо определения платы.#include USBCompositeSerial CompositeSerial; uint32_t counter = 0; void setup() { CompositeSerial.registerComponent(); USBComposite.begin(); delay(2000); } void loop() { CompositeSerial.print("Counter: "); CompositeSerial.print(counter); CompositeSerial.println(" - Hello World!"); counter++; delay(500); }

Рик Кимбалл
Вторник 01 января 2019 г., 19:06
Хороший @fredbox! У вас есть ссылка для библиотеки USBComposite?

Fredbox
Вторник 01 января 2019 г., 19:09
Я отредактировал свой пост, чтобы показать, что вам не нужно скачать что -то особенное - он уже включен в ядро ​​Роджера.

LSMOD
Ср. 02 января 2019 г. 8:34
Спасибо, Рик!
Я наблюдаю за этим замечанием:
[Рик Кимбалл - Вторник 01 января 2019 г. 15:24] - Измените свои доски.текст

Мое предложение:
И я должен прочитать именно то, что сделал Фредфокс - но позже, когда у меня будет время ...

Когда это не сработает, я последую за вашим предложением.

Я дам отзыв ...

LSMOD
Ср. 02 января 2019 16:34
[Рик Кимбалл - Вторник 01 января 2019 г. 15:24] - Похоже, вы думаете, что можете просто взять все со словами STM32, и он будет работать на STM32F103C8 с ядром Роджера? Можете ли вы просто взять вещи, в которых упоминается Atmel и USB и ожидать, что он будет скомпилировать и запустить USB -код ATMEGA32U4, который вы собираетесь запустить на аттину, используя Arduino Core?

Те статьи, которые вы указываете, не имеют ничего общего с ядром Libmaple здесь. Они специально говорят о STM32F4, который полностью отличается от STM32F103, который мы используем.

Я думаю, что проблема здесь заключается в языковом барьере. Я не говорю по -немецки, поэтому я, вероятно, плохо объясняю это.
Хм - я понял, что чувство Arduino имеет одну простую систему разработки, которая способна компилировать кросс -платформу один и тот же код для разных QµC и досок.
Конечно, можно поддержать только оборудование, которое существует, поэтому ATMEGA328 не имеет встроенного интерфейса USB.
STM32 - 32 бит, а не 8 бит, и поэтому должны быть несовместимые различия!
Кроме того - я спрашиваю меня, как я могу получить доступ к шлам или байту на портах для чтения и письма?

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

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

Но теперь вернемся к приключению Arduino USB ...

LSMOD
Ср. 02 января 2019 г., 16:52
[Fredbox - Вторник 01 января 2019 г. 16:58] - Дополнительное предложение - убедиться, что ваше оборудование на самом деле работает. Паянка на синих таблетках, которые я получил на прошлой неделе, был плохим, а порт USB был нефункциональным на одном из них из-за припоя моста в разъеме.
Fredbox убедил меня сначала попробовать загрузчик. ;)

[Рик Кимбалл - Вторник 01 января 2019 г., 17:08] - Весь смысл его поста заключается в том, что он не хочет использовать загрузчик DFU, загруженный DFU, он хочет использовать встроенный ROM Serial USART Bootloader. Однако он все еще хочет использовать Native USB в своем коде Arduino, который не поддерживается, если он не изменяет доски.txt file.
Теперь это больше не весь смысл. :ржу не могу:
Но вы не сказали мне, что это совершенно другая ситуация, когда загрузчик вспыхнул. ;)

О.K. Мигание загрузчика generic_boot20_pc13.Бин работает без проблем.
Соединение доски с USB дает удовлетворенную обратную связь с моим ядром:
[ 1719.972698] usb 1-6.1: new full-speed USB device number 5 using ehci-pci [ 1720.065769] usb 1-6.1: New USB device found, idVendor=1eaf, idProduct=0003 [ 1720.065780] usb 1-6.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1720.065786] usb 1-6.1: Product: Maple 003 [ 1720.065792] usb 1-6.1: Manufacturer: LeafLabs [ 1720.065796] usb 1-6.1: SerialNumber: LLM 003 [ 1721.510966] usb 1-6.1: USB disconnect, device number 5 [ 1721.712357] usb 1-6.1: new full-speed USB device number 6 using ehci-pci [ 1721.806339] usb 1-6.1: New USB device found, idVendor=1eaf, idProduct=0004 [ 1721.806349] usb 1-6.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 1721.806356] usb 1-6.1: Product: Maple [ 1721.806361] usb 1-6.1: Manufacturer: LeafLabs [ 1721.838126] cdc_acm 1-6.1:1.0: ttyACM0: USB ACM device [ 1721.838438] usbcore: registered new interface driver cdc_acm [ 1721.838440] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Рик Кимбалл
Ср. 02 января 2019 г. 16:53
Я собираюсь отметить это решено!

Беннебой
Ср. 02 января 2019 г. 16:56
Ура :ржу не могу:

LSMOD
Ср 02 января 2019 г., 17:10
[Рик Кимбалл - Ср 02 января 2019 г. 16:53] - Я собираюсь отметить это решено!
Не так быстро, мой друг. : mrgreen:
Сначала я должен проверить, могу ли я вывести последовательные данные по USB. ;)

Но спасибо всем!
Я должен отредактировать вики, чтобы оставить пропущенные советы там, если это возможно для меня.

LSMOD
Ср. 02 января 2019 г., 17:22
Это действительно работало только без функциональности загрузчика.
Я установил интерфейс Arduino для метода загрузки: «STM32Duino Bootloader» и попытался скомпилировать и загружать мою программу RTC.

Нет реакции. :плакать:

После сброса зеленый светодиод мигает несколько раз - это все.
Соединение с замазкой в ​​качестве последовательной консоли показывает в бесконечной петле: Поздравляю, вы установили загрузчик STM32Duino Bootloader
Видеть https: // github.com/rogerclarkmelbourne/ ... загрузчик

Для получения дополнительной информации об Arduino на STM32
и http: // www.STM32duino.компонент

LSMOD
Ср. 02 января 2019 г., 17:37
Теперь я знаю, как избавиться от загрузчика: Просто снова пробегайте по серийному интерфейсу UART1.

Так что будет интересно пойти в другую сторону, потому что загрузчик на самом деле не решает мою проблему. : P
[Fredbox - Вторник 01 января 2019 г. 19:09] - Я отредактировал свой пост, чтобы показать, что вам не нужно скачать что -то особенное - он уже включен в ядро ​​Роджера.
В какой папке вы отказались от ядра Роджера, что библиотеки могут быть включены?

Теперь что -то удивительное:

Я только что собрал ваш пример ViewTopic.PHP?F = 28&t = 4474&начало = 30#p52042
с магией #включать <Usbcomposite.час>

И это работает для меня слишком компиляция с байтами 17584 байтов и 3880 байтов ОЗУ.
После установки перемычки назад мое ядро ​​может увидеть [ 6959.078076] usb 1-6.1: new full-speed USB device number 27 using ehci-pci [ 6959.174182] usb 1-6.1: New USB device found, idVendor=1eaf, idProduct=0024 [ 6959.174194] usb 1-6.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 6959.174200] usb 1-6.1: Product: Maple [ 6959.174206] usb 1-6.1: Manufacturer: LeafLabs [ 6959.174811] cdc_acm 1-6.1:1.0: ttyACM0: USB ACM device

Рик Кимбалл
Ср. 02 января 2019 г. 18:19
Вот небольшой образец, который я использовал с композитным последовательным, который обеспечивает разумный подход, позволяющий нативно серийный выход USB без загрузчика и использования серийного загрузчика встроенного ПЗУ:
/* composite_serial - bluepill composite serial device with reset support tested using "Serial" upload method which doesn't configure builtin usb serial This code allows you to leave the BOOT0 pin tied high and toggle the reset button to upload via the USART0 (PA9/PA10) on /dev/ttyUSB0, then connect to /dev/ttyACM0 with putty without having to mess with the BOOT0 pin during development. The USBCompositeSerial object normally doesn't toggle the PA12 pin. This behaviour is bluepill specific. (proper bluepills only have a 1k5 pull up on PA12) */ #include #include USBCompositeSerial SerialUSB; uint32_t counter = 0; void setup() { // toggle USBD+ (PA12 pin) to signal host to // reenumerate our USB device on reset press pinMode(PA12, OUTPUT_OPEN_DRAIN); // use external 1k5 resistor digitalWrite(PA12, LOW); // force low to signal reset delay(50); digitalWrite(PA12, HIGH); // actually floats high, not driven SerialUSB.registerComponent(); USBComposite.begin(); delay(100); } void loop() { // only output data if someone is listening if ( SerialUSB.isConnected() ) { SerialUSB << "Counter: " << counter << " - Hello World!\n"; } counter++; delay(500); }

LSMOD
Ср. 02 января 2019 г. 18:31
Что я сделал неправильно с загрузчиком?
(Может быть, будут некоторые случаи, когда это будет полезны ;) )

Каково действительно преимущество ядра Роджера и как его можно использовать?
(Для USB это не нужно)

Рик Кимбалл
Ср. 02 января 2019 г. 18:33
[LSMOD - Ср 02 января 2019 г., 17:37] - Все было взято с пути ~/.arduino15/packages/STM32duino/Adware/STM32F1/2018.12.3/System/Libmaple !

Так почему все это о ядре Роджера ? : шок:
Мне кажется, что в какой -то момент вы использовали файл "Dan Trown's", чтобы установить ядро ​​Роджера. Который устанавливает «Дан Тушн версию ядра Роджера» в .Справочник Arduino15, и вы должны выбирать доски из этого вместо досок из "Роджера".

Самое простое исправление - выход Arduino IDE, Delet Your ~/.Arduino15 каталог. Это разрушит любые настроенные платы и предпочтения и вернет вас в конфигурацию Arduino по умолчанию. Затем просто следуйте инструкциям для установки ядра Роджера от GitHub. Не измените доски.txt file.

Рик Кимбалл
Ср. 02 января 2019 г. 18:35
[LSMOD - Ср 02 января 2019 г. 18:31] - Что я сделал неправильно с загрузчиком?
(Может быть, будут некоторые случаи, когда это будет полезны ;) )

Каково действительно преимущество ядра Роджера и как его можно использовать?
(Для USB это не нужно)
Версия Dan Down's of Roger's Core - это снимок и изменяет некоторые из файлов конфигурации.

Если вы установите из GitHub, вы получите последнюю версию «Core Roger's Core» и, чтобы обновить его, вы только что выходите из каталогов Arduino IDE на ~/arduino/hardware/arduino_stm32 и сделать «git ull», чтобы захватить последние изменения.

LSMOD
Ср. 02 января 2019 г. 18:40
[Рик Кимбалл - Ср. 02 января 2019 г. 18:33] - Мне кажется, что в какой -то момент вы использовали файл "Dan Trown's", чтобы установить ядро ​​Роджера. Который устанавливает «Дан Тушн версию ядра Роджера» в .Справочник Arduino15, и вы должны выбирать доски из этого вместо досок из "Роджера".

Самое простое исправление - выход Arduino IDE, Delet Your ~/.Arduino15 каталог. Это разрушит любые настроенные платы и предпочтения и вернет вас в конфигурацию Arduino по умолчанию. Затем просто следуйте инструкциям для установки ядра Роджера от GitHub. Не измените доски.txt file.
Нет - я не верю в это.
Насколько я помню, есть тот же URL в описании установки для ядра Роджера http: // dan.тонуть.org/stm32duino/package ... индекс.json
Что касается STM32duino с STM32F1.

Да - конечно все в начале, когда я удаляю .Arduino15 каталог.
Но, как вы можете видеть, это не способ решить проблемы с USB. ;)

USB -мигание с загрузчиком не имеет приоритета - я буду искать его в другой раз ...

Рик Кимбалл
Ср. 02 января 2019 г. 18:44
[LSMOD - Ср 02 января 2019 г. 18:40] - Нет - я не верю в это.
Насколько я помню, есть тот же URL в описании установки для ядра Роджера http: // dan.тонуть.org/stm32duino/package ... индекс.json
Что касается STM32duino с STM32F1.
Ядро Роджера не имеет менеджера по доскам .файл json. Единственный способ установить это вручную. Это никогда не окажется в .Arduino15. Он предназначен для установки в $ home/arduino/hardware/arduino_stm32

Рик Кимбалл
Ср. 02 января 2019 г., 19:18
Я только что добавил Дэна Уторону .файл JSON в мои предпочтения Arduino (http: // dan.тонуть.org/stm32duino/package ... индекс.json) Использование менеджера Arduino Правления он устанавливает версию Dan's Roger's Core в $ home/.Arduino15/Packages/STM32DUINO/ADHAWARE/STM32F1/2018.12.3.

Когда я смотрю на меню «Инструменты» после установки, я вижу два набора идентичных плат STM32F1 (STM32Duino.com) ". Один использует ядро ​​Дэна из .Arduno15, а другой использует $ home/arduino/hardware/arduino_stm32.

LSMOD
Чт, 03 января 2019 10:42
[Рик Кимбалл - Ср. 02 января 2019 г., 19:18] - Он устанавливает версию Dan's of Roger's Core в $ home/.Arduino15/Packages/STM32DUINO/ADHAWARE/STM32F1/2018.12.3.
Когда установка STM32Duino будет косвенной версией ядра Роджера, у нас есть объяснение, почему ядро ​​Роджера не должно быть установлено. ;)

По крайней мере, функциональность USB может быть добавлена ​​как обычно, как библиотека через «#include <Usbcomposite.час>".
Но это не может быть найдено в документации до сих пор.

Стивестронг
Чт, 03 января 2019 г., 16:33
[Стивестронг - Сб 29 декабря 2018 г. 20:38] - http: // wiki.STM32duino.com/index.PHP?title = установка
Под ссылкой вы были предупреждены о том, что метод установки пакета Manager Manager Package устарел и не поддерживается этим форумом.

Fredbox
Чт, 03 января 2019 г., 17:11
Но это не может быть найдено в документации до сих пор.Если вам нужно что -то, что имеет хорошую документацию, я предлагаю вам взять копию книги «Начало STM32» Уоррена Гея. Эта книга написана для синей таблетки, но не использует Arduino или любое из ядер или библиотеки, найденных на этом форуме. Если у вас есть учетная запись Safari Books, вы можете прочитать ее там. Google Books имеет некоторые из них: https: // книги.Google.com/книги?id = uyted ... &Q&f = false

Mrburnette
Пт, 04 января 2019 3:39
Не нужно покупать книгу, если вы не ищете информацию Arduino-ish:
Обнаружение микроконтроллера STM32
https: // www.Google.com/url?SA = T&источник = ... n/книга.PDF

LSMOD
Пт, 04 января 2019 12:32
Спасибо за рекомендации книги!

Вот файлы для книги от Уоррена Гей:
https: // github.com/apress/beg-stm32-dev ... pencm3-gcc


[Стивестронг - Чт, 03 января 2019 г., 16:33] - Под ссылкой вы были предупреждены о том, что метод установки пакета Manager Manager Package устарел и не поддерживается этим форумом.
Нет необходимости в предупреждениях.
Проблема была решена в рамках моих ожиданий - сейчас все в порядке! : D

Fredbox
Пт, 04 января 2019 22:46
Вот еще одно руководство: https: // www.hitex.com/fileadmin/documen ... 8d-scr.PDF

LSMOD
Солнце 06 января 2019 10:40
Мне нравится книга от Уоррена Гея, чтобы понять некоторые основные вещи.
В основном он пишет, для чего мне действительно интересно, и указывает на основные факты.

Но это проблема, которую он использует примеры, которые основаны на Freertos и Libopencm3,
Но STM32Duino основывает на Leaflabs Основанный ядро ViewTopic.PHP?f = 2&t = 3111.

Это действительно раздражает и очень непрактично.
Вы читаете о хорошем примере, понимаете это, но вы не можете использовать его в STM32Duino. :(
Тогда вам нужно искать рабочий пример для STM32Duino и должен снова понять.
Регулярный завод, вы не найдете аналогичного примера, и вы стоите там разочарованы без решения ...

Как можно решить эту проблему?
Это единственное решение, чтобы сбросить STM32Duino и идти без Arduino?
(Та же идея в середине 2016 года https: // www.STM32duino.com/viewtopic.PHP?t = 1218)

Как я писал, я вижу основное преимущество Arduino для использования существующих библиотек для внешних компонентов, таких как датчики, дисплеи и т. Д.
Но в вики я не нашел никаких положительных отзывов об этом https: // wiki.STM32duino.com/index.PHP?Т ... : Библиотеки ?


(Может быть, это должно быть перенесено на общую дискуссию?)

Стивестронг
Солнце 06 января 2019 14:00
[LSMOD - Пт, 04 января 2019 12:32] - Проблема была решена в рамках моих ожиданий - сейчас все в порядке! : D
Если решить, то оставьте это таким образом.
Откройте новую тему для любого другого вопроса.

Рик Кимбалл
Солнце 06 января 2019 14:01
Долгое время, пока эта нить оставалась на теме. Если вы хотите поговорить о книгах и документации, начните другую тему. Я запер эту тему.
[LSMOD - Чт, 03 января 2019 10:42] - По крайней мере, функциональность USB может быть добавлена ​​как обычно, как библиотека через «#include <Usbcomposite.час>".
Но это не может быть найдено в документации до сих пор.
Чтобы ответить на ваш первоначальный вопрос, причина, по которой библиотека USBComposite не задокументирована в ядре, заключается в том, что это недавно включенная библиотека пользователей. Пользовательские библиотеки обычно не упакованы с ядрами, однако arduino_stm32 - это не обычное :) Пользовательские библиотеки обычно рождаются из записи в блоге или сообщений на форуме. Пользовательские библиотеки обычно предоставляют большую часть своей документации с примерами.

Эта библиотека следует по этому пути:

Видеть: ViewTopic.PHP?f = 13&t = 2926&hilit = usbcomposite
Видеть: https: // github.com/rogerclarkmelbourne/ ... E/Примеры

Пинота с функциями

STM к ESP 8266