Пытаюсь разобраться с USB на STM32F103VCT6. Для начала хочу запустить как HID устройство. Скачал STM32_USB-FS-Device_Lib_V4.0.0. Открыл пример Custom_HID и мягко говоря обалдел... Библиотеки универсальные и там такого напутано, что начинающему разобраться довольно проблематично, плюс ко всему куча кода для конкретных проектов на конкретных демо платах (там и ADC и DMA и внешних прерываний целый мешок да еще и на SPL все). На AVR это было раз в 10 проще и понятнее. Вот я и решил обратиться сюда за помощью. Кто сталкивался с подобной задачей? Или может у кого-то есть простой пример реализации USB?
_________________ Опыт растет прямо пропорционально выведенному из строя оборудованию...
Заголовок сообщения: Re: STMF103 и USB, как запустить?
Добавлено: Пт ноя 15, 2013 17:33:33
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Ковырял USB на STM32F103CBT6. От библиотек отказался, ибо столько места в камне небыло (там еще куча других задач) Разбирал модуль USB методом ручной записи в регистры. Скажу сразу. Модуль USB там такой-же сложный, как и сама библиотека и все это усугубляется отсутствием апноутов по аппаратному модулю.
Там все устроено хитропопым способом. У МК в адресном пространстве есть 512к памяти, через которую происходит обмен между МК и модулем USB. В эту память надо положить дескрипторы буферов для обмена данными (дескриптор буфера нулевой конечной точки, дескриптор буфера первой точки и так далее для всех используемых конечных точек) Дескрипторы эти в основном содержат адрес буфера приема (буфер должен располагаться в этой-же памяти), его размер, адрес буфера передачи и его размер.
Короче, я собираюсь писать статью для РадиоКота на эту тему. Статья очень востребована, ибо инфы в инете я не нашел.
_________________ I am DX168B and this is my favourite forum on internet!
Заголовок сообщения: Re: STMF103 и USB, как запустить?
Добавлено: Пт ноя 15, 2013 21:14:21
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Смотрел я пример от Кейла, а конкретно - реализацию USB Mass Storage. Мало того, что пример не заработал на ихней-же плате, так еще и мерзкое оформление высокоуровневого слоя взаимодействия с USB. У меня небыло желания копаться в тысячах слоев кода, по этому я написал все с нуля и не жалею нисколько.
Как работать с регистрами - нигде нет ни единой статьи. Не говорю уже про описание работы модуля. Есть только скудная информация в ДШ и не более. Зная модуль, его тонкости и правила работы с ним, отладка будет куда проще. Да и новичкам разбирать библиотеки будет проще, ибо будут знать, что искать и где и как оно должно работать.
Так что статья нужна, как не крути. Тем более сайт всетаки для начинающих.
_________________ I am DX168B and this is my favourite forum on internet!
Заголовок сообщения: Re: STMF103 и USB, как запустить?
Добавлено: Сб ноя 16, 2013 20:37:06
Открыл глаза
Зарегистрирован: Вс июн 10, 2012 22:43:19 Сообщений: 47 Откуда: РФ, г. Курск
Рейтинг сообщения:0
вообще-то usb сам по себе непростой интерфейс для самостоятельной реализации... Поэтому если хотите разобраться то сложные примеры не должны вас вводить в ступор =) Иначе лучше переключиться на что-нить по проще
_________________ Tais sa gueule et écoute un silence
Заголовок сообщения: Re: STMF103 и USB, как запустить?
Добавлено: Пн ноя 25, 2013 13:36:37
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Смысл с этих примеров, если не понятна работа аппаратного модуля. Ничего там сложного нет, просто информация скудная. Модуль устроен почти так-же, как и на МК от 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!
Тоже пользуюсь стандартной библиотекой. Скопипастил исходники с Vitrual Com Port примерчика.
Все бы хорошо, но наблюдается такое поведение: При первом подключении USB все нормально. При втором и последующем подключении не приходят первые 2-3 пакета с данными. Причем тестировал этот код и на STM32F103, STM32F107, STM32L152. Везде одинаковая картина. Уже приспособился к такому поведению - просто посылаю пакетики и жду пока не придет ответ.
Но хочется таки понять в чем дело. Вдруг это стандартная ошибка на которую все натыкаются....
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения