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

 
 
> Работа с USBExpress от Silabs, детали использования USB-MCU серии C8051F32х
alvol
сообщение Jan 23 2007, 23:10
Сообщение #1


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

Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119



На сколько я понял Silabs предоставил собственный набор API функций и библиотеки для программирования со стороны компьютера и MCU (AN169 и AN220).

1. При работе с USBExpress используется написанный ими драйвер. Для MCU реализовано виртуальное прерывание и есть возможность определения источника этого прерывания от USB.
В описании работы процессора написано, что для работы с USB используется либо Timer2, либо Timer3.
Интересно какой из этих таймеров нужен для обеспечения работы при использовании библиотек USBExpress?

2. В примерах, которые идут в комплекте с пакетом USBExpress (передача файла FileTransfere) инициализация передачи данных процессора организовывается командой от компьютера (байтовая последовательность), в зависимости от которой процессор отвечает своей посылкой. Необходимо обеспечить непрерывный поток данных с MCU на компьютер. Как организовать работу, при которой ведущим является MCU? Возможно ли это реализовать непрерывным считыванием байтов (отдельным потоком) и специальным управляющим заголовком пакета?

3. Почему строчка описания устройства, которая находится в памяти MCU игнорируется и при подхватывании устройства отображается строка записанная в ini файлах драйвера?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vladec
сообщение Jan 24 2007, 11:28
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



1. По моему, USBExpress никаких таймеров при своей работе не использует.
2. Работа может быть организована только по инициативе ПК, путем подачи с ПК потока команд чтения и записи.
Go to the top of the page
 
+Quote Post
Dmitriy_V
сообщение Jan 24 2007, 21:25
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 57
Регистрация: 31-07-06
Пользователь №: 19 217



Цитата(vladec @ Jan 24 2007, 11:28) *
1. По моему, USBExpress никаких таймеров при своей работе не использует.
2. Работа может быть организована только по инициативе ПК, путем подачи с ПК потока команд чтения и записи.


1 - полностью согласен.

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

3 - отображается только та информация, которая записана в драйвере для соответствующих VID, PID.
Классифицировать подключенное оборудование можно по серийному номеру, который берется из самого устройства.
Go to the top of the page
 
+Quote Post
Warlord
сообщение Jan 25 2007, 09:56
Сообщение #4


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Цитата(Dmitriy_V @ Jan 24 2007, 21:25) *
2 - не совсем так.
Действительно для начала работы с устройством его надо сначала открыть.
Потом можно переслать один пакет со служебной информацией для устройства.
После этого устройство в автоматическом режиме начинает передавать данные на компьютер.
Компьютерная программа проверяет буфер приема и если есть данные для получения
то считывает их.
Когда работа с устройством закончена, от компьютера посылается пакет на прекращение
передачи.
Вот один из примеров алгоритма работы.

Почему же не совсем, именно так, инициатором передачи пакета по usb может быть исключительно хост, т.е. комп. А железка в зависимости от алгоритма отвечает ему. И ни в каком "автоматическом режиме" устройство не будет "передавать данные на компьютер". Работа строится так: Комп шлет информационный пакет "начать передачу", девйас заполняет свою EP(IN) данными и ждет пока комп ее не считает. Комп посылает запрос на считывание, если в EP есть данные, то они пересылаются в буфер драйвера, а оттуда в аппликуху, если нет, то либо железяка отвечает STALL, и драйвер возвращает ошибку, либо ничего не отвечает и комп повторяет запрос, пока железка ему не ответит.
Отсюда вывод, чтобы шла непрерываная передача потока на комп, аппликухе необходимо ПОСТОЯННО запрашивать очередную порцию данных. Обычно это дело выносится в отдельный поток.
Go to the top of the page
 
+Quote Post
alvol
сообщение Jan 25 2007, 12:12
Сообщение #5


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

Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119



Цитата(Warlord @ Jan 25 2007, 08:56) *
инициатором передачи пакета по usb может быть исключительно хост, т.е. комп. А железка в зависимости от алгоритма отвечает ему


а если контроллером просто шпарить на выдачу? у компютреа же есть буфер который просто нужно успевать вычитывать в отдельном потоке, там же после вычитывание можно узнать сколько вычиталось
т.е. вычитывать постоянно независимо знаем мы о передачи с контроллера или нет?
Go to the top of the page
 
+Quote Post
Warlord
сообщение Jan 25 2007, 12:46
Сообщение #6


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Цитата(alvol @ Jan 25 2007, 12:12) *
а если контроллером просто шпарить на выдачу?

Шпарить нужно не просто, а только тогда, когда знаешь что предыдущая пачка забрана, иначе можешь потерять данные.

Цитата(alvol @ Jan 25 2007, 12:12) *
у компютреа же есть буфер который просто нужно успевать вычитывать в отдельном потоке, там же после вычитывание можно узнать сколько вычиталось
т.е. вычитывать постоянно независимо знаем мы о передачи с контроллера или нет?

Здесь все зависит от драйвера железки. Если он поддерживет асинхронный ввод/вывод, и таймауты, то можешь вычитывать, а если нет, то тогда ты рискуешь навсегда зависнуть в попытке чтения, если вдруг передачи с контроллера нет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alvol   Работа с USBExpress от Silabs   Jan 23 2007, 23:10
|- - alvol   Цитата(Dmitriy_V @ Jan 24 2007, 20:25) 1 ...   Jan 24 2007, 23:58
||- - alvol   спасибо, попробуем на практике )   Jan 25 2007, 13:16
|- - Dmitriy_V   Цитата(Warlord @ Jan 25 2007, 09:56) Поче...   Jan 30 2007, 11:33
- - alvol   Интересно, что прерывание в контроллере по факту з...   Feb 9 2007, 20:11
|- - Dmitriy_V   Цитата(alvol @ Feb 9 2007, 20:11) Интерес...   Feb 10 2007, 01:28
|- - alvol   Почитал тут англоязычный форум, судя по этой теме ...   Feb 12 2007, 00:26
|- - Dmitriy_V   Цитата(alvol @ Feb 12 2007, 00:26) Почита...   Feb 16 2007, 02:46
|- - alvol   Dmitriy_V Вы задали в той теме мой вопрос немного...   Feb 16 2007, 18:35
|- - Dmitriy_V   Цитата(alvol @ Feb 16 2007, 18:35) Dmitri...   Feb 16 2007, 20:52
|- - alvol   ага, спасибо есть и на русском и на ихнем родном (...   Feb 16 2007, 22:44
|- - alvol   Решил проблему передачи написав другой вариант про...   Feb 20 2007, 16:17
- - Tarkin   зравствуйте! назрела проблема: возможно ли изм...   Jan 20 2009, 19:05
- - _Sam_   Цитатавозможно ли изменение размера пакета в USBXp...   Jun 13 2012, 13:43


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:04
Рейтинг@Mail.ru


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