Микроконтроллеры

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Микроконтроллеры » STM32 » USB в STM32F0


USB в STM32F0

Сообщений 1 страница 30 из 52

1

Сделал аналог HID устройства из статьи https://habrahabr.ru/post/208026/ на F0. Не считая исправления функции EP_Write..(чтобы могли передавать больше 64 байт), надо было поменять только дескрипторы и добавить поддержку Report дескриптора, чтобы реализовать HID.
Ссылка _hid_v1

2

Со стороны компа программку надо для приема и отправки.

3

В статье на хабре она есть

4

Может пригодится кому. Сделал USB HID термометр на f042. DS18B20 на PA2. Программа для линукса писалась в QT Creator, для Windows в Visual Studio 2008 Express Edition. Для линукса создал файл правил, его надо скинуть в /etc/udev/rules.d и выполнить sudo udevadm control --reload-rules, иначе нужно запускать программу через sudo чтобы программа увидела термометр. Ссылка

5

Может пригодится кому, флешка на 2 мегабайта на stm32f042f6p6 и at45db161d (подключена к SPI1, CS на PB1). Код кривой, но работает на win xp, 7, 8.1 и linux. На других не тестировал.
Архив stm32f0_usb_msd_v1.rar тут Ссылка

6

sobs, ты крут, с какой скростью ты это выдаёшь, респект )
Следующее CDC?
Если всё объединить в одно дерево файлов набираются уже альтернативные usb-samples

7

vt340, спасибо)
На самом деле хочу пока структурировать знания, попробовать нормально описать, чтобы не забылось. И придется чуть тормознуть - сессия на носу))

8

sobs
Браво!

9

Написал черновик статьи. Если у кого есть желание посмотрите, может исправить что?
Все кроме печатной платы (осталась на рабочем ноуте, в понедельник добавлю) здесь Ссылка

10

Прочитал, но статьи не мой жанр, так что не могу ни оценить, ни посоветовать )

11

Да не будет рекламой, опубликовал чистовик на паяльнике.
Часть 1
Часть 2
Часть 3

Отредактировано sobs (2017-06-07 10:12:45)

12

Интересно будет ещё и потом почитать комменты )

13

sobs написал(а):

Да не будет рекламой, опубликовал чистовик на паяльнике.
Часть 1
Часть 2
Часть 3 пока не опубликована, как опубликуют ссылку добавлю


Ссылки битые...

14

dosikus написал(а):

Ссылки битые...

у меня открываются.

15

Atomic-dm написал(а):

dosikus написал(а):

    Ссылки битые...

у меня открываются.


У меня тоже. Они есть на главной cxem.net

16

Добавил 3ю часть.

17

sobs написал(а):

У меня тоже. Они есть на главной cxem.net

В огнелисе открываются но только на паяльнике.

sobs написал(а):

Да не будет рекламой, опубликовал чистовик на паяльнике.

А админы паяльника думают что это мы здесь рекламой занимаемся ... :))))) Забанили меня за ссылки на этот форум.

18

Мужики, что значит "crystal-less USB"? Только сейчас обнаружил, что в STM32F042, с которыми собираюсь работать, такая хрень. Это типа от внутреннего генератора сможет что ли работать?
Только толку-то, если для CAN все равно нужен кварц…

19

sobs написал(а):

Сделал USB HID термометр на f042.

Спасибо, утащил — собираюсь термомониторинг ~сотни точек делать на TSYS01. У всех узлов связь по CAN будет, но ретранслятором/мастером для упрощения хочу поставить тоже STM32F042 с USB (сделаю как обычно CDC, чтобы что угодно можно было подключить — хоть одноплатник, хоть комп, уж screen-то в любой системе "из коробки" есть, ну или getty на крайняк).
Ты библиотечку USB сам писал, или где брал?

20

Eddy_Em написал(а):

sobs написал(а):
Ты библиотечку USB сам писал, или где брал?

Сам, но ее можно чутка переделать, с сессии приеду - займусь)

21

Где ж такие умные студенты берутся?
Мне все какие-то совсем уж никакие попадались (из бывшего таганрогского радика).

22

Ахаха) Попадутся еще)
Ну а вообще, я из Беларуси. Учусь заочно в БГУИРе, бывший РТИ.

23

sobs,   stm32f0_usb_v4  и stm32f0_usb_v5  - драйвер не найден,  win7 64.
И при сборке и при прошивке из твоих архивов.
Термометр завелся без проблем. Если не считать кучки мелких ляпов присущих кокосу...

24

dosikus написал(а):

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.

И при сборке и при прошивке из твоих архивов.
Термометр завелся без проблем. Если не считать кучки мелких ляпов присущих кокосу...

Какие были проблемы при сборке и прошивке? И что за ляпы?

Я под хид немного библиотеку переделал, но не документировал. Могу скинуть черновой проект, как есть.

25

Спасибо, счас заценим.

sobs написал(а):

Какие были проблемы при сборке и прошивке? И что за ляпы?


Код:
void USB_Init()


Keil лается на отсутствие void

Код:
	uint16_t temp = (size & 0x0001) ? (size + 1) / 2 : size / 2;
	uint16_t *buf16 = (uint16_t *)buf;


определение  не в начале блока так же не переваривает

Ну и отсутствие SystemInit ...

26

sobs
Спасибо драйвер встал, в устройствах определился.
Как теперь с ним работать со стороны ББ?  Есть какие нибудь программы ?

Код:
Могу скинуть черновой проект, как есть.


Конечно кидай.

27

sobs написал(а):

В #15 сообщении vt430 давал ссылку на архив, там в readme есть ссылка на драйвер и сама программа,


Моя невнимательность...  Перекомпилировал ту демку под 64 и все заработало...
sobs, еще раз спасибо.

Правильно ли я понимаю в твоем проекте с термометром данные передаются через Report ?
И как увеличить размер пакета ?

28

dosikus написал(а):

Keil лается на отсутствие void
определение  не в начале блока так же не переваривает
Ну и отсутствие SystemInit ...

Это скорее к gcc, хотя стандартами не запрещено. SystemInit в стартапе вызывается.

dosikus написал(а):

Правильно ли я понимаю в твоем проекте с термометром данные передаются через Report ?

Да, мне кажется, это удобнее чем через Feature. В stm32f0_usb_hid_v1 данные передаются двумя способами.

dosikus написал(а):

И как увеличить размер пакета ?

Изменить дескриптор репорта. Поля

Код:
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. Практика использования и программирования", свободно ищется в гугле)

dosikus написал(а):

Конечно кидай.

Скинул в ту же папку (Ссылка) каталоги и архивы DDS_Generator_PC для ПК и DDS_Generator_STM32_v0.5 для stm32. Это не полный проект, еще для ПЛИС прошивка нужна, но это к теме не относится. Тут реализована передача только через репорт. Единственное что не нравится, иногда при передаче данных с пк они теряются. Поэтому приходится в программе отправлять данные и читать их, если прочитано не то, то еще раз передавать. А чтение происходит, такое чувство, как из буфера - сначала пару раз старые данные, а потом, наконец, новые. Пока не знаю как побороть, на ПК из меня программист так себе) Это сказывается на времени отклика.

Отредактировано sobs (2017-08-05 11:28:13)

29

sobs написал(а):

Единственное что не нравится, иногда при передаче данных с пк они теряются. Поэтому приходится в программе отправлять данные и читать их, если прочитано не то, то еще раз передавать. А чтение происходит, такое чувство, как из буфера - сначала пару раз старые данные, а потом, наконец, новые.

Кошмар какой
А я ведь предупреждал )

vt340 написал(а):

в этих классах нет никакого практического смысла, ну разве что для развлечения

30

vt340 написал(а):

Кошмар какой
А я ведь предупреждал )

Возможно ты и прав, но не думаю что дело только в этом) Все-таки их используют повсеместно. Грешу пока на себя, а не на классы =)

Отредактировано sobs (2017-08-05 12:34:41)


Вы здесь » Микроконтроллеры » STM32 » USB в STM32F0