STM32F04 в режиме DFU распознается только при питании от батареи (Win10)

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

Для этого я отсоединяю аккумулятор, подтягиваю BOOT0 к VCC, а затем подключаю устройство к порту USB3 ПК (USB2 недоступен). Устройство не распознается и показывает VID: 0000 PID: 0002 (случай I)

Однако когда я сначала подключаю аккумулятор, а потом подключаю устройство к ПК, он распознается без суеты (случай II).

Проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы инициировать переход к программе загрузчика с помощью команды в программном обеспечении, но тогда я достигаю того же состояния, что и в случае I.

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

РЕДАКТИРОВАТЬ: Я обнаружил проблему, когда реализовал программный переход к загрузчику. Казалось, что он вообще не работает (исчезло устройство VCP, и появилось ошибочное ‹> устройство в системе PID: 0002 VID: 0000). Я хотел войти в загрузчик, потянув вверх пин BOOT0, но увидел, что добился успеха только при отключении и включении питания от батареи. Цикл питания USB привел к тому же устройству «отказавший дескриптор».

Я подозреваю, что при включении через USB загрузчик имеет проблемы с коммуникацией и не может установить правильные PID и VID. При питании от аккумулятора - этой проблемы нет.


person mradziwo    schedule 25.09.2018    source источник


Ответы (1)


У вас есть доска для открытий?

Я прочитал в Справочном руководстве STM32F042x4 / x6 (DocID025832 Rev 5):

В STM32F042x4 / x6 встроено полноскоростное периферийное устройство USB, соответствующее спецификации USB версии 2.0.

(часть 3.19, с.27).

В AN2606 (Rev 33) таблица показывает конфигурацию USB, которая используется DFU Bottolader в USB FS (полноскоростной):

введите здесь описание изображения

Я предполагаю, что USB в загрузчике - это 2.0, но USB 3.0 должен быть совместим с USB 2.0. Таким образом, можно использовать порт USB 3.0.

Я предлагаю вам использовать Демо-версия DfUSe от ST. Его интерфейс состоит из вкладки, на которой при обнаружении отображаются доступные устройства DFU. Я пробую его на другом STM32x, выполнив следующие действия:

  • Откройте программу DfuSe Demo.
  • Подключите BOOT0 к Vdd, чтобы перевести микроконтроллер в режим DFU.
  • Подключите USER USB к порту вашего компьютера.
  • Имя вашего устройства должно появиться в поле «Доступные устройства DFU».

Вы также можете попробовать использовать PA11 и PA12 напрямую (согласно Таблице 12) вместо USB-порта вашей платы.

РЕДАКТИРОВАТЬ:
Еще одно решение для обновления прошивки без запуска boot0 - это перейти непосредственно в загрузчик DFU ST внутри вашей прошивки. В противном случае вы можете создать свой собственный загрузчик IAP (программирование в приложении).

Надеюсь, это поможет.

person Hugo Bevilacqua    schedule 26.09.2018
comment
Спасибо Хьюго за ваш вклад! К сожалению, на данный момент у меня нет доступной доски для открытий. У меня проблема в том, что я не могу получить устройство в режиме DFU, распознаваемое ПК, если единственный источник питания - от USB ПК. Если я отключу устройство от ПК и - person mradziwo; 26.09.2018
comment
Если я отключаю устройство от ПК, отсоединяю аккумулятор, вытаскиваю загрузочный штифт и правильно подключаюсь к ПК - ПК не распознает устройство в режиме DF. - person mradziwo; 26.09.2018
comment
Однако, когда я впервые подключаю аккумулятор (отсюда и запускаю загрузчик, но компьютер еще не подключен), а затем подключаюсь к ПК - у меня нет проблем с распознаванием устройства компьютером. - person mradziwo; 26.09.2018
comment
Это своего рода облом, потому что я хочу сделать относительно небольшое носимое устройство - и я не могу тратить много места, чтобы иметь переключатель для отключения батареи для выполнения обновления. - person mradziwo; 26.09.2018
comment
То же самое с моей стороны :) Еще раз спасибо за ваш вклад! - person mradziwo; 27.09.2018