STMF103 и USB, как запустить?

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик

Сообщение КАШАК »

Доброго времени суток.

Пытаюсь разобраться с USB на STM32F103VCT6. Для начала хочу запустить как HID устройство. Скачал STM32_USB-FS-Device_Lib_V4.0.0. Открыл пример Custom_HID и мягко говоря обалдел... Библиотеки универсальные и там такого напутано, что начинающему разобраться довольно проблематично, плюс ко всему куча кода для конкретных проектов на конкретных демо платах (там и ADC и DMA и внешних прерываний целый мешок да еще и на SPL все). На AVR это было раз в 10 проще и понятнее. Вот я и решил обратиться сюда за помощью. Кто сталкивался с подобной задачей? Или может у кого-то есть простой пример реализации USB?
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Ковырял USB на STM32F103CBT6. От библиотек отказался, ибо столько места в камне небыло (там еще куча других задач)
Разбирал модуль USB методом ручной записи в регистры. Скажу сразу. Модуль USB там такой-же сложный, как и сама библиотека и все это усугубляется отсутствием апноутов по аппаратному модулю.

Там все устроено хитропопым способом. У МК в адресном пространстве есть 512к памяти, через которую происходит обмен между МК и модулем USB.
В эту память надо положить дескрипторы буферов для обмена данными (дескриптор буфера нулевой конечной точки, дескриптор буфера первой точки и так далее для всех используемых конечных точек)
Дескрипторы эти в основном содержат адрес буфера приема (буфер должен располагаться в этой-же памяти), его размер, адрес буфера передачи и его размер.

Короче, я собираюсь писать статью для РадиоКота на эту тему. Статья очень востребована, ибо инфы в инете я не нашел.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

DX168B писал(а): Статья очень востребована, ибо инфы в инете я не нашел.
В том же Keil есть примеры для плат от того же Keil , где все прозрачно .
В чем проблемы то ?
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Смотрел я пример от Кейла, а конкретно - реализацию USB Mass Storage.
Мало того, что пример не заработал на ихней-же плате, так еще и мерзкое оформление высокоуровневого слоя взаимодействия с USB.
У меня небыло желания копаться в тысячах слоев кода, по этому я написал все с нуля и не жалею нисколько.

Как работать с регистрами - нигде нет ни единой статьи. Не говорю уже про описание работы модуля. Есть только скудная информация в ДШ и не более.
Зная модуль, его тонкости и правила работы с ним, отладка будет куда проще.
Да и новичкам разбирать библиотеки будет проще, ибо будут знать, что искать и где и как оно должно работать.

Так что статья нужна, как не крути. Тем более сайт всетаки для начинающих.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Сообщение balmer »

Да! Ждем статьи. Я хоть и вставляю почти везде USB на STM32, но многие тонкие моменты не понимаю.

USB из стандартных библиотек после компиляции занимает примерно 8 КБ. Это конечно не мало, но и не скажу что фатально много.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Ну тогда готовлю черновики и начинаю потихоньку писать. :)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Открыл глаза
Сообщения: 47
Зарегистрирован: Вс июн 10, 2012 22:43:19
Откуда: РФ, г. Курск

Сообщение brutal »

вообще-то usb сам по себе непростой интерфейс для самостоятельной реализации...
Поэтому если хотите разобраться то сложные примеры не должны вас вводить в ступор =)
Иначе лучше переключиться на что-нить по проще
Tais sa gueule et écoute un silence
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Смысл с этих примеров, если не понятна работа аппаратного модуля.
Ничего там сложного нет, просто информация скудная. Модуль устроен почти так-же, как и на МК от Atmel.
Те-же регистры конечных точек и тот-же буфер пакетов, ничего архисложного.
Просто, когда что-то не работает, у многих начинаются пляски с бубном. (У меня поначалу тоже было)
Были даже проблемы с выравниванием данных ввиду особенностей буфера пакетов, причем в стандартной библиотеке.
Сейчас же я смотрю в код стандартной библиотеки и понимаю каждую строчку. Есть там конечно лишнее, к примеру - принудительное переключение статуса конечной точки в EP_RX(TX)_NAK.
Лишнее оно потому, что модуль, после обращения хоста к точке, сам переключает точку в это состояние. (NAK hand.. на любое обращение к конкретной точке, причем ответ аппаратный)
Не смотря на все это, в статье я буду рассматривать работу именно на примере STM32_USB-FS-Device_Driver, чтобы было проще и доступнее, чем писать самому тонны кода.
Ну и опишу организацию модуля и опишу все регистры и биты, а так-же работу с выделенной памятью (буфером). Регистров там мало (в отличии от STM32F407xxxx) и все они понятны для среднего ума.

ЗЫ: Статья написана на 35% (Мог бы быстрее, но времени свободного маловато)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Сообщение balmer »

Задам тогда мучающий меня вопрос.

Тоже пользуюсь стандартной библиотекой. Скопипастил исходники с Vitrual Com Port примерчика.

Все бы хорошо, но наблюдается такое поведение:
При первом подключении USB все нормально. При втором и последующем подключении не приходят первые 2-3 пакета с данными. Причем тестировал этот код и на STM32F103, STM32F107, STM32L152. Везде одинаковая картина. Уже приспособился к такому поведению - просто посылаю пакетики и жду пока не придет ответ.

Но хочется таки понять в чем дело. Вдруг это стандартная ошибка на которую все натыкаются....
Родился
Сообщения: 1
Зарегистрирован: Вт май 24, 2011 20:29:41

Сообщение OldWarrior »

Так когда всё таки статья будет, очень нужно и очень интересно.
Ответить

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