реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> PIC32MX USB HOST, Возможно ли применить PIC для решения задачи?
DiMonstr
сообщение Oct 12 2009, 18:07
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Дайте пожалуйста консультацию по применению 32-разрядного контроллера MICROCHIP с поддержкой USB 2.0 OTG. Суть задачи: наобходимо реализовать интеллектуальный 4-х портовый хаб, который может определять с каким VID и PID подключено USB-устройство и если в списке разрешенных устройство отсутствует, то запретить его работу. Предполагаемая структура устройства: PC-HOST <=> PIC32MX440F128H (в режиме device) <=> Parallel Interface <=> PIC32MX440F128H (в режиме HOST) <=> HUB <=> Mouse, Printer, Keyboard, Scaner. Интерфейс между двумя контроллерами PIC - параллельный PMP. Нужно реализовать между двумя контроллерами PIC транзитную передачу пакетов от хоста ПК к хабу и на этапе инициализации устройства подключенного к хабу на шине USB компьютера, контроллер PIC должен сравнивать поля VID и PID в дескрипторе устройства. Возможно ли решить такую задачу с программной точки зрения на контроллере PIC?

Сообщение отредактировал DiMonstr - Oct 12 2009, 18:09
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 12 2009, 19:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DiMonstr @ Oct 12 2009, 22:07) *
Возможно ли решить такую задачу с программной точки зрения на контроллере PIC?

Нет.

Есть несколько путей решения вашей задачи:
1. Поставить FPGA, которая будет парсить поток между хостом и хабом (или, как вариант, сама являться хабом).
2. Поставить МК с хостом, который будет проверять VID/PID устройства перед подключением к "настоящему" хосту.
3. Следить за VID/PID программно со стороны хоста.

ИМХО, если нужно именно аппаратное решение, то вариант 2 является наиболее простым.
Go to the top of the page
 
+Quote Post
evc
сообщение Oct 13 2009, 06:39
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



Цитата(aaarrr @ Oct 12 2009, 23:37) *
Нет...

Почему бы нет?
PIC32MX440F128H (в режиме HOST) и есть МК с хостом.


--------------------
УЭР
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Oct 13 2009, 08:33
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Цитата(aaarrr @ Oct 12 2009, 23:37) *
...ИМХО, если нужно именно аппаратное решение, то вариант 2 является наиболее простым.


Почему нет???
К варианту №2 и подходит контроллер PIC32MX440F128H.
Получится организовать транзитную передачу пакетов???

Одним из первых вариантов было применение контроллера USB фирмы Cypress семейства EZ-HOSTс двумя модулями SIE. Там можно было закольцевать обмен транзакциями между SIE1 и SIE2. Первый
настроить как Device, а второй как Host. Но не судьба - их очень тяжело купитьsad.gif((

Кто-нибудь работал с этим каменем?

Сообщение отредактировал DiMonstr - Oct 13 2009, 08:33
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 13 2009, 11:03
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Спецификацию почитали бы что-ли. Ну как Вы собираетесь девайсом хаб изображать, а?

Вариант 2 предполагает использование аналоговых ключей для коммутации, а не "транзитную передачу пакетов" силами контроллера.
И да, любой МК с хостом в этом случае годится, в т.ч. PIC.
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Oct 13 2009, 16:30
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Цитата(aaarrr @ Oct 13 2009, 15:03) *
Спецификацию почитали бы что-ли. Ну как Вы собираетесь девайсом хаб изображать, а?


Да Вы не поняли. В качестве хаба будет отдельный полностью аппаратный хаб контроллер (например, ISP1520). Восходящий порт предполагается подключить к контроллеру PIC32MX440F128H в режиме хост. К ПК предполагается подключить второй контроллер PIC32MX440F128H в режиме функция. Два контроллера потому, что сложно достать контроллер с двумя портами USB, настраиваемых либо как хост либо функция или OTG. Ну а дальше не буду повторяться.

Этот механизм называется "виртуализация".

Цитата(aaarrr @ Oct 13 2009, 15:03) *
Вариант 2 предполагает использование аналоговых ключей для коммутации, а не "транзитную передачу пакетов" силами контроллера.
И да, любой МК с хостом в этом случае годится, в т.ч. PIC.


А каким образом Вы предлагаете применить аналоговый ключ? Что будет представлять из себя логика работы устройства?

Сообщение отредактировал DiMonstr - Oct 13 2009, 16:33
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 13 2009, 16:51
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DiMonstr @ Oct 13 2009, 20:30) *
Этот механизм называется "виртуализация".

И Вы готовы наворотить гору весьма сложного софта для контроллеров и драйверов со стороны хоста?

Цитата(DiMonstr @ Oct 13 2009, 20:30) *
А каким образом Вы предлагаете применить аналоговый ключ? Что будет представлять из себя логика работы устройства?

Устройство получается очень простое:
Ставим стандартную ИС хаба, внешние разъемы через мультиплексоры могут быть подключены либо к соответствующим
портам хаба, либо к порту микроконтроллера. При подключении нового устройства сначала при помощи МК смотрим VID/PID,
затем, если они относятся к числу разрешенных, коммутируем устройство на хаб.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 13 2009, 19:22
Сообщение #8


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



PIC-и никак не пойдут.
А вот это устройство сможет сделать то что вам надо.
http://www.alylab.eu/OpenProjects/ARMUltimator2/ARMU2.htm

В i.MX27 есть специальный режим на USB прозрачного перенаправления с одного USB порта на другой и при этом процессор может слушать обмен.
В случае чего запрещенного берет и глушит обмен.
Ну и FPGA на крайний случай может помочь.
Простым контроллером USB-дивайса никакого процессора очевидно не сделать чисто эмуляцию восходящего порта хаба.
И потому что в шине USB часто валит полный поток даже когда никто из дивайсов ничего не передает.
И потому что контроллер процессора чтобы понять что ему передают должен принять пакет т.е. в USB от него всегда уйдет ACK, а очень часто надо и NAK передавать, и это еще не касаясь синхронизации и прочих жестких таймингов.


Цитата(DiMonstr @ Oct 12 2009, 21:07) *
Дайте пожалуйста консультацию по применению 32-разрядного контроллера MICROCHIP с поддержкой USB 2.0 OTG.
Go to the top of the page
 
+Quote Post
DiMonstr
сообщение Oct 14 2009, 11:03
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Цитата(aaarrr @ Oct 13 2009, 20:51) *
И Вы готовы наворотить гору весьма сложного софта для контроллеров и драйверов со стороны хоста?


Конечно нет! Поэтому и ищу другие варианты решения этой задачи.

Цитата
Устройство получается очень простое...


Я накидал структурную схемку на бумажке. Что получилось - на фотке во вложении.
Правильно ли я думаю, что в этом случае необходимо будет реализовать следующие функции:
1) управление мультиплексорами;
2) контроллер должен определять к какому порту USB подключили (отключили) девайс и подключать его к себе управляя двумя мультиплексорами. Тут два варианта: либо с помощью хаба, либо дополнительной микросхемы;
3) контроллер должен уметь запрашивать дескриптор устройства и дескриптор серийного номера;

Если это так, то получается действительно очень простоsmile.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 14 2009, 11:20
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DiMonstr @ Oct 14 2009, 15:03) *
2) контроллер должен определять к какому порту USB подключили (отключили) девайс и подключать его к себе
управляя двумя мультиплексорами. Тут два варианта: либо с помощью хаба, либо дополнительной микросхемы;

Достаточно и одного мультиплексора - выходы, идущие к контроллеру, вполне можно и запараллелить. Управлять однозначно от контроллера, плюс от хаба нужно будет получать статус подключения устройства.

Цитата(DiMonstr @ Oct 14 2009, 15:03) *
Если это так, то получается действительно очень простоsmile.gif

Ну, как мы знаем, дьявол скрывается в деталях.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 03:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016