STM32F302: проблема с DFU

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Держит паяльник хвостом
Аватара пользователя
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Сообщение gauss »

Привет, форумчане!
Приобрел контроллеры STM32F302K8 для своих поделок. Одной из причин выбора было наличие встроенного
USB DFU загрузчика - привлекала возможность работать с МК без программатора.

Схема подключения МК следующая:

Изображение

Но вот незадача - МК напрочь отказывается обнаруживаться как STM Device in DFU Mode, да и вообще
ПК никак не реагирует на подключение!

Попробовал подоткнуться ST-Link'ом - проц обнаруживается. Залил блинк с частотой 1с - работает. Затактировал от кварца - кварц работает.
Подтягивающий резистор на D+ подключал как к 3.3, так и к 5 вольтам - разницы никакой. Нижний пад (корпус QFN) к земле припаян. Все
контакты проверил неоднократно. BOOT0 естественно подтянут к "1".

В чем может быть проблема, куда еще копнуть? :dont_know:

Попробовал залить Custom HID USB Device... При BOOT0=0 находит в диспетчере устройств, показывает в HID-устройствах,
корректно отображает VID и PID.
Но стоит поставить BOOT0=1, как тишина... Никакой реакции, в диспетчере устройств тоже
:idea:
Реклама
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Сообщение Galizin »

Подтяжка должна быть к3.3
Попробуйте напрямую boot0 к 3.3
Последний раз редактировалось Galizin Чт окт 12, 2017 23:53:20, всего редактировалось 2 раза.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Проверь еще значение nBOOT1 в user option byte, если оно поменялось на 0, то будет пытаться стартовать из SRAM.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Сообщение gauss »

Переставил подтяжку на 3.3, BOOT0 тоже теперь подтягиваю напрямую.
nBOOT1 проверил, единица. А результат все тот же - его отсутствие...

Update: почитал даташит, нашел интересную вещь:
For STM32 devices embedding bootloader using the DFU/CAN interface in which the external clock source (HSE) is required for DFU/CAN operations, the detection of the HSE value is done dynamically by the bootloader firmware and is based on the internal oscillator clock (HSI, MSI).
Thus, when due to temperature or other conditions, the internal oscillator precision is altered above the tolerance band (1% around the theoretical value), the bootloader might calculate a wrong HSE frequency value.
In this case, the bootloader DFU/CAN interfaces might dysfunction or might not work at all.
Как я понял отсюда, частота кварца определяется автоматически, но так как внутренний источник может
быть неточным, кварц будет определен неверно, и ничего не стартанет. :o Как вариант - поставить кварц на другую частоту (например, 12 МГц)

Схема подключения к USB задана следующая:
Изображение

Грубо - смотрите конкретную спецификацию, нужен ли резистор для Вашего МК.
Поправьте, если неправ, но ведь можно и напрямую резистор к 3.3В кинуть, совсем необязательно делать через транзистор?
:idea:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="gauss",url="/forum/viewtopic.php?p=3205399#p3205399"]Поправьте, если неправ, но ведь можно и напрямую резистор к 3.3В кинуть, совсем необязательно делать через транзистор?[/uquote]
Можно.
Поставь еще конденсатор 100nf на сброс и землю. И проверь работает ли бутлоадер по USART. VBAT тоже не мешало бы подключить, вряд ли в нем дело, но мало ли...
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Сообщение gauss »

VBAT'a в QFN корпусе нет в принципе, так что едва ли
Конденсатор поставил, ничего не изменилось

Попробую кварц другой использовать и UART.

Update: когда поменял кварц на 12 МГЦ, начал правильно обнаруживаться (STM Device in DFU Mode), но почему-то через раз :o
Все-таки грешу на эту "систему автоопределения частоты кварца", из-за которой он и стартует через раз

Update2: дело оказалось в старых (на 12пФ) конденсаторах, которые ставил к кварцу на 8МГц :facepalm:
Поменял на 18пФ - определяется без проблем.

Обидно, что срабатывание на пустой флеш (как у F042) работает либо в "маленьких" L (где маленькие частоты),
либо в больших (где слишком много выводов). Не понимаю, почему ST не сделали такой паттерн на большем числе контроллеров
:idea:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

О каком "срабатывании на пустой Флэш" речь?
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

dosikus писал(а):О каком "срабатывании
По всей видимости имелось в виду это
Empty check
On STM32F04x and STM32F09x devices only, internal empty check flag is implemented to
allow easy programming of the virgin devices by the boot loader. This flag is used when
BOOT0 pin is defining Main Flash memory as the target boot space. When the flag is set,
the device is considered as empty and System memory (boot loader) is selected instead of
the Main Flash as a boot space to allow user to program the Flash memory.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Сообщение gauss »

uk8amk, именно!
Согласитесь, фича классная. Заводской загрузчик - свой загрузчик - твори что угодно. А так либо программатор, либо перемычка :(
:idea:
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

А перемычка это так трудно ...
Держит паяльник хвостом
Аватара пользователя
Сообщения: 920
Зарегистрирован: Сб янв 16, 2010 15:34:57
Откуда: Sevsk/Moscow

Сообщение gauss »

Для серийного устройства да, нужно элегантное решение
:idea:
Ответить

Вернуться в «ARM»