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

stm32f103c8t6

Вт окт 02, 2018 19:50:53

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

Изображение

Качнул CubeMX и VisualGDB( я прогер, поэтому мне привычней юзать visual studio для всего), решил usb-шный проектить замутить, во первых т.к. кое что надо, да и люблю с юсб возиться(был большой опыт на пиках)

Настроил и сгенерил проект для usb (там по умолчанию HID мышка почти готовая) - всё ок - скомпилил - залил - работает.

Но тут нарисовалась проблема. Когда подключен программатор и одновременно воткнуть кабель USB - всё работает и в системе появляется мышь - как только программатор отключаю, перетыкаю usb - всё пипец - неизвестное устройство.

Из переделок - только допаял 1.5к резистор прям поверх платы между PA12 (usb DPLUS) и 3.3 в - т.к. вычитал, что на этой плате китайцы косячат и вместо 1.5к впаивают 10k - проверил у себя да действительно 10ка стоит вместо 1.5ки - поэтому и допаял в паралель.

Ради прикола у программатора убрал SWD ноги - ток питание оставил - работает.

Т.е. если питание на плате уже есть - инициализация устройства происходит нормально - если же устройство питается от юсб - т.е. питание возникает в момент подключения - получаем неизвестное устройство

Что надо дописать(или можт опять косяк на плате какой), чтоб было хорошо :)

Добавлено after 29 minutes 30 seconds:
Ха, это происходит из-за того, что я включил часы реально времени тактируемые от внешнего генератора. Если выключить RTC или включить от внутреннего или выбрать от внешнего но указать BYPASS Clock Source(хз что это) - то всё работает. Ещё есть подозрение что лампочка на плате висит на PC13 - а это какой то там тампер для RTC.... Может гуру объяснят из-за чего именно такое могло происходить

Re: stm32f103c8t6

Вт окт 02, 2018 20:21:59

fsmoke писал(а):на этой плате китайцы косячат и вместо 1.5к впаивают 10k - проверил у себя да действительно 10ка стоит вместо 1.5ки
Обычно из-за этого проблем не возникает.

На запуск часового кварца нужно время. Можно разрешить работу кварца, но не ждать пока запустится, а вместо этого настроить прерывание от RCC и при RCC_IT_LSERDY переключать RTC на кварц.

Re: stm32f103c8t6

Чт янв 10, 2019 06:14:22

Если еще актуально, то "пипец, неизвестное устройство" может выскакивать, если USB девайс не ответил в течении 100мс после запроса компа. А комп запрашивает устройство сразу как заметилл пуллап на шине. Так что, вероятнее, надо укоротить процедуры инициализации, чтобы старт был побыстрее. Или добавить отдельную цепь отключающую и подключающую этот резистор "1.5к" и подключать его только после инициализации.

Re: stm32f103c8t6

Пн июн 10, 2019 10:22:20

Плохо помню, но для РТС не надо питание подавать отдельно?

Re: stm32f103c8t6

Пн июн 10, 2019 15:38:23

если нужен резерв, то надо. если не нужен, то спокойно будет работать и от Vdd.

Re: stm32f103c8t6

Пн июн 10, 2019 17:08:37

Забыл отписаться - проблема давным давно решилась! Собственно дело в том что visualGDB гамно! VisualGDB имеет свои репозитории поддержки stm и при выборе проекта качает тулчейны и библиотеки - которые отстают версиями от тех, что идут вместе с CubeMX. Это только первый звоночек. Дык вот когда вы импортируете проект из куба - получаются у вас 2 версии хедеров - те хедеры, которые лежат вместе с проектом и те, которые лежат в папках визуалгдб(и пути к ним тоже прописаны). При компиляции происходит лютый капец - половина файлов запросто может взяться из локальных исходников, а половина из визуалгдб. Разные версии, разные объявления структур, сишники из одного места а хедеры из другого - короче треш.

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

Короче ребята из визуалгдб - перехитрили сами себя - в погоне за автоматизацией(что типа нажал кнопку и всё скачалось и компилится) нарубили дров. У меня, как проф программера(софтверника с огромным стажем) волосы шевелились во всех местах, когда я полез изучать потроха визуалгдб.

НИКОГДА, никогда не используйте - эту поделку, слишком много косяков, слишком много корявостей(а уж визуал студию я знаю изнутри, т.е. знаю и разрабытывал расширения и проектные системы для MVS), слишком много "под капотом", на которое не повлияешь никак - короче нафиг.
Ответить