LINUX.ORG.RU

Не опознаётся STM32 BluePill

 ,


0

1

Заказал с озона микроконтроллер STM32F103C8T6 и к нему программатор ST-Link V2. Прошло дней 8, таки решился распаковать. Снимать распаковку уже бесполезно, ибо возвращать товар уже поздно. Распаковал сначала программатор. Определился так:

[ноя21 13:30] usb 1-5: new full-speed USB device number 44 using xhci_hcd
[  +0,306016] usb 1-5: New USB device found, idVendor=0483, idProduct=3748, bcdDevice= 1.00
[  +0,000006] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  +0,000002] usb 1-5: Product: STM32 STLink
[  +0,000001] usb 1-5: Manufacturer: STMicroelectronics
[  +0,000002] usb 1-5: SerialNumber: µ[Z\x1a
[ +18,470876] usb 1-5: USB disconnect, device number 44
[ноя21 13:34] usb 1-5: new full-speed USB device number 45 using xhci_hcd
[  +0,303544] usb 1-5: New USB device found, idVendor=0483, idProduct=3748, bcdDevice= 1.00
[  +0,000005] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  +0,000002] usb 1-5: Product: STM32 STLink
[  +0,000001] usb 1-5: Manufacturer: STMicroelectronics
[  +0,000001] usb 1-5: SerialNumber: µ[Z\x1a

Шикарно! Не знаю, должен ли он эмулировать dev/ttyUSBS0, но, видимо, не должен. Теперь подключаю микроконтроллер:

[ноя21 14:21] usb 1-5: new full-speed USB device number 46 using xhci_hcd
[  +0,255006] usb 1-5: new full-speed USB device number 47 using xhci_hcd
[  +0,141061] usb 1-5: device descriptor read/64, error -71
[  +0,695298] usb usb1-port5: attempt power cycle
[  +0,589664] usb 1-5: new full-speed USB device number 48 using xhci_hcd
[  +0,000405] usb 1-5: Device not responding to setup address.
[  +0,205235] usb 1-5: Device not responding to setup address.
[  +0,207596] usb 1-5: device not accepting address 48, error -71
[  +0,000114] usb 1-5: WARN: invalid context state for evaluate context command.
[  +0,113666] usb 1-5: new full-speed USB device number 49 using xhci_hcd
[  +0,000406] usb 1-5: Device not responding to setup address.
[  +0,206251] usb 1-5: Device not responding to setup address.
[  +0,207611] usb 1-5: device not accepting address 49, error -71
[  +0,000100] usb 1-5: WARN: invalid context state for evaluate context command.
[  +0,002263] usb usb1-port5: unable to enumerate USB device
[  +6,363378] usb 1-5: new full-speed USB device number 50 using xhci_hcd
[  +0,140077] usb 1-5: device descriptor read/64, error -71
[  +0,216012] usb 1-5: device descriptor read/64, error -71
[  +0,215928] usb 1-5: new low-speed USB device number 51 using xhci_hcd
[  +0,141039] usb 1-5: device descriptor read/64, error -71
[  +0,221647] usb usb1-port5: attempt power cycle

Здорово… Подключаю не в хаб, а в порт на корпусе - тоже самое. Подключаю другим Micro USB - тоже самое. При этом, не важно, чем будет подключён МК(через USB или через ST-Link), в режиме Boot, у него постоянно, очень быстро, мигает зелёный светодиод PC13. Повторная попытка определить USB-устройство происходит тогда, когда на контроллере, заранее подключённом по USB, будет нажат RESET.

В тырнете ничего не нашёл про это поведение. Это норма? Его нужно чем-то прошить по UART/ST-Link, чтобы он определился в USB?


Ответ на: комментарий от u5er

Сейчас свой блю пил попробовал ради интереса:

[25555.152309] usb 1-10.3.1.2: new full-speed USB device number 10 using xhci_hcd
[25555.227346] usb 1-10.3.1.2: device descriptor read/64, error -32
[25555.408361] usb 1-10.3.1.2: device descriptor read/64, error -32
[25555.584311] usb 1-10.3.1.2: new full-speed USB device number 11 using xhci_hcd
[25555.659367] usb 1-10.3.1.2: device descriptor read/64, error -32
[25555.840362] usb 1-10.3.1.2: device descriptor read/64, error -32
[25555.941529] usb 1-10.3.1-port2: attempt power cycle
[25556.544342] usb 1-10.3.1.2: new full-speed USB device number 12 using xhci_hcd
[25556.544471] usb 1-10.3.1.2: Device not responding to setup address.
[25556.749502] usb 1-10.3.1.2: Device not responding to setup address.
[25556.957390] usb 1-10.3.1.2: device not accepting address 12, error -71
[25556.957545] usb 1-10.3.1.2: WARN: invalid context state for evaluate context command.
[25557.032363] usb 1-10.3.1.2: new full-speed USB device number 13 using xhci_hcd
[25557.032516] usb 1-10.3.1.2: Device not responding to setup address.
[25557.237477] usb 1-10.3.1.2: Device not responding to setup address.
[25557.445346] usb 1-10.3.1.2: device not accepting address 13, error -71
[25557.445589] usb 1-10.3.1.2: WARN: invalid context state for evaluate context command.
[25557.445653] usb 1-10.3.1-port2: unable to enumerate USB device

Хотя сам контроллер 100% исправен - на нём зашита моя мигалка светодиодом, который мигает. Так что я уверен, что дело в отсутствии настройки юсб контроллера со стороны прошивки.

u5er ★★★
()

Так ты прошивку напиши чтобы работала с USB и будет определяться. С завода там просто мигалка диодом.

И вообще не факт, что там USB разведен нормально. Воспринимай его как источник питания.

anonymous
()
Ответ на: комментарий от u5er

Видимо так и есть. Подключил плату через ST-Link и прошил её из-под Arduino IDE. Проблема с USB не устранилась, но скорость мигания менять можно, значит плата живая.

Tyse_EX
() автор топика

Я не очень понял как ты подрубаешь микроконтроллер?

Найти пины нужные справился?

Даташит и схематик на блюпил скачал?

Там 4 проводка надо соеденить, 2 из которых земля и питаловло

Не уверен что в заводской прошивке есть бутлоадер

nikitalol ★★
()
Последнее исправление: nikitalol (всего исправлений: 1)
Ответ на: комментарий от nikitalol

Я не очень понял как ты подрубаешь микроконтроллер?

Чисто во вход micro USB самой платы МК

Найти пины нужные справился?

Для UART - да. Для ST-Link тоже

Даташит и схематик на блюпил скачал?

Уже есть, но зачем..? Кроме как отличать контакты, совместимые с 5V, смысла в даташите я пока не вижу.

Там 4 проводка надо соеденить, 2 из которых земля и питалово

Уже

Не уверен что в заводской прошивке есть бутлоадер

Видимо, какой-то был. Из-под Arduino IDE плата смогла прожевать программу для мигалки

Tyse_EX
() автор топика

Ребят, за что столько фэйспалмов? Я в жизни никогда не видел, чтобы новые, только что купленные МК, что-то делали. Как и моя Uno, я ожидал, что МК вообще ничего не будет делать, кроме как показывать, что на него подалось питание

Tyse_EX
() автор топика
Ответ на: комментарий от Tyse_EX

STM - не ардуина. На ней нет прошивки, которая через USB что-то делает. По умолчанию она с USB только питание умеет брать, там напрямую к пинам проход.

К программатору она подключается через пины на жопе (относительно USB-выхода). Так что на компе она никак не должна корректно определяться.

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

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

nikitalol ★★
()
Последнее исправление: nikitalol (всего исправлений: 2)
Ответ на: комментарий от Tyse_EX

Фейспламы от глупых вопросов, а фраза что доки на блюпил не нужны заслуживает клоуна

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

Ардуина если что это не азы

nikitalol ★★
()
Последнее исправление: nikitalol (всего исправлений: 2)
Ответ на: комментарий от Tyse_EX

Чисто во вход micro USB самой платы МК

По умолчанию юсб там не включён, и включается в нём сериалпорт на юсб совсем не так как в ардуине, у тебя тут взрослый микроконтроллер

Ты когда ардуиной шил у тебя программатор был подклюён?

nikitalol ★★
()
Последнее исправление: nikitalol (всего исправлений: 1)

Моё поделие, но разобраться с ходу врядли выйдет

usb тут поднят, но я не уверен что актуальный комит будет работать, последний раз я там пытался свой RTOS сделать

Проект перекомунизжен у всех подряд + чёт своё

nikitalol ★★
()
Последнее исправление: nikitalol (всего исправлений: 2)

ST-Link не должен определяться как ttyUSB0. Это устройство с кастомным интерфейсом, утилиты прошивки работают с ним напрямую через libusb, в ОС нет специального драйвера.

А сама плата с STM32 будет определяться только если на МК залита прошивка, которая корректно инициализирует USB периферию. Вангую с завода туда залили простую прошивку, инициализирующую только один GPIO со светодиодом. А раз USB не инициализирован, он не отвечает на запросы хоста и хост, увидев что подключено устройство (он это видит по подтяжкам, которые вообще внешние на плате и не зависят от МК), пытается с ним пообщаться, но ему ничего не отвечают.

KivApple ★★★★★
()
Ответ на: комментарий от u5er

Всё так. USB надо иниализировать (причём достаточно сложно, там не только сам USB надо запустить, но и PLL, и частоту самого ядра поднять). USB не инициализируется автоматически, так как не во всех проектах он используется и будет напрасно жрать энергию, занимать порты и накладывать ограничения на тактовую частоту.

Прошивка с завода скорее всего инициализирует только один GPIO пин и мигает им в цикле.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от NiTr0

Можно в качества костыля ненадолго перевести один из GPIO, на которых висит USB, в режим выхода и дёрнуть к земле на сколько-то миллисекунд. Это некорректно с точки зрения спецификации, но в той же спецификации есть требование, что все устройства должны выдерживать коротыш линий данных на землю (и в отличии от коротыша на 5В, это реально все выдерживают, так как очень легко реализуется, просто выходное сопротивление драйверов линий данных делают таким, чтобы они не могли физически развить опасный ток). В итоге хост видит просадку на линии данных, воспринимает это как отключение девайса, а затем когда там появляется снова 3.3В, ощущает подключение устройства. ПРОФИТ.

KivApple ★★★★★
()
Ответ на: комментарий от nikitalol

Во всех STM32F103 есть неудаляемый (зашит в ROM с завода, не является частью флеша) бутлоадер по UART. А вот бутлоадер для USB с завода идёт только в более новых МК (например, STM32F40x), в STM32F103, конечно, его можно зашить как часть пользовательской программы, но с учётом того что флеша на Bluepill всего 64/128 КБ, стоит дважды подумать, стоит ли тратить на него место.

KivApple ★★★★★
()
Ответ на: комментарий от PPP328

Arduino тоже с завода только мигает. Как USB устройство она видится благодаря USB-UART преобразователю на плате, которому прошивка не нужна. Во всяком случае на большинстве плат так, включая самые популярные Uno, Mega, Nano и т. д.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

Спасибо, не знал

флеша на Bluepill всего 64/128 КБ, стоит дважды подумать, стоит ли тратить на него место.

Если только в образовательных целях

nikitalol ★★
()
Последнее исправление: nikitalol (всего исправлений: 1)
Ответ на: комментарий от nikitalol

Из приятного: бутлодеры USB для STM32 как правило реализуют не COM-порт (как у Arduino), а USB DFU - устройство видится как флешка, прошивка происходит тупо копированием bin файла прошивки на неё.

KivApple ★★★★★
()
Ответ на: комментарий от NiTr0

нормально там все распаяно

«Там» это где? Blue Pill это не конкретная плата от конкретного производителя. Их любой китайский подвал клепает по своему разумению. И разумение у всех разное. То, что конкретно твой экземпляр распаян нормально, ничего не означает.

anonymous
()
Ответ на: комментарий от anonymous

блю пилл стандарт де факто. как и mini360, как и 28j60 модули, как и многое прочее…

тем более распайка юсб - это аж целых 3 резистора, общей ценой 0.03 цента…

NiTr0 ★★★★★
()
Ответ на: комментарий от anonymous

Я ещё не встречал ни одну китайскую плату, на которым бы одновременно был МК с аппаратным USB, USB разъём и они не были правильно соединены по какой-нибудь минимальной схеме.

Китайцы ставят дешёвые линейные стабилизаторы, делают неуправляемые подтяжки USB и т. п., но пару дорожек между чипом и портом всегда проводят. Им это стоит 0 центов (площадь платы и количество слоёв не меняется, дополнительные компоненты МК с аппаратным USB, как правило, тоже не обязательны) и не подключать USB откровенное вредительство, за которое они огребут плохие отзывы.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 3)
Ответ на: комментарий от KivApple

ST-Link не должен определяться как ttyUSB0. Это устройство с кастомным интерфейсом, утилиты прошивки работают с ним напрямую через libusb, в ОС нет специального драйвера.

Правильно он определяется как ttyACM, что сути не меняет.

steemandlinux ★★★★★
()