Перейти к содержанию
    

at90USB? выбор контроллера

Здравствуйте профессионалы.

Подсоветуйте какой контроллер с USB использовать под следующие задачи:

1. Переходник (Ps/2 mouse + ps/2 kbd + com) <-> USB. При этом все в один конец USB.

Начитавшись ф том числе и на этом форуме, понял что стоит реализовывать составное USB устройство.

2. USB kbd + USB mouse + USB (что то еще, возможно виртуал com). Все устройства могут подключатся поотдельности, а также подсоединятся к USB kbd, как к концентратору.

 

Задачи раздельные, но контроллеры хотелось бы использовать одинаковые, дабы меньше геммороя.

1. Пока выбрал at90usb atmel а. Потянет ли он задачу номер один по ресурсам? или 8ми битами уже не обойтись? или вообще стоит взят что то другое?

2. В задачке 2 как реализовывать концентратор? есть стандартные решения?

 

Ну и вообще у какого какой опыт создание HID клавиатур, мышей, на чем?

а составные USB устроуства?

 

окажите помощь советом=)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте профессионалы.

Подсоветуйте какой контроллер с USB использовать под следующие задачи:

1. При этом все в один конец USB.

Начитавшись ф том числе и на этом форуме, понял что стоит реализовывать составное USB устройство.

2. ... Все устройства могут подключатся поотдельности.

 

 

Вы видимо что-то не так себе представляете - составное устройство реализуется логически а не на одном чипе - если вам так нажна одна дырка то вам прийдется сначала сделать USB концентратор а потом подключать каждый контроллер со своей реализацией USB устройства к компьютеру. Либо у вас подключаются все устройства совместно, либо это разные устройства подключаемые через USB HUB (ну тогда уж проще купить всё в китае через интернет за 15 баксов с доставкой)

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задачи раздельные, но контроллеры хотелось бы использовать одинаковые, дабы меньше геммороя.

1. Пока выбрал at90usb atmel а. Потянет ли он задачу номер один по ресурсам? или 8ми битами уже не обойтись? или вообще стоит взят что то другое?

2. В задачке 2 как реализовывать концентратор? есть стандартные решения?

Потянет, конечно. Все эти интерфейсы (Ps/2 mouse + ps/2 kbd + com) медленные, потому даже один МК этого типа справился бы даже одновременно со всеми тремя задачами.

 

Может быть не стоит делать 3 разных устройства, а стоит сделать всего одно - с одним МК и со всеми тремя разъемами? Тогда и концентратор никакой не будет нужен. Потому что, как только вы решитесь делать USB-концентратор на одном из устройств, то придется вам вводить его в HOST-режим, чтобы могло оно командовать теми, что в него втыкаются. А это все достаточно сложно. И опять же разъемы придется делать для взаимной коммуникации модулей.

 

Гораздо проще сделать на устройстве все 3 гнезда (Ps/2 mouse + ps/2 kbd + com), тем самым срастив все три устройства в одно. Тогда и не надо будет мучиться с вопросом, как эти устройства между собой стыковать и что-то там концентрировать. И в производстве будет много дешевле, т.к. на все один корпус, а не три. И по деталям тоже в 3 раза дешевле.

 

А один единственный USB-контроллер (AT90) вполне может выглядеть со стороны компьютера, как несколько устройств, т.к. это не от числа проводов зависит, а от его внутренней программы. Если запрограммируете много "конечных точек", то и будет этот МК трудиться за троих, и комптютер будет видеть его в трех разных лицах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тоже думаю что всё на одном чипе будет лучше - но рекомендую не 90USB а всёже u2/u4 (mega32u4 например) - они поновее, подешевле, получше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так, все меня не очень поняли, значит плохо написал.

В посте описано 2 различных задачи, их хочется реализовать на одном типе контроллера, дабы не разбираться дважды. Итак 2 НЕСВЯЗАННЫЕ ЗАДАЧИ:

1. Составное USB устройство на одном контроллере пока at90usb. посути переходник Переходник (Ps/2 mouse + ps/2 kbd + com) <-> USB.

 

2. А вот тут модульное устройство. Модульность это в ТЗ, от нее никуда. . USB kbd + USB mouse + USB (что то еще, возможно виртуал com). USB kbd ведущее, если оно используется, то два других модуля подключ через него, но они могут быть подключены напрямую.

 

Новый вопрос: а бывают USB-концентратор в виде готового чипа. Т.е. что то типа ftdi, где припаял и пользуеш?

 

mega32u4? а чем его шить? в наличии есть только avrisp. JTAG никак не купить.

 

Xenia, спасибо, только про концентратор как?

 

follow_me, тож спасибо. Нужно и модульное устройство и немодульной, 2 разные задачи. Тут есть мнение, что возня с состаным устройством это неподъемно долго и следует 2 задачи решать одинакого, т.е. 3 usb устройства + hub. В одном случае они в одном корпусе, а в другом модульно. Мне правда дико не импонирует лепить 4 крисала, там где можно один.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TUSB2046 - четырехпортовый USB1.1 хаб. Обвязки минимум - пример включения есть на радиокоте. Два бакса у распоследних спекулянтов. Вообще, поройтесь на ti.com, там их много всяких, можно и семплы заказать. Гнаться за USB2.0 для HID думаю не имеет смысла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

mega32u4? а чем его шить? в наличии есть только avrisp. JTAG никак не купить.

Оно - обычный AVR. Чем угодно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ATmega32U4 не понял чем оно лучше?

А вот всего 32кб флеши не нравится никак.

Не ради флеши. Алгоритмически задача пересылки данных проста, и тут много флеши под программу не надо. Проблема в недостатке внутренней ОЗУ, которая тут зовется SRAM. Если вы возьмете AT90USB162, то его 16 К флеша для задачи вполне хватит, но 512 байт SRAM будет маловато.

 

ОЗУ нужна под буфера ввода-вывода. Ведь USB - "одностороний интерфейс", который управляется командами со стороны хоста (здесь персональным комьютером) где-то 1 раз в милисекунду (1000 гц). А при его сильной загруженности и того реже. Поэтому придется накапливать передаваемые байты в каких-то массивах, организуя FIFO, чтобы обеспечить непрерывность работы (копить, пока хост не запросит данные). Причем, очень возможно, что понадобится два отдельных буфера - один на передачу по USB, а другой на передачу по RS-232. Хотя для мышки и клавиатуры второй буфер не актуален.

 

Удобно брать буфер размером в 256 байт, тогда он очень просто сворачивается в кольцо, если для его индекса выбрать однобайтовую переменную или регистр. Но можно сделать и короче - 128 или 64, если при инкрементации индекса занулять старшие биты. Без промежуточного буфера стрёмно прогу написать, потому что те аппаратные буфера, который байты туда-сюда по USB отсылают, задействуются автоматически. И вам придется их наполнять и опустошать сразу по приходу прерывания готовности, а не ожидать пока по байтику перекапаете на медленный UART.

 

Промежуточные буфера традиционно используют во многих конверторах, когда скорости входных и выходных потоков отличаются или могут иметь вынужденные кратковременные задерки. Впрочем, я не стану так уж категорически утверждать, что без промежуточных буферов сделать надежной работу конвертора невозможно. Скажу лишь, что у меня это не получилось.

 

Так вот у AT90USB162 маловато SRAM для буферов, т.к. там еще стеки надо городить, а на это тоже память уходит. А следующим в линейке AT90USB будет уже AT90USB646, который по числу выводов уже монструозный (16х4), хотя SRAM у него достаточно - 4 КБайт. А вот ATmega32U4 по размеру SRAM составляет 2.5 КБайт, что уже вполне достаточно. Возможно, что уже ATmega16U4 вам годится, т.к. там 1.25 КБайт SRAM, т.е. в 2.5 раза больше, чем у AT90USB162.

 

Радует, что ATmega16U4 и ATmega32U4 по корпусам и выводам одинаковые. Поэтому вы можете ориентироваться на ATmega32U4, как вам верно подсказал Dx!, а когда на макете у вас все это нормально заработает, то можно испытать ATmega16U4, уменьшив размеры буферов. Или сразу писать прогу под ATmega16U4, а если не влезете, то впаивать ATmega32U4. В любом случае, вы не потратите лишних сил и времени, т.к. какой-то из этих МК наверняка удовлетворит ваши запросы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, просто открываешь мне глаза=)

 

Про буферы не очень понятно, что там собственно накапливать?

 

По цене и давнему желанию приобщится к арму теперь смотрим на LPC1343 под те же задачи.

Изменено пользователем pil

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По цене и давнему желанию приобщится к арму теперь смотрим на LPC1343 под те же задачи.

В правильном направлении двигаетесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...