Как стать автором
Обновить

Комментарии 32

А почему не таймеры?
Обмен происходит в прерывании 1 миллисекунда от таймера. Состояние пинов нужно менять синхронно. Да и не сможете Вы работать с прерываниями на 1.5 мегагерц. А так у меня процессор практически свободен. Опрос устройств происходит не каждую миллисекунду. Да и не всю. Процессор занят процентов на 5

Для таких дел DMA хорошо подходит. Делаешь в памяти данные для записи в GPIO порты и потом по таймеру ДМА сам дергает ножками в весьма хорошей скоростью и точностью. Так же и принимать можно — ДМА читает порт поу таймеру и складывает в память. Делаешь оверсампл в 3-4 раза и потом легко восстанавливаешь входные данные. Я так софт-uart делал на lpc1769.

В данном случае — не сработает. У каждого контроллера — свои особенности. И у каждого протокола -тоже. Ну хотя бы тупо не успеете переключить ножки с приема на передачу. Нужно поймать условие завершение передачи устройством пакета (это ноль на двух линиях) и ответить ACK- ом в 6 циклов. А если влезете с чтением из памяти процессором при работающем dma то побьете времена. USB — очень противный протокол для программиста.

Да, bitbang USB это развлечение не для слабонервных. Снимаю шляпу. :-)

Это даже скорее bitsex. С уклоном в мазохизм.

На stm32f103 скорость всего 3МГц. На stm32f411 16 МГц. ДМА несколько переоценивают. Так можно делать только низкоскоростные протоколы или медленный PWM

Спасибо, не знал. На lpc17хх ДМА тактируется от CCLK — те же 100/120MHz что и core, если память не изменяет.

ну я честно не помню чем тактируется ДМА, я измерял именно скорость вывода память — порт

Наверное это because you can задача, потому что pill на STM32F401, который умеет аппаратный USB host, продают на али за меньше $3.

Не совсем.
1 можно подключить больше 4 устройств одновременно без хаба и к 401 тоже, таким же манером, через GPIO.
2 401 из коробки с хабом не работает. С клавиатурой как на картинке- тоже не работает -она комбинированная мышь и клава. Хотите переписать для него HAL?

Ага, об этом в предыдущей статье было, понял, спасибо.

HAL как раз переписывать не надо, а добавить поддержку устройств! USB Hub-а с полгода тому назад не было. Но на github видел, но не пробовал!
А я пробовал. С лету не заработало(конфликты в версиях), а возиться было лень, проще переписать с нуля… И где то проскакивала инфа, что у стм-ок какой баг в железе, что затыкается в работе с хабом в случайные моменты времени. Так что плюнул и бросил. Вообще, довольно сложно встроиться и исправить криво построенную экосистему(даже если писал сам :). Если только на работе и за зарплату. А просто так — ну ее нафиг, пусть ST сама свои баги чинит
Я писал поддержку rndis usb hs устройства — lte модем, на основе cdc, на stm32f4. Работает, не падает. И поддержку виртуального порта — команды модема. Но на этом всё.
А почему должен был падать? Сторона устройства (device side) у стм-ок отлично отлажена и работает.
Не точно описал: делал Host для rndis, а не само устройство. Но и хаб начинал, но задача с хабом отпала. На сколько я помню там чисто протокольный уровень
USB-HS -(480mbit) только с внешним PHY( c ним тоже бывают проблемы). Опять не тот случай. STM3F4XX -там уже начинает быть маловато, тяжело им.
Отлаживать хост ещё можно, ты управляешь всеми операциями на порту, а вот устройство сложнее
Все относительно. Хост просто объемнее, устройства -разные, нужно разговаривать со всеми, хотя бы одного класса. А по таймингу — да, хост проще, поскольку он активно ведет протокол.
Какие-то сомнения закрались про 4.12 в 81-м году. Поскольку дословно помню диалог с одним строителем в те годы.
— У вас крышки для унитазов есть? (Большой дефицит в те времена)
— Есть, по 5.30 и по 6.20
Пришлось уточнить в гугле, 4.12 это до 81-го года, после 81-го 5.30
:) @
Стишок из СССР: (про водку)
было три, а стало пять — всё равно берём опять!
даже если будет восемь — всё равно мы пить не бросим!
передайте Ильичу — нам десять по плечу,
ну а если будет больше — то получится как в Польше!
ну, а если — двадцать пять — Зимний снова будем брать!

Прошло 25 лет…

Вот она уже и двести, Зимний все ещё на месте.

3.62 цена одной полулитровой бутылки водки «Московская» — по разным сведениям, примерно 1968—1980 гг.
Снится мне по ночам
Продавщица одна.
Позабыть я не в силах молодку.
Улыбаясь, застенчиво шепчет она:
«С вас 4.12, за водку»
А чем Вы смотрите сигналы? Я про скрин программы.
Спасибо, pulseview не признал)
Супер!
Давно мечтаю сделать USB перекл.ючатель который позволит подключить клаву и мышу к нескольким компьютерам. И что-бы можно было переключаться между компами сочетанием клавиш. Насколько я понимаю, нужно подключить клаву и мышу контроллеру с USB — host, а он уже будет отправлять другому контроллеру который USB клиент?
Да, можно, но понадобится две таких таблетки, по одной на каждый компьютер. Программно ведь реализован только хост а не девайс, который на ней только один.

Не хотите взять на алиэкспресс квм типа Aimos? Есть на два компа тысячи за две, есть на четыре тысячи за 3.5. Переключаются последовательным нажатием клавиш — Ctrl, Ctrl, 1/2/3/4.
Единственно, клавиатура A4 tech KV-300H плохо работает, наверное из-за встроенного USB хаба, но её можно воткнуть в другое гнездо, потеряв возможность управления через hot key.

насколько я понимаю, у подобных переключателей все USB устройства переопределяются при каждом переключении. Еще нельзя сделать переключение между компами комбинацией клавишь на клавиатуре.

Переключение комбинацией клавиш есть! В моём два варианта: Ctrl + Ctrl + 1 ( 2/3/4), или Scroll + Scroll + 1 ( 2/3/4). Девайсы можно погуглить по словам Hotkey kvm switch. Насчёт переопределения USB устройств при переподключении — согласен, переопределяются. А вы хотите сделать чтобы kvm был как постоянно подключённый хост, который транслирует данные от дочерних устройств?

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.