Сделал аналог HID устройства из статьи https://habrahabr.ru/post/208026/ на F0. Не считая исправления функции EP_Write..(чтобы могли передавать больше 64 байт), надо было поменять только дескрипторы и добавить поддержку Report дескриптора, чтобы реализовать HID.
Ссылка _hid_v1
USB в STM32F0
Сообщений 1 страница 30 из 62
Поделиться12017-04-29 15:16:24
Поделиться22017-04-29 15:37:06
Со стороны компа программку надо для приема и отправки.
Поделиться32017-04-29 15:54:06
В статье на хабре она есть
Поделиться42017-04-30 18:31:00
Может пригодится кому. Сделал USB HID термометр на f042. DS18B20 на PA2. Программа для линукса писалась в QT Creator, для Windows в Visual Studio 2008 Express Edition. Для линукса создал файл правил, его надо скинуть в /etc/udev/rules.d и выполнить sudo udevadm control --reload-rules, иначе нужно запускать программу через sudo чтобы программа увидела термометр. Ссылка
Поделиться52017-05-17 16:27:02
Может пригодится кому, флешка на 2 мегабайта на stm32f042f6p6 и at45db161d (подключена к SPI1, CS на PB1). Код кривой, но работает на win xp, 7, 8.1 и linux. На других не тестировал.
Архив stm32f0_usb_msd_v1.rar тут Ссылка
Поделиться62017-05-18 08:40:17
sobs, ты крут, с какой скростью ты это выдаёшь, респект )
Следующее CDC?
Если всё объединить в одно дерево файлов набираются уже альтернативные usb-samples
Поделиться72017-05-18 10:29:02
vt340, спасибо)
На самом деле хочу пока структурировать знания, попробовать нормально описать, чтобы не забылось. И придется чуть тормознуть - сессия на носу))
Поделиться82017-05-18 12:43:06
sobs
Браво!
Поделиться92017-05-26 22:29:28
Написал черновик статьи. Если у кого есть желание посмотрите, может исправить что?
Все кроме печатной платы (осталась на рабочем ноуте, в понедельник добавлю) здесь Ссылка
Поделиться102017-05-27 09:08:37
Прочитал, но статьи не мой жанр, так что не могу ни оценить, ни посоветовать )
Поделиться122017-06-05 20:11:02
Интересно будет ещё и потом почитать комменты )
Поделиться132017-06-06 08:17:44
Да не будет рекламой, опубликовал чистовик на паяльнике.
Часть 1
Часть 2
Часть 3 пока не опубликована, как опубликуют ссылку добавлю
Ссылки битые...
Поделиться142017-06-06 09:15:55
Ссылки битые...
у меня открываются.
Поделиться152017-06-06 09:42:44
dosikus написал(а):
Ссылки битые...
у меня открываются.
У меня тоже. Они есть на главной cxem.net
Поделиться162017-06-07 10:13:36
Добавил 3ю часть.
Поделиться172017-06-07 12:40:57
У меня тоже. Они есть на главной cxem.net
В огнелисе открываются но только на паяльнике.
Да не будет рекламой, опубликовал чистовик на паяльнике.
А админы паяльника думают что это мы здесь рекламой занимаемся ... )))) Забанили меня за ссылки на этот форум.
Поделиться182017-06-21 17:28:44
Мужики, что значит "crystal-less USB"? Только сейчас обнаружил, что в STM32F042, с которыми собираюсь работать, такая хрень. Это типа от внутреннего генератора сможет что ли работать?
Только толку-то, если для CAN все равно нужен кварц…
Поделиться192017-06-21 17:36:34
Сделал USB HID термометр на f042.
Спасибо, утащил — собираюсь термомониторинг ~сотни точек делать на TSYS01. У всех узлов связь по CAN будет, но ретранслятором/мастером для упрощения хочу поставить тоже STM32F042 с USB (сделаю как обычно CDC, чтобы что угодно можно было подключить — хоть одноплатник, хоть комп, уж screen-то в любой системе "из коробки" есть, ну или getty на крайняк).
Ты библиотечку USB сам писал, или где брал?
Поделиться202017-06-21 17:54:31
sobs написал(а):
Ты библиотечку USB сам писал, или где брал?
Сам, но ее можно чутка переделать, с сессии приеду - займусь)
Поделиться212017-06-22 00:36:59
Где ж такие умные студенты берутся?
Мне все какие-то совсем уж никакие попадались (из бывшего таганрогского радика).
Поделиться222017-06-22 08:09:53
Ахаха) Попадутся еще)
Ну а вообще, я из Беларуси. Учусь заочно в БГУИРе, бывший РТИ.
Поделиться232017-08-04 21:47:42
sobs, stm32f0_usb_v4 и stm32f0_usb_v5 - драйвер не найден, win7 64.
И при сборке и при прошивке из твоих архивов.
Термометр завелся без проблем. Если не считать кучки мелких ляпов присущих кокосу...
Поделиться242017-08-04 22:59:51
sobs, stm32f0_usb_v4 и stm32f0_usb_v5 - драйвер не найден, win7 64.
Это проекты с дескрипторами vt430 и они требуют драйвер winusb. В #15 сообщении vt430 давал ссылку на архив, там в readme есть ссылка на драйвер и сама программа, с которой эти проекты работают. Чтобы не лезть и не искать вот ссылка на драйвер http://zadig.akeo.ie/ и сам архив https://yadi.sk/d/naqKh4e03EDEJU/STM32-USB/usb-vsc.zip.
И при сборке и при прошивке из твоих архивов.
Термометр завелся без проблем. Если не считать кучки мелких ляпов присущих кокосу...
Какие были проблемы при сборке и прошивке? И что за ляпы?
Я под хид немного библиотеку переделал, но не документировал. Могу скинуть черновой проект, как есть.
Поделиться252017-08-04 23:58:19
Спасибо, счас заценим.
Какие были проблемы при сборке и прошивке? И что за ляпы?
void USB_Init()
Keil лается на отсутствие void
uint16_t temp = (size & 0x0001) ? (size + 1) / 2 : size / 2; uint16_t *buf16 = (uint16_t *)buf;
определение не в начале блока так же не переваривает
Ну и отсутствие SystemInit ...
Поделиться262017-08-05 00:09:49
sobs
Спасибо драйвер встал, в устройствах определился.
Как теперь с ним работать со стороны ББ? Есть какие нибудь программы ?
Могу скинуть черновой проект, как есть.
Конечно кидай.
Поделиться272017-08-05 09:42:15
В #15 сообщении vt430 давал ссылку на архив, там в readme есть ссылка на драйвер и сама программа,
Моя невнимательность... Перекомпилировал ту демку под 64 и все заработало...
sobs, еще раз спасибо.
Правильно ли я понимаю в твоем проекте с термометром данные передаются через Report ?
И как увеличить размер пакета ?
Поделиться282017-08-05 11:27:19
Keil лается на отсутствие void
определение не в начале блока так же не переваривает
Ну и отсутствие SystemInit ...
Это скорее к gcc, хотя стандартами не запрещено. SystemInit в стартапе вызывается.
Правильно ли я понимаю в твоем проекте с термометром данные передаются через Report ?
Да, мне кажется, это удобнее чем через Feature. В stm32f0_usb_hid_v1 данные передаются двумя способами.
И как увеличить размер пакета ?
Изменить дескриптор репорта. Поля
0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x03, // REPORT_COUNT (3)
REPORT_SIZE (8) - 8 бит
REPORT_COUNT (3) - количество - 3 штуки.
Итого 3 байта. Но на самом деле 4, так как первым пойдет Report ID.
Везде, где ни читал написано, что максимальный размер - 64 байта. На форуме радиокота вычитал, что можно указать REPORT_SIZE и REPORT_COUNT большими чем 64 байта, и передавать данные за несколько раз. Пока это не проверял.
Репорт удобно создавать в программе HID Descriptor Tool http://www.usb.org/developers/hidpage#HID%20Descriptor%20Tool, там есть примеры под разные устройства.
А про поля репорта, читал Агуров. "Интерфейс USB. Практика использования и программирования", свободно ищется в гугле)
Конечно кидай.
Скинул в ту же папку (Ссылка) каталоги и архивы DDS_Generator_PC для ПК и DDS_Generator_STM32_v0.5 для stm32. Это не полный проект, еще для ПЛИС прошивка нужна, но это к теме не относится. Тут реализована передача только через репорт. Единственное что не нравится, иногда при передаче данных с пк они теряются. Поэтому приходится в программе отправлять данные и читать их, если прочитано не то, то еще раз передавать. А чтение происходит, такое чувство, как из буфера - сначала пару раз старые данные, а потом, наконец, новые. Пока не знаю как побороть, на ПК из меня программист так себе) Это сказывается на времени отклика.
Отредактировано sobs (2017-08-05 11:28:13)
Поделиться292017-08-05 12:04:29
Единственное что не нравится, иногда при передаче данных с пк они теряются. Поэтому приходится в программе отправлять данные и читать их, если прочитано не то, то еще раз передавать. А чтение происходит, такое чувство, как из буфера - сначала пару раз старые данные, а потом, наконец, новые.
Кошмар какой
А я ведь предупреждал )
в этих классах нет никакого практического смысла, ну разве что для развлечения
Поделиться302017-08-05 12:33:00
Кошмар какой
А я ведь предупреждал )
Возможно ты и прав, но не думаю что дело только в этом) Все-таки их используют повсеместно. Грешу пока на себя, а не на классы =)
Отредактировано sobs (2017-08-05 12:34:41)