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

 
 
> Организация обмена по шине USB, вопрос
sergunas
сообщение Feb 13 2006, 10:54
Сообщение #1


Местный
***

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



Как правильно организовать обмен между клиентским ПО на компьютере и Firmware в микроконтроллере устройства?
Система следующая:
- ПЛИС;
- микроконтроллер с Firmware;
- внешний контроллер шины USB (ISP1582).
USB используется: для инициализации/чтения регистров и массивов памяти ПЛИС.

Как вижу это сам, но не знаю насколько это корректно и рационально:
1) Для передачи данных использовать конечные точки: EP1 OUT bulk и EP1 IN bulk.
2) По контрольной конечной точке от компьютера передавать следующие команды:
- установить режим 1 : приём чередующихся слов адреса и данных. То есть в этом режиме нечётные слова пакета EP1 OUT интерпретируются как адрес, а чётные - как данные. Соответственно, можно осуществлять инициализацию регистров по их адресам. Последним словом в посылке может быть и адрес.
- установить режим 2 : приём чистых слов данных. Принимаемые данные будут писаться по последнему использовавшемуся (в режиме 1) адресу. Так скажем можно осуществлять инициализацию массивов памяти.
- команда запроса N слов данных. Соответственно, заданное количество слов читается по последнему использовавшемуся (в режиме 1) адресу и передается компьютеру по EP1 IN bulk.

Внешний контроллер имеет свой буфер. Умеет сам принимать пакеты, формируя ответный ACK. Контроллер умеет вырабатывать сигнал прерывания для микроконтроллера от сигналов ACK, NAK, NEYT. Предоставляет возможность двойной буферизации данных.

3) Настраиваем прерывания только от ACK.
4) Алгоритм чтения со стороны клиентского ПО:
- передаём по контрольной точке команду чтения и число запрашиваемых слов данных;
- ждём завершения обмена по контрольной точке;
- читаем запрошенное количество данных по EP1 IN;
- переходим к передаче следующей команды.
Алгоритм записи со стороны клиентского ПО:
- передаём по контрольной точке команду установки режима записи;
- ждём завершения обмена по контрольной точке;
- передаём любое количество данных по EP1 OUT;
- переходим к передаче следующей команды.

5) Алгоритм обработки прерываний в Firmware:
- не выполнять команду, если в буфере EP1 OUT есть данные.

Заранее благодарен за любые советы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Abo
сообщение Feb 16 2006, 09:11
Сообщение #2


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

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



А что, опыт работы с ISP1582 уже есть? Если нет то надо начать с этого - просто заставить устройство определяться на шине и реагировать на стандартные запросы. А так, алгоритм стандартный - должен работать.
Go to the top of the page
 
+Quote Post
sergunas
сообщение Feb 28 2006, 15:00
Сообщение #3


Местный
***

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



пока что Firmware ещё не дописал, но для реализации обслуживания нулевой точки пока не вижу проблем, а вот свои данные передавать пока толком не уверен как. Вообще, ISP1582 и документация к ней очень мудренная, замучился уже... Так что ищу соратников по проблеме ISP1582, у самого есть несколько мелких непонятностей

Сообщение отредактировал sergunas - Feb 28 2006, 15:06
Go to the top of the page
 
+Quote Post

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

 


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


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