|
|
  |
Работа с USB2.0 SX2, Ктонибуть использовал SX2 |
|
|
|
Oct 24 2005, 08:27
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704

|
Здравствуйте! Давайте разберемся с прерываниями в этой микросхеме? Очень уж не логично они там наворочали... Я уже задавал подобный вопрос в сайпрессовской техподдержке, ответ получил аж через неделю. И ответ этот несколько странен: он никак не совпадает с данными даташита. Суть проблемы вот в чем. Имеем аппаратную логику, которая считывает поток байт из OUT-ендпойнта. Где-то в процессе считывания может возникнуть прерывание. Эту ситуацию я изобразил на примерной временнОй диаграмме:  Что будет считано на шину данных по очередному импульсу считывания (nSLRD+nSLOE), когда пришло прерывание? Это будет байт статуса прерывания или все-таки очередной байт данных? В техподдержке мне невнятно сказали, что статус прерывания считывается только по адресу команд (FIFOADR[2..0] = B"100"). В этом случае со считыванием данных вроде все должно быть хорошо. Но почему тогда в даташите нигде не говорится, что статус прерывания считывается именно по адресу FIFOADR[2..0] = B"100"? Написано просто: когда пришло прерывание, то статус байт прерывания выдается по импульсам считывания (nSLRD+SLOE). Вот что мы имеем в даташите (ревизия E): (стр. 3) When an interrupt occurs, the INT# pin will be asserted, and the corresponding bit will be set in the Interrupt Status Byte. The external master reads the Interrupt Status Byte by strobing SLRD/SLOE. This presents the Interrupt Status Byte on the lower portion of the data bus (FD[7:0]). Т.е. считываем - получаем. Про адрес ничего не сказано. (стр. 7) An address of [1 0 0] on FIFOADR [2:0] will select the command interface. The command interface is used to write to and read from the SX2 registers and the Endpoint 0 buffer, as well as the descriptor RAM. Опять же, ничего не говорится про статус прерывания. Так как же оно на самом деле? Подскажите, пожалуйста, про этот проклятый байт прерывания...
--------------------
MPEG-4 - в массы!
|
|
|
|
|
Oct 24 2005, 18:49
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704

|
Хм... Провел специальный эксперимент. Микроконтроллер обнаруживает ноль на линии INT#. Выставляет адрес FIFOADR[2..0] = 000b, считывает байт данных. Линия прерывания как была в нуле, так и остается. Тогда микроконтроллер выставляет адрес FIFOADR[2..0] = 100b, считывает байт данных. Линия прерывания уходит в единицу.
Похоже, можно верить сайпрессовской техподдержке... Неужели трудно было об этом в даташите написать? Заразы...
А микросхема у них превосходная :-) Допкомпонентов нужно мало, в работе проста (когда все необходимые шишки набьешь :-) скорость обеспечивает приличную. А со стороны PC я использую их CY4604 - USB Developer's uStudio v1.5.1.1. На первый взгляд там все просто, как дверь. Во всяком случае прилагаемые примеры откомпилировались без проблем, полученные exe-шники работают, необходимые мне 8 МБайт/сек дают свободно (процессор PC PIV-2.6GHz нагружается на 6-8%, Embedded-мама с VIA C3-1.3GHz - порядка 10-12%). А дальше - совершенствование.
Подскажите, пожалуйста, чем хорош драйвер USBIO.SYS по сравнению с CyUSB.sys из их Девелопер Студии?
--------------------
MPEG-4 - в массы!
|
|
|
|
|
Oct 25 2005, 03:23
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049

|
Цитата(jur @ Oct 24 2005, 21:49) Подскажите, пожалуйста, чем хорош драйвер USBIO.SYS по сравнению с CyUSB.sys из их Девелопер Студии? Что бы ответить на этот вопрос - нужно иметь исходники. Не знаю как USBIO.SYS, но старый драйвер EZUSB.SYS - прокачивает 26мег в секунду. Единственный косяк, не соответствует спецификации энергосбережения и не поддерживает оверлаппед. К тому же в нём много прибабахов для 68013. А в CyUSB - их поделяли. Вообще, есть мнение, что самый лучший драйвер для кипариса, получается из исходников EZUSB + пример из ДДК.
|
|
|
|
|
Nov 8 2005, 17:34
|
Участник

Группа: Свой
Сообщений: 29
Регистрация: 4-05-05
Пользователь №: 4 741

|
Ситуевина такая. 68001 прилеплен к ПЛИСене. ЕЕПРОМа нет. ПЛИСина грузит ВИД, ПИД и ДИД (после прерывания SETUP) нумеруется хостом и вывешивает ENUMOK. Дрова EZUSB. Т.е. все ОК. При этом ендпоинты по умолчанию 4шт по 512байт (0х200) даблбуфер. Это я вижу в ЕЗ-мониторе. Т.е норма для ХайСпид. Если я начинаю их конфигурить ПЛИСиной через запись в EPxCFG(регистры 0х06...0х09) - оставляю 2 и 6 по 1024 даблбуфферинг, 4 и 8 убираю VALID=0 остальное по дефолту, то вижу что все равно присутствуют все 4-ре и размером 0х40 (64байт) - ФулСпид!!!! Лучше бы я их совсем не трогал! Никто не сталкивался? Чо за хрень такая? И как правильно их сконфигурить? Грузить весь Endpoint Configuration?? Через дескрипторы (регистр 0х30)? Софтом? Хелп, плз!!!
|
|
|
|
|
Nov 9 2005, 03:37
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049

|
Цитата(Xenix @ Nov 8 2005, 20:34)  Ситуевина такая. 68001 прилеплен к ПЛИСене. ЕЕПРОМа нет. ПЛИСина грузит ВИД, ПИД и ДИД (после прерывания SETUP) нумеруется хостом и вывешивает ENUMOK. Дрова EZUSB. Т.е. все ОК. При этом ендпоинты по умолчанию 4шт по 512байт (0х200) даблбуфер. Это я вижу в ЕЗ-мониторе. Т.е норма для ХайСпид. Если я начинаю их конфигурить ПЛИСиной через запись в EPxCFG(регистры 0х06...0х09) - оставляю 2 и 6 по 1024 даблбуфферинг, 4 и 8 убираю VALID=0 остальное по дефолту, то вижу что все равно присутствуют все 4-ре и размером 0х40 (64байт) - ФулСпид!!!! Лучше бы я их совсем не трогал! Никто не сталкивался? Чо за хрень такая? И как правильно их сконфигурить? Грузить весь Endpoint Configuration?? Через дескрипторы (регистр 0х30)? Софтом? Хелп, плз!!! Динамическое конфигурирование сайпрессом не поддерживается. Это значит, что нужно сконфигурить микруху и сделать ренумерацию с соответствующими дескрипторами... Цитата(jur @ Oct 27 2005, 22:50)  Молодца фирма Cypress! В отличие от примененной мною более года назад FTDI, сайпрессовские драйвера не приводят к RESET'у компьютера, не вызывают никаких проблем и сама микросхема проще в применении (да и стоит дешевле). Видимо вы не работали с драйвером EZUSB.SYS... Всякий раз при попытке AbortPipe не существующего пайпа - происходил мгновенный выброс из винды... Меня трижды выкинуло, пока я понял в чём дело.
|
|
|
|
|
Nov 9 2005, 10:21
|
Участник

Группа: Свой
Сообщений: 29
Регистрация: 4-05-05
Пользователь №: 4 741

|
Цитата(Trashy @ Nov 9 2005, 07:37)  Динамическое конфигурирование сайпрессом не поддерживается. Это значит, что нужно сконфигурить микруху и сделать ренумерацию с соответствующими дескрипторами... В DS указанно такое. Но как мне правильно (аппаратно) сконфигурить ендпоинты. Если я правильно понял нуна залить конфигурацию ЕР-тов после СЕТАПа, а потом залить дескрипторы или залить дескрипторы с прописанными ЕР??? А потом я получу ЕНУМОК?! Т.о. жду прерывания с СЕТАПом, потом я гружу все конфиги и настройки. Потом гружу регистр 0х30 с дескрипторами. И получаю прерывание ЕНУМОК. ??! Правильно?!
|
|
|
|
|
Nov 14 2005, 10:57
|
Участник

Группа: Свой
Сообщений: 29
Регистрация: 4-05-05
Пользователь №: 4 741

|
2 Trashy. SX2. Гружу регистры 06-09 (выключаю 4 и 8-й ЕР) что сначала, что после дескрипторов одна кухня - в ЕЗМОНе вижу все четыре точки. В чем может быть трабла? Зачем делать FLUSH FIFO? Заранее благодарен!
|
|
|
|
|
Nov 18 2005, 08:42
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-10-05
Пользователь №: 9 172

|
А вы не читали CY3682 Design Notes (на сайте есть), там описана процедура инициализации чипа. Сначала ждешь прерывания SETUP, затем грузишь регистры, затем дескрипторы. После этого винда енумерует устройство, если есть подходящий драйвер. У меня еще не работает устройство, я пока на пути... но инициализация проходит. Тоже нет Епрома, работаю с ПЛИС.
|
|
|
|
|
Nov 18 2005, 20:07
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-10-05
Пользователь №: 9 172

|
сорри, не SETUP прерывание вначале, а READY. Перепутал.
|
|
|
|
|
Nov 21 2005, 16:49
|
Участник

Группа: Свой
Сообщений: 29
Регистрация: 4-05-05
Пользователь №: 4 741

|
Цитата(vad2 @ Nov 18 2005, 12:42)  А вы не читали CY3682 Design Notes (на сайте есть), там описана процедура инициализации чипа. Сначала ждешь прерывания SETUP, затем грузишь регистры, затем дескрипторы. После этого винда енумерует устройство, если есть подходящий драйвер. У меня еще не работает устройство, я пока на пути... но инициализация проходит. Тоже нет Епрома, работаю с ПЛИС. Читал. Написано грузим конфиг. Что именно ??? Потом дескрипторы. Какие??? Потом размер- и все! Для моей задачи устраивает почти все по дефолту, только надо выключить два Ер, а два других увеличить в два раза. Поэтому после РЕДИ, гружу 06-09 - выключаю ЕР 4 и 8. Потом дескрипторы 6 байт, ловлю ЕНУМОК. ПК видит девайс и раньше видел, но два ЕР присутствуют- опять вижу в ЕЗМОНе. Можно только дескрипторы загрузить и все. Кстати когда до или потом грузишь ЕРхКОНФ размеры буферов изменяются с 512 до 64. Что за штука??? Почему они не выключаются я им ВАЛИД убираю!!! ((Потом я должен увидеть ХСГРАНТ и настроить размер буферов.)) Или для загрузки интерфейса (до загрузки дескрипторов) я все равно должен загрузить все регистры с 0х01 поп 0х2Е.???
|
|
|
|
|
Nov 22 2005, 14:14
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-10-05
Пользователь №: 9 172

|
Я думаю, что для того чтобы получить только 2 ендпоинта, вместо 4-х, нужно переписать полную таблицу дескрипторов для вашего случая (2 ендпоинта по 1024 байта) по адресу 300. Винда определяет наличие и конфигурацию ендпоинтов по этой информации, а у вас по умолчанию там записана конфигурация для 4-х ендпоинтов. На последней странице даташита описаны default descriptors, а то что значат эти цифры можно найти в спецификации на шину USB2.0. Надеюсь, что вам помог.
|
|
|
|
|
Nov 22 2005, 15:18
|
Участник

Группа: Свой
Сообщений: 29
Регистрация: 4-05-05
Пользователь №: 4 741

|
Цитата(vad2 @ Nov 22 2005, 18:14)  Надеюсь, что вам помог. Спасибо попробую. Свяжусь как там получится.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|