Pull to refresh

Comments 36

Чтоб не переключать раскладку? ;)
В текстовых редакторах есть такая вещь, как функция поиска и замены слов с учетом регистра. После замены читаемость текста повысилась бы.
Переключатель раскладки на CapsLock для этого весьма удобен. Даже очень. Но дело привычки.
Вообще то я привык работать с клавиатурой, на которой были клавиши РУС и ЛАТ — кто видел, тот поймет о чем речь.
Еще 1 приз в студию.
Я ее как-то в присутствии руководства ПО чинил легким постукиванием о стол, переходящим в тяжелое постукивание. И починил таки.
Видел, но уже не щупал. На современных компах такой вариант тоже вполне можно сделать, если привычней: habrahabr.ru/post/156779
Очень интересный пост, спасибо.

Вопрос: где можно почитать о программной реализации Low-speed USB интерфейса на выводах общего назначения (GPIO)?

Как вы решили для себя вопрос Vendor ID и драйверов? Пишете драйвера под ОС сами? Что насчет Microsoft Driver Signing? Можно ли делать драйвера USB-устройств, используя UMDF, чтобы не нужно было платить за их испытания и сертификацию?
Ну в первую очередь на Atmel у них там лежат AppNotes с исходниками. Есть перевод www.gaw.ru/html.cgi/txt/app/micros/avr/AVR309.htm
У Microchip тоже было и тоже в аппах, но мне AVR ближе.
Вообще очень увлекательное чтение исходников, после того, как я их понял, вопросов по USB стало намного меньше, так что программную реализацию можно рекомендовать просто для понимания работы интерфейса.

С VID и PID то же что и все — изготовитель STM номер с демо платы. Конечно же так нельзя а что делать?
Жду пока кто-нить начнет продавать ПЗУ с уникальными номерами, как сделали с MAC адресами.
Для open hardware есть ещё довольно новый вариант с pid.codes
А смотря какие девайсы. По сути, ты можешь брать любой VID, без покупки у USB-IF, можешь ещё какие допущения делать, но если ты начнешь продавать такие девайсы с наклейкой «USB бла бла», то можно отгрести по шапке. Ну и конфликты на твоей совести. По поводу дров: тут тоже от девайса зависит. Можешь делать стандартные классы: HID, UVC, UAC и т.д., тогда будут использоваться стандартные, либо вообще возиться с устройством при помощи libusb (на винде isochronous передачу не поддерживает), плюс девайсу можно, начиная с Win8 автоматом зарегистрировать WinUSB драйвер (нужен для libusb), либо устанавливать его из приложухи (курить в сторону zadig и libwdi).

Что насчет Microsoft Driver Signing? Можно ли делать драйвера USB-устройств, используя UMDF, чтобы не нужно было платить за их испытания и сертификацию?


Попробую спросить, если не забуду.

Вопрос: где можно почитать о программной реализации Low-speed USB интерфейса на выводах общего назначения (GPIO)?


Выше уже написали про V-USB, добавлю сюда TinyUSB.

Кстати, если вдруг захочется USB 3.0, то можно поглядеть на Cypress EZ-FX3. Всем хорош, но дорогой, зараза.
По сути, ты можешь брать любой VID, без покупки у USB-IF

Я бы для коммерческих устройств так не делал. Как-то совсем несерьезно.

А вообще, интерфейс USB разрабатывался уже тогда, когда были микросхемы/контроллеры с достаточной памятью, чтобы разместить в ней 128-битное число (UUID). Да и сложность протокола предполагает, что на 155й рассыпухе USB-интерфейс не реализовать в разумных габаритах. Поэтому то, что они зарезервировали только 16 бит на VID — это намеренно с целью впоследствии получать деньги из воздуха за продажу VID.

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


Если я правильно понял, то, у компании, на которую мы сейчас аутсорсим, до недавнего времени и был такой вот «блатной» VID. Официальный купили только недавно. Компания достаточно известная в определённой сфере. Но вообще — да, я с вами полностью согласен.
Одно но, покупая VID, вы так же обязуетесь выполнять определённые требования, что бы вы могли без зазрения совести ставить на девайсе USB-compatible. В частности, устройство должно соответствовать определённым требованиям. Компании, которая заплатила немалые деньги за VID, как-то стрёмно будет его потерять, если они не будут обеспечивать какой-то минимальный уровень соответствия своих девайсов требованиям. Подробности нужно гуглить, меня больше интересовали технические аспекты, но суть, примерно в этом.
Разумеется, стандарты надо соблюдать, и даже если я не хочу платить шальные деньги за сертификационные испытания — мне будет спокойнее, если мое устройство максимально соответствует стандарту. Иначе пойдут рекламации, возвраты, траты времени и средств на техподдержку. Или того хуже — судебные иски.
есть предопределенные VID и PID, за которые нет нужды платить. К ним точно относится HID, и вероятно какая то версия CDC.
Если вы делаете устройство для себя, то нет нужды лицензировать такой интерфейс. Это справедливо и для теста. Если же на продажу, то вопрос уже переползает в коммерческую сторону с вытекающим ответом.
HID-классы и VID-PID не связаны. При одинаковых идентификаторах, HID может быть любым. Но готовьтесь к проблемам, с такими устройствами. Если классы разные, при одновременном подключении, работать будет только одно из них.
Тогда по вашему выражению получается так, что два устройства на одинаковом чипе от FTDI не должны функционировать вместе. В реальности очень даже работают. При этом пары совпадают. Есть еще уникальный идентификатор устройства, привязанный к конкретной шине USB.

Они работают, потому что имеют общий HID и соответственно используют одинаковые драйвера.
Не мешайте тёплое с мягким: класс устройства — это всего лишь набор дескрипторов, обязательный из которых только один (если не ошибаюсь) — device descriptor, который, собственно, и содержит в себе 2 байта VID и 2 байта PID. Остальные дескрипторы определяют или стандартизированные классы, типа HID, CDC и иже с ними, и тогда с ними может работать какой-то стандартный драйвер (много вы на клаву ставите дров?), или какой-то свой кастом, для работы с которым нужен или свой драйвер или user-space утилита (libusb, но в винде нужен generic драйвер WinUSB, выше писал уже). Кроме того класс устройства определяет протокол общения с ним, который описан и стандартизирован (как и сами дескрипторы): www.usb.org/developers/docs/devclass_docs

По поводу бесплатных VID:PID — есть оные для прототипов. Ещё раньше практиковалось: компания покупает один или несколько VID и продаёт нуждающимся конкретные пары VID:PID, что выходило существенно дешевле и было выгодно для всякой мелкосерийки. Но USB-IF в какой-то момент начало с этим бороться. Подробностей не скажу. Можно попытаться нагуглить такое, может отголоски ещё существуют.
Никто не будет ставить полноценный USB в МК промназначения, там нужнее CAN.
Эт точно.
На Саяно-Шушенской ГЭС стояли датчики вибрации подключенные по USB.
Как известно ими не пользовались либо не обращали внимания. Видимо отваливались часто.
И что с этой ГЭС стало все знают.

В промконтроллерах строго либо RS485, либо CAN, либо последняя мода — EtherCAT

А выбирая контроллер с USB еще очень важно планировать заранее от чего он будет тактироваться.
Может оказаться, что одни скоростные интерфейсы (тот же Ethernet) по частотам не совместимы с частотами нужными для USB.
Лучше когда SoC имеет для USB свой отдельный генератор.
И что с этой ГЭС стало все знают.

Неужели это из-за датчиков? ;)
Правильное замечание насчет тактирования, но во всех контроллерах с PHY USB, которые я видел, был дополнительный резонатор (на 25 МГц), поэтому я и решил, что это как бы безусловно есть.
По поводу ГЭС:
Нет плохих судов, нет плохих ветров, есть плохие капитаны.
Судя по количеству аббревиатур, отсутствию «воды» в тексте и вообще предельно насыщенному изложению, автор явно начинал работать еще во времена i8051.
И, в целом, это правильно. Не хватает, правда, пару примеров железяк, у которых есть USB, но есть узкие места в реализации…
Хотя, вспоминаю одну статью с цветомузыкой, где автор схему разбил на блоки функциональные, обозвал их аббревиатурами, и потом ими оперировал… но и это было в тему.
Более того, автор начинал еще во времена i8048 (1816ВЕ48) и у меня в 4кбайт УФ ПЗУ жила телефонная станция.
Так что, когда я приобрел 1816ВЕ51 и к нему электрически!!! стираемое ППЗУ на 16 кбайт, то понял, что теперь то я смогу сделать все, что угодно. И многое делал, хотя и не все.
Кстати по поводу отсутствия «воды» — это действительно так или тонкий троллинг? Дело в том, что я пытаюсь писать лаконично, но все время что то постороннее врывается в текст. Это действительно не раздражает, мои легкие лирические отступления? Все-таки стиль типа «Он пошел, она сказал» мне кажется суховатым.
Раз уж зашел разговор о сжатости текста, позволю себе процитировать роман Хема в шесть слов
«Продается детская обувь, ни разу не надевалась» и что бы там не думали критики, это действительно роман.
Кстати по поводу отсутствия «воды» — это действительно так или тонкий троллинг?

Нет, это не троллинг. Я просто обратил внимание, что текст написан, как и программа под 8051 — ничего лишнего, каждое предложение информационное :)
Сокращения правда лишнее… Читать немного напрягает. Очущение, как будто читаешь документацию советского периода. Автозамена есть во всех нормальных wordprocessor'ах. Лирические отступления нужны, чай не документацию и не дожностную инструкцию пишите…
Вместо сокращений я бы привёл английское название терминов, чтобы потом, читая даташиты, понимать о чем речь… Ну и кратенький обзор МК c которыми работали (их явно больше чем два) был бы не лишний.
А так, да… Очень полезная статья. Такое в мануалах не вычитаешь…
А по мне еще надо разбавить какими-нибудь картинками по теме, между абзацами. Для придания популяризационности статье.
Sign up to leave a comment.

Articles