Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему драйвер USB не исправляет ошибки CRC?
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Sims
Используется USB контроллер Cypress (FX2), их драйвер CyUSB.sys и их же библиотека CyAPI.lib.
Проблема:
При передаче по плохому USB кабелю функция XferData часто возвращает ошибку и передача прекращается. Если детализировать состояние – оказывается status=USBD_STATUS_CRC.
Кто-нибудь уже сталкивался с этим? Почему драйвер не исправляет ошибку? Можно ли что-то с этим сделать?
TailWind
В USB нет никаких исправлений ошибок.
Пакет нужно отправлять заново.
Sims
Ну да, в идеале, получив пакет с неправильны CRC драйвер хоста просит девайс повторить отправку. Но вместо этого, драйвер возвращает ошибку и передача обрывается. (при этом теряются уже полученные данные, находящиеся в USB driver stack=16Кб )

Стоит ли на хосте ограничение на кол-во повторов?
Можно ли это ограничение снять или увиличить?
Konst_777
Цитата(Sims @ Jan 31 2008, 18:31) *
...Стоит ли на хосте ограничение на кол-во повторов?

Для Windows™ в книге: USB Complete - 3. edition by Jan Axelson:
page 71
(Bulk Transfers) Detecting and Handling Errors
Bulk transfers use error detecting. If a device doesn’t return an expected
handshake packet, the host tries up to twice more...
page 75
(Interrupt Transfers) Detecting and Handling Errors
If a device doesn’t return an expected handshake packet, host controllers in
PCs will retry up to twice more...

Цитата(Sims @ Jan 31 2008, 18:31) *
Можно ли это ограничение снять или увиличить?

Для Windows™ вряд ли.

Цитата(Sims @ Jan 31 2008, 14:29) *
При передаче по плохому USB кабелю...

Все таки, лучше использовать кабели USB с маркировкой USB High Speed Certified.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.