STM32F103C8T6 нуждается в помощи с водителями

петрональ
Пн 22 августа 2016 12:32
Привет,

Я новичок на этом форуме и совершенно новичок в Arduino.

Я принес STM32F103C8T6 («синяя таблетка» с желтыми заголовками/булавками).
Подключив его к USB, он содержит светодиод, но USB не распознается. В Windows 8 я получаю желтую отметку на диспетчере устройств с ошибкой:
Windows has stopped this device because it has reported problems. (Code 43) A request for the USB device descriptor failed.

петрональ
Пн 22 августа 2016 г. 15:37
На Любунту я получаю это от DMESG:
[22329.016155] usb 6-2: new full-speed USB device number 2 using uhci_hcd [22329.136129] usb 6-2: device descriptor read/64, error -71 [22329.360163] usb 6-2: device descriptor read/64, error -71 [22329.780160] usb 6-2: new full-speed USB device number 3 using uhci_hcd [22329.900143] usb 6-2: device descriptor read/64, error -71 [22330.124160] usb 6-2: device descriptor read/64, error -71 [22330.340124] usb 6-2: new full-speed USB device number 4 using uhci_hcd [22330.752130] usb 6-2: device not accepting address 4, error -71 [22330.864152] usb 6-2: new full-speed USB device number 5 using uhci_hcd [22331.280162] usb 6-2: device not accepting address 5, error -71 [22331.280259] hub 6-0:1.0: unable to enumerate USB device on port 2

Эдогальдо
Пн 22 августа 2016 г. 16:41
Привет @petronel, чтобы использовать USB с устройствами F103, среди драйверов USB, вам нужна установленная соответствующая прошивка.
Основной вариант - установить загрузчик STM32Duino; Для синих таблеток, я думаю, вы должны использовать этот файл: https: // github.com/rogerclarkmelbourne/ ... 0_PC13.бин
Вы можете установить его либо через ST-Link, либо через USBTOSERIAL ADAPTER.
После установки загрузчика, компьютер должен быть в состоянии распознать вашу синюю таблетку в качестве устройства DFU, а затем вы можете загрузить свои наброски.
После загрузки эскиз, ваш компьютер сможет также распознать вашу синюю таблетку в качестве устройства Com.
Поиск на форуме для получения дополнительной информации.

Лучший, e.

Fredbox
Пн 22 августа 2016 г., 19:02
Общие доски, как полученные.

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

Testato
Вторник 30 августа 2016 г., 21:23
Вы также можете использовать STM32Flasher только для удаления защиты вспышки, а после использования стандартного метода для загрузки DFU_BOUTLOADER

петрональ
Ср. 09 ноября 2016 г., 19:29
Я получил USB для серийного CH340.
Использование STM32Flash Я могу написать generic_boot20_pc13.бин C:\Users\Petronel\Downloads\stm32flash-0.5-win64>stm32flash.exe -w ..\generic_boot20_pc13.bin COM9 stm32flash 0.5 http://stm32flash.sourceforge.net/ Using Parser : Raw BINARY Interface serial_w32: 57600 8E1 Version : 0x22 Option 1 : 0x00 Option 2 : 0x00 Device ID : 0x0410 (STM32F10xxx Medium-density) - RAM : 20KiB (512b reserved by bootloader) - Flash : 128KiB (size first sector: 4x1024) - Option RAM : 16b - System RAM : 2KiB Write to memory Erasing memory Wrote address 0x08010000 (100.00%) Done.

петрональ
Ср. 09 ноября 2016 г., 19:30
Загрузка эскиза с помощью USB-Serial Получите этот результат: stm32flash 0.4 http://stm32flash.googlecode.com/ Using Parser : Raw BINARY Interface serial_w32: 230400 8E1 Version : 0x22 Option 1 : 0x00 Option 2 : 0x00 Device ID : 0x0410 (Medium-density) - RAM : 20KiB (512b reserved by bootloader) - Flash : 128KiB (sector size: 4x1024) - Option RAM : 16b - System RAM : 2KiB Write to memory Erasing memory Wrote address 0x08000100 (3.40%) Wrote address 0x08000200 (6.80%) Wrote address 0x08000300 (10.20%) Wrote address 0x08000400 (13.60%) Wrote address 0x08000500 (16.99%) Wrote address 0x08000600 (20.39%) Wrote address 0x08000700 (23.79%) Wrote address 0x08000800 (27.19%) Wrote address 0x08000900 (30.59%) Wrote address 0x08000a00 (33.99%) Wrote address 0x08000b00 (37.39%) Wrote address 0x08000c00 (40.79%) Wrote address 0x08000d00 (44.18%) Wrote address 0x08000e00 (47.58%) Wrote address 0x08000f00 (50.98%) Wrote address 0x08001000 (54.38%) Wrote address 0x08001100 (57.78%) Wrote address 0x08001200 (61.18%) Wrote address 0x08001300 (64.58%) Wrote address 0x08001400 (67.98%) Wrote address 0x08001500 (71.38%) Wrote address 0x08001600 (74.77%) Wrote address 0x08001700 (78.17%) Wrote address 0x08001800 (81.57%) Wrote address 0x08001900 (84.97%) Wrote address 0x08001a00 (88.37%) Wrote address 0x08001b00 (91.77%) Wrote address 0x08001c00 (95.17%) Wrote address 0x08001d00 (98.57%) Wrote address 0x08001d6c (100.00%) Done. Starting execution at address 0x08000000... done.

Rogerclark
Ср. 09 ноября 2016 г., 19:47
Светодиодная вспышка?

Вы увидите только устройство Libusb . Не последовательное устройство после того, как загрузчик сначала работает, серийный USB -код находится в эскизе, загрузчик только содержит устройство DFU.

Вам также нужно загрузить драйверы Windows (при условии, что вы запускаете Windows) . Пожалуйста, прочитайте FAQ в разделе «Приемом / часто задаваемые вопросы»

Стивестронг
Ср. 09 ноября 2016 г., 19:53
@petronel,
Я думаю, ты сказал, что светодиод не мигает.
Для этого, пожалуйста, проверьте, какой PIN -код назначен светодиод в вашем эскизе. Светодиодный штифт должен быть определен как:
#define LED_PIN PC13
Пожалуйста, используйте нотацию «PC13», а не только числа (13).

Пока вы получаете «Hello World» на своем серийном мониторе, это означает, что серийное общение работает.

Rogerclark
Ср. 09 ноября 2016 г., 20:03
Хорошо.

Многие люди думают, что загрузчик не работает, потому что у них нет последовательного USB -устройства после его первой установки.

Я должен объединить эскиз «мигание и счет» с загрузчиком, тогда все будут менее запутанными. ;-)

Возможно, у OP есть аппаратная ошибка на USB. Поскольку синие таблетки часто имеют разбитые соединения с контактами с данными USB.

У меня есть 2 синие таблетки, но сейчас ни работа, так как USB -соединения сломались, и его трудно ремонтировать без подключения внешнего USB

петрональ
Ср. 09 ноября 2016 г., 8:26 вечера
#define pinLED PC13 void setup() { Serial.begin(9600); Serial.println("start"); } void loop() { digitalWrite(pinLED, HIGH); delay(500); digitalWrite(pinLED, LOW); Serial.println("Hello World2"); delay(100); }

Стивестронг
Ср. 09 ноября 2016 г., 8:35 вечера
Конечно, это не мигает, потому что вы забыли установить режим PIN.

Вставьте в настройку () следующую строку:
pinMode(pinLED, OUTPUT);

петрональ
Ср. 09 ноября 2016 г., 20:43
: oops: забыл об этом. СПАСИБО !!!

Теперь я заметил, что макрос F не работает Serial.println(F("test"));

Rogerclark
Ср. 09 ноября 2016 г., 21:01
Ммм

Я не уверен, почему F -макрос больше не работает.

Но я согласен, что теперь это рухнет, если я попытаюсь его использовать


На самом деле, макрос F вообще не нужен для Arm Dev и должен быть удален везде, где это возможно

Похоже, F определяется в WSTRING.час
#define F(string_literal) (reinterpret_cast(PSTR(string_literal)))

петрональ
Ср. 09 ноября 2016 г., 21:19
Удаление всего F () из этой библиотеки RFID может быть болью.
#define F(x) x

Стивестронг
Ср. 09 ноября 2016 г., 21:39
И где вы устанавливаете фиш? SPI.beginTransaction(CHIP_SEL, SPISettings(SPI_CLOCK_DIV4, MSBFIRST, SPI_MODE0));

петрональ
Ср. 09 ноября 2016 г., 22:09
В моем эскизе у меня есть #define RST_PIN PA0 // Configurable, see typical pin layout above #define SS_PIN PA1 // Configurable, see typical pin layout above MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

петрональ
Ср. 09 ноября 2016 г., 22:57
У меня только что "доми!!"Момент. : oops:

Нашел мою проблему с загрузчиком:
Я использовал демонстратор Flash Loader, и вместо «загрузки на устройство» я использовал «Загрузка с устройства», вероятно, не читал в / из.
Итак, я перезаписываю genic_boot_pc13.корзин с тем, который был на устройстве :рулон:

Теперь я вижу DFU, я загружаю свой эскиз, и после его сброса я получаю сериал Maple.

Rogerclark
Ср. 09 ноября 2016 г., 11:32
:ржу не могу:

Я согласен. Используемая терминология сбивает с толку.

петрональ
Ср. 09 ноября 2016 г., 11:52
Наверное я ожидал скачивания от и загрузить к .. Это имеет больше смысла для меня.

Сейчас у меня есть еще 2 вопроса:

1. После загрузки эскиза и сброса STM32, серийное соединение падает на секунду, и я должен закрыть/открыть серийный монитор. Это нормально ?

2. Загрузка эскиза, который компилируется в OK, но сбой при запуске (например, мой тест с RFID), заставьте DFU / COM исчезнуть и получить снова «неизвестное устройство». Я все еще могу сбросить STM32 и загрузить рабочий набросок.

Rogerclark
Чт 10 ноября 2016 г. 12:06
Петронель написал:Наверное я ожидал скачивания от и загрузить к .. Это имеет больше смысла для меня.

Сейчас у меня есть еще 2 вопроса:

1. После загрузки эскиза и сброса STM32, серийное соединение падает на секунду, и я должен закрыть/открыть серийный монитор. Это нормально ?

2. Загрузка эскиза, который компилируется в OK, но сбой при запуске (например, мой тест с RFID), заставьте DFU / COM исчезнуть и получить снова «неизвестное устройство». Я все еще могу сбросить STM32 и загрузить рабочий набросок.

петрональ
Чт 10 ноября 2016 г., 12:31
Есть ли способ выяснить, что разбивает мой эскиз ?

Попытка использовать RFID RC522 с моим STM32F103.

Rogerclark
Чт 10 ноября 2016 г. 12:49
Если у вас есть аппаратное обеспечение от Debugger Debugger SWD, вы можете получить GDB, чтобы рассказать вам, где оно разбито, иначе вам нужно просто добавить код в строке по очереди и продолжать пробовать вещи, и посмотреть, какая вы добавляете или какую функцию вы называете это Заставляет это разбиться.

петрональ
Чт 10 ноября 2016 г., 6:41
У меня нет отладчика SWD. Может я должен получить один. Любые рекомендации?

Rogerclark
Чт 10 ноября 2016 г. 8:35 утра
Вы можете сделать одну из другой синей таблетки, прошивая к нему с Blackmagic Desrod (см. Блэкмагическую нить зонда)

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

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

В противном случае вам нужно использовать плагин Eclipse + The Arduino, чтобы получить хороший пользовательский интерфейс для отладки.

Наверное, проще просто прокомментировать код и использовать серийный.Печать, чтобы решить, что идет не так

Racemaniac
Чт 10 ноября 2016 г., 9:19
Rogerclark написал:Вы можете сделать одну из другой синей таблетки, прошивая к нему с Blackmagic Desrod (см. Блэкмагическую нить зонда)

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

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

В противном случае вам нужно использовать плагин Eclipse + The Arduino, чтобы получить хороший пользовательский интерфейс для отладки.

Наверное, проще просто прокомментировать код и использовать серийный.Печать, чтобы решить, что идет не так

петрональ
Чт 10 ноября 2016 г., 9:40
Rogerclark написал: Наверное, проще просто прокомментировать код и использовать серийный.Печать, чтобы решить, что идет не так

Rogerclark
Чт 10 ноября 2016 г., 9:45
@racemaniac

Я думаю, что Master Blackmagic Repo теперь имеет хорошую поддержку для NRF51, но я думаю, что когда Рик взял свою оригинальную вилку BMP, поддержка NRF51 была минимальной

Хотя у меня все еще есть моя модифицированная вилка BMP на основе Ricks Fork + мои изменения для NRF51, я сейчас пытаюсь перейти обратно в официальное мастер -репо от Blacksphere, поскольку его множество коммитов и исправления ошибок впереди моей вилки (а также также впереди Рикс Форк)

Проблема в том, что я не могу просто слиться из Мастера кузнечика, так как структура API кода «платформы» изменилась.

Поэтому мой долгосрочный план - переделать версию Рика для BluePill и отправить пиар, чтобы добавить его в Master Repo Blacksphere

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

Мы могли бы добавить страницу вики для текущего состояния игры, в основном ссылаясь на репо Рик для использования на STM32, мы всегда можем обновить ее, когда я наконец-то приступил к повторному образованию версии платформы Bluepill и т. Д

Rogerclark
Чт 10 ноября 2016 г., 9:49
Петронель написал:Rogerclark написал: Наверное, проще просто прокомментировать код и использовать серийный.Печать, чтобы решить, что идет не так

Стивестронг
Чт 10 ноября 2016 г. 13:19
@petronel,
Где SPI.begintransaction () называется? В пределах MFRC522 :: PCD_INIT ()? Я не вижу, где. Или вы называете это отдельно?

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