Stm32f103c8t6 не определяется по usb
Установка Delphi 7 под Windows7x32 и под Windows7x64
Хотя я и читал статью что Delphi 7 ставится под Windows 7 задаю этот вопрос . Так ли это и будет ли.
Stm32f103c8t6 прошивка через USB
Слышал что для них есть загрузчик, и даже видел темку где лежит .bin. Но вот проблема. ОСь.
stm32f103c8t6 USB Audio на CubeMX проблема
Я пытаюсь сделать USB спикер на stm32f103c8t6 через проект из CubeMX. Уже не одну неделю бьюсь, но.
Через UART без проблем прошил.
Но хотелось бы работать с ней через USB.
При подключении определяется как-то криво
В списке устройств как неизвестное устройство. Ни PID ни VID не определить
В итоге DevID.info не находит его.
libusb-win32-bin-1.2.6.0 не ставятся, потому что не видят.
Дрова из комплекта Arduino_STM32 ставить пробовал.
Вроде всё поставилось но ничего не изменилось.
Перемычки пробовал ставить по разному.
Пока что мысли закончились. Не знаю с какой стороны подступится.
Может добродушный Ott подкинет мысли в какую сторону копать?
Но ардуинщикам это пустой звук.
Бросайте не ваше это.
Ваше -ковыряние в носу. Пуллап.
Но ардуинщикам это пустой звук.
Бросайте не ваше это.
Ваше -ковыряние в носу. Извиняюсь! Можно по делу? Без хамства и пренебрежения? А как к вам по другому относиться?
Вы вообще смотрели -соединены ли D+ и D- с чипом?
Да и пуллапа там точно нет.
Не обращайте внимания на dosykus-а. Он всегда хамит.
Вы хотите прошивать через USB, или разрабатывайте USB девайс? В первом случае, лучше прошивать/отлаживать через ST-Link, который можно купить у тех же китайцев.
Тем более вы уже не въехали о чем просьба. Может и есть пуллап - схемы это чудо нет на сайте.
Пищалку в руки и рисовать схему USB.
А уже потом код для USB-CDC (ну или что нужно) брать из примеров и загружать. Нет уж, господин адвокат, пусть отвечает.
Тем более вы уже не въехали о чем просьба.
Не обращайте внимания на dosykus-а. Он всегда хамит.
Вы хотите прошивать через USB, или разрабатывайте USB девайс? В первом случае, лучше прошивать/отлаживать через ST-Link, который можно купить у тех же китайцев.
В МК залита прошивка, реализующая USB девайс?
На первом этапе, прошивать, дебажить и получать ответ через USB, чтобы не юзать промежуточные USORT-USB девайсы. Вполне возможно, что дойдёт очередь и до стлинка.
По поводу прошивки не скажу. Залита прошивка generic_boot20_pc13.bin. Глубже не копал.
Вообще, я расчитывал, что USB-интерфейс аппаратный. В программном usb необходимости и пользы, на данном этапе, у меня точно нет.
В любом случае спасибо.
Тему можно закрывать.
Пищалку в руки и рисовать схему USB.
А уже потом код для USB-CDC (ну или что нужно) брать из примеров и загружать.
Спасибо за наводку. Пошёл курить дальше
Тогда неудивительно что МК по USB не опознается. У него UART загрузчик, а не USBшный.
Так и есть, но USB это универсальный интерфейс и без программной поддержки со стороны МК он работать не будет.
Pull-Up на плате к USBDP там естественно есть, юзал такую платку для прототипирования. Схему платы можно найти, поискав в гугле по картинкам "stm32f103c8t6 board datasheet". Самый простой способ проверить USB - воспользоваться STM32CubeMX, USB там настраивается тремя тычками, примеров в инете полно.
UPD: от ардуино там только совместимые размеры разъемов, использовать в более "взрослых" целях преград не вижу
1. Ознакомьтесь с надписями на плате. перемычки переключают место начальной загрузки на USB не влияют.2. Для работы с USB нужна соответствующая прошивка, USB там рабочий, так как я использую такую плату для своих разработок.
3. Для получения рабочего примера, необходимо скачать библиотеку FS-USB, установить Keil, выбрать пример устройства из предоставленных в либе (Mass Storage точно рабочий на данной плате) и при компиляции выбрать STM3201B-Eval из предложенных конфигураций (она самая близкая для данной платы)
4. ПРофит. Мне кажется автор поста просто не понимает, что это не ардуино. А если именно нужно ардуино с этой платой, то лучше наверно на сайте ардуино интересоваться. Мне кажется автор поста просто не понимает, что это не ардуино. А если именно нужно ардуино с этой платой, то лучше наверно на сайте ардуино интересоваться. Дело не в ардуине. Просто если имеется USB-интерфейс, то вполне ожидаемо расчитывал увидеть именно аппаратный USB.
Другое дело, что если он не аппаратный, то хотелось бы иметь второй USB, чтобы не городить кучу UART хвостов.
Ну и по поводу stlink. Честно, не вижу причин, почему нельзя было реализовать один аппаратный USB интерфейс и для программирования и для отладки, совместив какой-нить FT232/CP2102/PL2303 c stlink на аппаратном уровне.drf
Но, водно, что мы не ищем лёгких путей ;)
Для работы с USB нужна соответствующая прошивка, USB там рабочий, так как я использую такую плату для своих разработок.
Интересно. Ссылочкой можешь поделится? Нужно ли с этой прошивкой обеспечивать поддержку USB в своих программах?
Дело в том, что меня пока не интересует работа самого USB в моих программах.
Выше уже писал что USB модуль аппаратный.
Другое дело, что если он не аппаратный, то хотелось бы иметь второй USB, чтобы не городить кучу UART хвостов.По вашему USB это только виртуальный COM порт? Простите, у вас мышка и клавиатура не USB случайно? В диспетчере устройств комп их как опознает? Как COM порты? ))
USB это универсальный порт, и как комп опознает подключенный девайс зависит от дескрипторов. По умолчанию в МК модуль USB отключен. Его нужно включить, настроить и реализовать обмен с компом в т. ч. передачу дескрипторов.
Из платы STM32F103C8T6 можно сделать практически любой USB девайс типа мышки, клавиатуры, USB звуковой карты, USB флешки и т. д.
Попробуйте залить прошивки из соседней темы
Сделайте. Потом нам расскажите что получится? Учтите что ST-Link это не виртуальный COM порт.
Не пойму, USB на нём разведён, системой видится. Но не определяется как опознанное устройство. Гугление на тему программирование обычно приводит только решения с подключением внешнего USB-UART. Понятно, что не проблема, но зачем тогда этому модулю полная разводка USB? Ведь не для одного же питания? :)
USB на нём разведён, системой видится. Но не определяется как опознанное устройство.
С девайсом не работал, потому пара вопросов:
1) ты его хочешь использовать как usb-host, подключая к нему что-то, или как usb-устройство, подключая его к компьютеру
2) если второе, то lsusb -v в студию
3) подозреваю, что usb на устройстве еще сконфигурировать надо
cvs-255 ★★★★★ ( 16.02.16 14:14:55 )Последнее исправление: cvs-255 16.02.16 14:20:28 (всего исправлений: 1)
Так тебе же надо написать что-нибудь чтобы у тебя железка по этому usb отвечала. А что ты хочешь то вообще?
Т.е. USB тут только для подключения внешней периферии? А почему тогда у него формат для втыкания внешнего хоста (обычный micro-USB), а не сам он хостового формата (не помню, как формально этот вид USB-разъёма зовётся)? Типа, периферию через OTG-кабель втыкать?
Т.е. USB тут только для подключения внешней периферии?
Насколько я знаю, как запрограммируешь так и будет
Там стоит usb->uart на плате. Т.е. их usb только в качестве uart работать умеет. Здесь же, как я понял, выведен usb самого контроллера. И в качестве чего ты контроллер запрограммируешь, в качестве того он и будет работать. Можешь в качестве uart, а можешь чтобы он изображал мышь или usb-storage, или принтер, или что еще тебе придумается. Но это все надо запрограммировать
cvs-255 ★★★★★ ( 16.02.16 14:24:42 )Последнее исправление: cvs-255 16.02.16 14:26:19 (всего исправлений: 2)
Т.е. USB тут только для подключения внешней периферии? А почему тогда у него формат для втыкания внешнего хоста (обычный micro-USB), а не сам он хостового формата (не помню, как формально этот вид USB-разъёма зовётся)? Типа, периферию через OTG-кабель втыкать?
Суде по плате(видел только сверху) у тебя там нету st-link'а или какого-нибудь иного программатора.
Глянь схему этого поделья.
И нет, usb в stm32 ты можешь и для втыкание в пека использовать.
И да, тебе нужно что-нибудь написать чтобы оно хоть как-то работало. Реализовать Usb-cdc например.
В данной статье речь пойдет о программировании и полноценной отладке микроконтроллера STM32F103C8T6 через USB.
Однажды, от коллег поступило предложение о участии в IoT проекте. Система предусматривала однопоточный запуск скриптов. Отладка производилась с помощью логов. И тут мне в голову пришла мысль о полноценной удаленной отладке проектов под микроконтроллеры.
Для начала, нужно было опробовать все на прототипе. В качестве отладочной платы была выбрана почти всем знакомая BluePill на микроконтроллере STM32F103. Поскольку на данной отладке имеется интерфейс MicroUSB, было принято решение в прототипе использовать именно этот интерфейс. В будущем предполагался переход на UART подключенный к GSM модулю.
Требовалось реализовать загрузчик, имеющий несколько функциональных блоков. Задачу можно разбить на следующие подзадачи:
Реализация драйвера интерфейса USB со стороны микроконтроллера.
Разработка кода обновления прошивки микроконтроллера с помощью GDB.
Разработка GDB сервера.
Вывод отладочных логов.
Обо всем по порядку. Для прототипирования был реализован загрузчик (bootloader).
2. Требовался код работы с флеш памятью. Вы можете подумать что тут все просто. Это так и не так одновременно. Первая проблема, которая возникла,- невозможность стереть флеш память в обработчике прерывания. Дело в том, что архитектура Cortex M предусматривает два режима работы процессора. Thread и Handler. В первом режиме процессор находится после старта, а так же когда нет активных прерываний. В Handler mode исполняются все обработчики исключений и прерываний. К сожалению, стирание flash-памяти на STM32F103C8T6 в Handler режиме приводит к корректному статусу стирания памяти, но сама память не стирается.
Эта проблема решается посредством запуска кода стирания Flash в Thread режиме. Сделать это можно, так, как обычно происходит в операционных системах. Для этого нужно понимать что такое контекст потока. Контекст потока, - это состояние набора регистров процессора, стека, описывающее конкретный момент работы системы. При входе в обработчик прерывания контекст текущего работающего потока сохраняется, а при выходе из обработчика, он восстанавливается и выполнение программы продолжается. При переключении задач в ОС, по определенному алгоритму, в определенный момент, восстанавливается контекст текущей активной задачи. Нам, при выходе из обработчика, нужно лишь восстановить "свой" контекст, для вызова функции стирания Flash памяти.
Другая проблема является более сложной. Заключается она в том, что, при работе с флеш памятью может происходить выполнение обработчика прерывания, той прошивки, которая находится под отладкой. Эта проблема решается несколькими действиями перед стиранием памяти. Первое что требуется сделать,- заблокировать вызов любых обработчиков прерываний, используемых в отлаживаемой прошивке. Или проще говоря тех, которые не используются в Bootloader-e. Но даже в этом случае команда на стирание памяти может поступить в то время, когда один из обработчиков уже выполняется. Для решения этого вопроса я решил воспользоваться пошаговым режимом работы процессора и "по шагам" вывести процессор из всех обработчиков прерываний. После этого флеш-память можно стирать.
3. Требовалось реализовать GDB-сервер. Я воспользовался исходным кодом проекта BlackMagic, для обработки команд приходящих из среды разработки. На самом деле приходящих от приложения arm-none-eabi-gdb. Далее команды транслировались в команды бинарного протокола, который используется в процессе взаимодействия с микроконтроллером. Нижний уровень GDB-сервера выполнен с использованием библиотеки WinUSB.
Но таким образом функцией printf можно было пользоваться только в bootloader-е. А как же быть с отлаживаемым приложением? Обычно, для взаимодействия с операционной системой, используются прерывания/системные вызовы. Так, BIOS использует int13, ms-dos int21. Мы же на микроконтроллере воспользуемся системным вызовом, т.е. командой "svc". При выполнении этой ассемблерной инструкции в прошивке, будет вызван обработчик прерывания SVC, находящийся в bootloader-е. Что нам и требовалось сделать.
Bootloader использует 10Kb flash памяти, но зарезервировано 16Kb с целью расширения функционала. Так же используется 4K оперативной памяти. Оперативная память применяется для хранения буферов USB, контекста прерванного процесса, а так же как память стека обработчиков прерываний. Итого. Остается 16Kb из 20Kb оперативной памяти и 48Kb flash памяти. Хотя на самом деле Flash-память в контроллере STM32F103C8T6 не 64Kb а 128Kb,- соответственно остается 112Kb.
В процессе отладки прошивки, возникает один интересный момент. Если, в отладчике делать шаг на потоке, а в это время произойдет вызов обработчика прерывания, то отладчик шагнет в обработчик прерывания. Чтобы подобного не происходило, в коде я использовал step режим для выхода из обработчика прерываний. При этом, если отладчик в прерывании наткнется на точку останова, будет произведена остановка отладки на точке останова.
И наконец, - что поддерживается:
Загрузка прошивки на плату с использованием GDB. Т.е. непосредственно из среды программирования/отладки. В моем случае это STM32CubeIDE. Адрес вектора прерываний должен находится по адресу 0x8004000.
Просмотр и изменение регистров процессора в контексте отлаживаемой прошивки.
Просмотр и изменение памяти.
Просмотр и изменение регистров периферии.
Восемь точек останова.
Режим пошаговой отладки.
Отладочная печать в консоль GDB-сервера.
В отлаживаемой прошивке нельзя изменять адрес вектора обработчика прерываний. Хотя можно добавить системный вызов setVectorBase, что решит вопрос. Нельзя изменять приоритеты прерываний на произвольные значения. Приоритет должен находиться в диапазоне 0x40 - 0xF0. Нельзя запрещать прерывания systick, прерывание usb, и прерывания DebugMon, SvcHandler, а так же всех FaultHandler-s.
Касательно исходных кодов. Это был быстро-прототип. Что то в нем сделано на скорую руку, что то возможно не совсем корректно. Но принцип работы проверен.
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Последние посетители 0 пользователей онлайн
Похожий контент
где - D3 микросхема зарядки Li-ion\Li-Pol аккумулятора (MCP73831),
D4 - DC\DC преобразователь USB -> 3.3V (LM3671),
D5 - DC\DC преобразователь VBAT -> 3.3V (LM3671).
Суть моего вопроса:
Если присутствует напряжение VBUS (USB), то необходимо выключать преобразователь D5 сигналом LM3671_BAT, но включать D4 сигналом LM3671_USB.
Таким образом получается, что аккумулятор будет заряжаться, а питаться прибор будет от USB.
Мои предположения, рассуждения и решения которые я вижу:
Если управлять преобразователями при помощи GPIO портов МК, то получится, что как только питание по USB отключится, то прибор выключится быстрее, чем успеет включиться преобразователь работающий от VBAT, ввиду чего я такое решение и отмёл. Использовать небольшую схемку на двух полевых транзисторах в одном корпусе (p и n типа). В симуляторе вроде как всё работает, но вероятно может произойти та же ситуация, что и в случае 1;
Использовать микросхему выполняющую данную задачу, но тут играет роль, что достать её сложно, стоит 7$ и выглядит как overkill для такой простой задачи. Покидайтесь, пожалуйста, камнями и критикой решений, своими вариантами решения задачи или же исправлениями к приложенным схемам.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Если вдруг кого-то заинтересует,
то вот ссылка на GitHub проекта,
а так же ссылка на GitHub библиотеки.
Используются шрифты T-Flex GOST, можно получить по ссылке.
Здравствуйте!
Простите, если не сюда пишу.
Не подскажите маркировку кабеля для USB?
Мне нужно спаять USB кабель для телефона. Зарядка и передача данных.
Не спрашиваю где его взять, от каких устройств и т.д. Мне нужно купить новый кабель.
Подойдут с сечением 24, 22 AWG.
Если с экранированием, то вообще будет огонь.
Если еще и мягкий, то круче огня будет
Читайте также: