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

 
 
 
Reply to this topicStart new topic
> CY7C68013A:проблема с Bulk Transfer
Sh@dow
сообщение Jul 15 2010, 12:38
Сообщение #1


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

Группа: Участник
Сообщений: 107
Регистрация: 12-03-07
Пользователь №: 26 065



Здраствуйте.
Использую CYC68013A чип для обмена данными между устройством и PC.PC шлет пакет размером 512 байт используя bulk transfer (IOCTL_EZUSB_BULK_WRITE). Драйвер ezusb.sys. Чип сконфигурирован в режиме SlaveFifo.
Проблема в том что третья отсылка подвешивает функцию DeviceIOControl и управление не возвращается.
Для двух успешных отсылок прерывание на чипе просходят и на третьей нет.
Я посмотрел софтварным USB сниффером.При успешных передачах каждый раз уходят два пакета:один с данными а другой сниффер показыват как "Bulk transfer succeded". При третьей передаче уходит только пакет с данными а пакета "Bulk transfer succeded" нет.
В связи с эти вопрос,сколько пакетов уходит при bulk transfer и кто отвечает за второй пакет подтверждения?
Сам чип или драйвер PC?Должен ли чип подтверждать успешность приема?


Go to the top of the page
 
+Quote Post
-Al-
сообщение Jul 16 2010, 07:31
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894



Цитата(Sh@dow @ Jul 15 2010, 16:38) *
Здраствуйте.
Использую CYC68013A чип для обмена данными между устройством и PC.PC шлет пакет размером 512 байт используя bulk transfer (IOCTL_EZUSB_BULK_WRITE). Драйвер ezusb.sys. Чип сконфигурирован в режиме SlaveFifo.
Проблема в том что третья отсылка подвешивает функцию DeviceIOControl и управление не возвращается.
Для двух успешных отсылок прерывание на чипе просходят и на третьей нет.
Я посмотрел софтварным USB сниффером.При успешных передачах каждый раз уходят два пакета:один с данными а другой сниффер показыват как "Bulk transfer succeded". При третьей передаче уходит только пакет с данными а пакета "Bulk transfer succeded" нет.
В связи с эти вопрос,сколько пакетов уходит при bulk transfer и кто отвечает за второй пакет подтверждения?
Сам чип или драйвер PC?Должен ли чип подтверждать успешность приема?

Вы из чипа-то данные выгребаете?? Там по умолчанию FIFO на два кадра.
PS а зачем ezusb?? Есть вполне вменяемый CyAPI...
Go to the top of the page
 
+Quote Post
Sh@dow
сообщение Jul 16 2010, 12:02
Сообщение #3


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

Группа: Участник
Сообщений: 107
Регистрация: 12-03-07
Пользователь №: 26 065



Цитата(-Al- @ Jul 16 2010, 11:31) *
Вы из чипа-то данные выгребаете?? Там по умолчанию FIFO на два кадра.
PS а зачем ezusb?? Есть вполне вменяемый CyAPI...


Спасибо.
Именно в этом была проблема.Теперь вычитываю и все работает.
Возник только такой вопрос:
Скажем хост шлет 4 байта,соответсвенно вычитывать весь FIFO нет смысла.Можно как-то опустошить оставшиеся 508 байт в FIFO?
Go to the top of the page
 
+Quote Post
-Al-
сообщение Jul 16 2010, 14:42
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894



Цитата(Sh@dow @ Jul 16 2010, 16:02) *
Спасибо.
Именно в этом была проблема.Теперь вычитываю и все работает.
Возник только такой вопрос:
Скажем хост шлет 4 байта,соответсвенно вычитывать весь FIFO нет смысла.Можно как-то опустошить оставшиеся 508 байт в FIFO?

Вычитывайте, пока флаг empty fifo не появится. В принципе лишнего ничего вычитывать не надо. Повторю еще раз, FIFO на два кадра максимум по 512 байт, а не на 1024байта. Т.е. если пошлете два кадра и в каждом будет по байту - все FIFO заполнятся и послать Вы ничего не сможете, пока не вычитаете. Всё это происходит внутри, Вам лишь остается следить за флагами.
Go to the top of the page
 
+Quote Post
Sh@dow
сообщение Jul 16 2010, 18:24
Сообщение #5


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

Группа: Участник
Сообщений: 107
Регистрация: 12-03-07
Пользователь №: 26 065



Цитата(-Al- @ Jul 16 2010, 18:42) *
Вычитывайте, пока флаг empty fifo не появится. В принципе лишнего ничего вычитывать не надо. Повторю еще раз, FIFO на два кадра максимум по 512 байт, а не на 1024байта. Т.е. если пошлете два кадра и в каждом будет по байту - все FIFO заполнятся и послать Вы ничего не сможете, пока не вычитаете. Всё это происходит внутри, Вам лишь остается следить за флагами.


Тоесть FIFO на два кадра а не на два по 512 байт? Если пришел один кадр то FIFO заполнен но не на 512 байт а на столько на сколько было в кадре?Вычитав столько сколько было в кадре мы опустошили FIFO и тем самым подняли флаг?
Что прочитается если читать пустой FIFO?
Go to the top of the page
 
+Quote Post
-Al-
сообщение Jul 16 2010, 20:44
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894



Цитата(Sh@dow @ Jul 16 2010, 22:24) *
Тоесть FIFO на два кадра а не на два по 512 байт? Если пришел один кадр то FIFO заполнен но не на 512 байт а на столько на сколько было в кадре?Вычитав столько сколько было в кадре мы опустошили FIFO и тем самым подняли флаг?
Да.
Цитата
Что прочитается если читать пустой FIFO?
Без понятия, и зачем читать то, чего нет?? Используйте флаги.
Go to the top of the page
 
+Quote Post
Sh@dow
сообщение Jul 19 2010, 13:36
Сообщение #7


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

Группа: Участник
Сообщений: 107
Регистрация: 12-03-07
Пользователь №: 26 065



Возникла проблема с драйвером ezusb.sys.
Система работает в асинхронном режиме. Устройство постоянно шлет данные (autoin).Программа принимает 65024 байт (127 пакетов).Я вызываю DeviceIoControl с параметром IOCTL_EZUSB_BULK_READ и жду 65024 байт.
Иногда отсылаю 4 байта.Проблема в том что сразу после отсылки приходят два байта а потом идут нормальные пакеты.
Это происходит после второй отсылки после первой нет.
Как такое возможно?
Может ли это быть связано с тем что когда я выполняю отсылку на прием не работаю а пакеты приходят?
Что с ними происходит?У драйвера есть внутренний буффер?Может эти два байта мусор от непринятых пакетов?

Сообщение отредактировал Sh@dow - Jul 19 2010, 13:50
Go to the top of the page
 
+Quote Post

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

 


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


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