Кто-нибудь использовал SX2.
Есть примеры реализации устройств.
Итересный девайс есть фи-фо, 16 бит, хорошая скорость если с настрой и с драйверами нет проблем (по описанию получается что можно юзать вреде без МК записав конфигерацию во внешний EEPROM).
Документации у кого-нибуть нет?
grumbler
Dec 27 2004, 20:30
Цитата(anton @ Dec 27 2004, 15:49)
Кто-нибудь использовал SX2.
Есть примеры реализации устройств.
Итересный девайс есть фи-фо, 16 бит, хорошая скорость если с настрой и с драйверами нет проблем (по описанию получается что можно юзать вреде без МК записав конфигерацию во внешний EEPROM).
Документации у кого-нибуть нет?
Ну без внешнего МК если и можно прожить , то не просто.
Я лично пристроил. По крайней мере для инициализации и
приема пакетов...
Slavik
Dec 27 2004, 21:43
Ничего хорошего.
Документация на сайте производителя (кстати тоже весьма фиговая):
Cypress
olefil
Dec 28 2004, 09:08
Не сказал бы, что очень фиговая. Поверьте есть варианты похуже. Я его пытался использовать без внешнего МК. Кисло все - это. Все равно по уму инитить надо. А то будет работать хрен знает как. А так кстати действительно ничего контроллер.
Раскахите или напишите на мыло этапы создания устройства на cy7c68001. Какой программой что делать и т.п. Я читал на английском ее описание - ужас! Ничего не понять, даже примеров нет. Кто может напишите в кратце. Буду очень благодарен.
Trashy
Jan 29 2005, 07:58
Цитата(ASV @ Jan 29 2005, 01:13)
Раскахите или напишите на мыло этапы создания устройства на cy7c68001. Какой программой что делать и т.п. Я читал на английском ее описание - ужас! Ничего не понять, даже примеров нет. Кто может напишите в кратце. Буду очень благодарен.
Плату спаял?
Цепляешь, винда просит дривер.
Суёшь дривер.
Если плата без косяков , то устройство определяется как микруха от сайпресс.
Во шлешину зашиваешь конфигурацию.
Затем из приложения запускаешь либо QueryDosDevice(и находишь там EZUSB-i; i=0...10), либо находишь строку в которой есть: Vid0547 и Pid1002 перед найденой строкой подставляешь "\\\\.\\" и передаёшь это в CreateFile.
Либо, если под Win98, то SetupDiGetClassDevs набираешь в поисковике MSDNа и читаешь как получить инфу о наличии устройств(даже примеры есть).
Так же в NTDDK, даже сишный код имеется по инициализации USB устройств.
Если открылось нормально, посылаешь запрос драйверу DeviceIoControl для установки Alt_Settings. Если мекруха 68013, усыпляешь её, заливаешь код, пробуждаешь. Затем через запросы IOCTL_EZUSB_BULK_READ и IOCTL_EZUSB_BULK_WRITE - осуществляешь передачу.
В понедельник мне плату с 68001 принесут, напишу подробней
Плату спаял. Втыкаю но винда не просит драйвер. Если изначально в ППЗУ ничего не записано, разве винда должна как-то на это реагировать? Я работаю без внешнего МК. Мне нужна точка опоры от которой можно оттолкнуться.
grumbler
Jan 31 2005, 15:21
Цитата(ASV @ Jan 31 2005, 15:40)
Плату спаял. Втыкаю но винда не просит драйвер. Если изначально в ППЗУ ничего не записано, разве винда должна как-то на это реагировать? Я работаю без внешнего МК. Мне нужна точка опоры от которой можно оттолкнуться.
Запиши в ПЗУ дефолтный дискриптор, тот что приведен в datasheet
с ним большую часть вещей можно пользовать.
Цитата(ASV @ Jan 31 2005, 15:40)
Плату спаял. Втыкаю но винда не просит драйвер. Если изначально в ППЗУ ничего не записано, разве винда должна как-то на это реагировать? Я работаю без внешнего МК. Мне нужна точка опоры от которой можно оттолкнуться.
Извини спутал с 68013...
У 68001 сначала идёт опрос EEPROM, если он не найден, то вендоры должена свормировать внешняя логика...
Рекомендую сначала в EEPROM записать...
Это "3.3 Boot Methods" в пдф...
Помимо вендоров нужны дискрипторы ендпойнтов, они в конце PDF (Defаult descriptors). Там не только ендпоинты но и куча другой инфы... Строка имени устройства и т.д...
Так, вот, в таком режиме, ты сможешь увидеть микруху в винде, и сможешь с помощбю EzMr отправить или принять 2 пакета.
Как только это у тебя получится, то можешь начинать прогить внешнюю логику...
В этом отношении (начальной инициализации) 68013 - проще.
Но на этом его простота заканчивается...
Реально получить на CY7C68001 200 МБит/с???
Если микруха греется, то бока со схемой? Греется не то что сильно но греется.
grumbler
Feb 1 2005, 20:27
Цитата(ASV @ Feb 1 2005, 15:29)
Реально получить на CY7C68001 200 МБит/с???
Если микруха греется, то бока со схемой? Греется не то что сильно но греется.
200Мбит получить реально, микросхема действительно греется заметно.
Как определить тип дескриптора? (Descriptor type). А то в даташите они написаны а откуда они взялись кто его знает.
olefil
Feb 13 2005, 07:28
Если это вопрос о том, что такое тип дескриптора, то ядумаю лучше обратится к спецификация USB 2.0 или 1.1 там окромя новых наворотов HIGH SPEED ничего не менялось (между прочим в документации так и написано "смотрите спецификацию").
Существуют различные типы данных описывающие устройство. Эти данные сгруппировали и назвали своими именами:
DEVICE, CONFIGURATION, STRING, INTERFACE и ENDPOINT.
Все эти дескрипторы описывают устройство для HOST машины, а она поним решает какой протокол общения с устройством запустить.
Цитата(olefil @ Feb 13 2005, 11:28)
Если это вопрос о том, что такое тип дескриптора, то ядумаю лучше обратится к спецификация USB 2.0 или 1.1 там окромя новых наворотов HIGH SPEED ничего не менялось (между прочим в документации так и написано "смотрите спецификацию").
Существуют различные типы данных описывающие устройство. Эти данные сгруппировали и назвали своими именами:
DEVICE, CONFIGURATION, STRING, INTERFACE и ENDPOINT.
Все эти дескрипторы описывают устройство для HOST машины, а она поним решает какой протокол общения с устройством запустить.
Мне нужно типы дескрипторов, которые используються для настройки CY7C68001 при записи EEPROM. Это они и есть?
Trashy
Feb 14 2005, 06:58
Цитата(ASV @ Feb 13 2005, 16:20)
Мне нужно типы дескрипторов, которые используються для настройки CY7C68001 при записи EEPROM. Это они и есть?
Научись сначало работать на Default descriptors.
То есть, залей в EEPROM только вид, пид и дид. 6 байт.
После того как научишься работать с микрухой из приложения, вот тогда начнёшь с дескрипторами извращаться. Скорее всего тебе это даже не понадобится. НИКОГДА!
На дефолтных дескрипторах можно получить скорость 26 мегабайт в секунду.
Обычно, этого более чем достаточно...
Цитата(Trashy @ Feb 14 2005, 10:58)
Цитата(ASV @ Feb 13 2005, 16:20)
Мне нужно типы дескрипторов, которые используються для настройки CY7C68001 при записи EEPROM. Это они и есть?
Научись сначало работать на Default descriptors.
То есть, залей в EEPROM только вид, пид и дид. 6 байт.
После того как научишься работать с микрухой из приложения, вот тогда начнёшь с дескрипторами извращаться. Скорее всего тебе это даже не понадобится. НИКОГДА!
На дефолтных дескрипторах можно получить скорость 26 мегабайт в секунду.
Обычно, этого более чем достаточно...
Да заливал я их. Нефига не грузиться. Наверно в схеме что-то не то.
olefil
Feb 17 2005, 10:18
Конечно это очень возможно, что в схеме чего-то не то. У меня другой вопрос а как оченивается подключение к хост машине (видимо PC)? То есть, что происходит выдется неизвестное устройство, либо вообще не чего не видно. Если нечего нет я бы проверил USB линию (D+, D-), всю ее подвязку и т.д.
Trashy
Feb 17 2005, 11:12
Цитата(ASV @ Feb 17 2005, 09:30)
Да заливал я их. Нефига не грузиться. Наверно в схеме что-то не то.
Спакойна, не дёргаться!
Первый байт 0хС4
Второй: Внимание! IFCONFIG - нужно отнестись предельно внимательно.
3) - полярность... Большую часть этого байта ты править не можешь.
4) - 0хС4
5) - 0х06
6) - 0х00
c 7го) - Внимание! Открываешь INF файл(который с драйвером идёт).
Там находишь слово VID.
Их будет много, идёшь в самый низ инфа, там найдёшь имя своёй микрухи и рядом прописанные VID и PID. (это при условии EZUSB.SYS) с CyUSB.SYS придётся пораскинуть мозгами и сделать по аналогии.
VID(low)
VID(high)
PID(low)
PID(high)
DID(low)
DID(high)
Вносить в том виде как в инфе, ни чего переводить(ХЕКС/ДЕК) не нужно.
При подключении, кампуктер тут же увидит девайс.
Кстати, посмотри генерацию на кварце. Если нет осцила, то повешай на кварце емкости не 20-30pF, а 12pF. Так будет вернее.
Кстати, разберись скольки байтный адрес у твоей EEPROM. И тоже отнесись к этому внимательно. Ну и про ресет не забудь.
Спасибо огромное всем кто мне помогал! Винда наконецто увидела мою микруху. Была как я и думал ошибка в схеме. Теперь буду разбираться как заставить ее что-то передавать.
Trashy
Feb 18 2005, 08:41
Цитата(ASV @ Feb 17 2005, 17:33)
Спасибо огромное всем кто мне помогал!
Спасибо в карман не положишь.
Рассказывай: чё за косяк был?
Цитата(Trashy @ Feb 18 2005, 12:41)
Цитата(ASV @ Feb 17 2005, 17:33)
Спасибо огромное всем кто мне помогал!
Спасибо в карман не положишь.
Рассказывай: чё за косяк был?
Не подсоденили выводы SCL и SDA через резистор к питанию. Та м же выводы с открытым коллектором.
grumbler
Feb 19 2005, 14:50
Не подсоденили выводы SCL и SDA через резистор к питанию. Та м же выводы с открытым коллектором.
[/quote]
Стандартные однако грабли...
Trashy
Feb 21 2005, 04:35
Цитата(grumbler @ Feb 19 2005, 17:50)
Стандартные однако грабли...
Мне студент плату для него развёл. В тырнете схему у немцев дёрнул. Точно такая же в девелопмент кит лежит.
Всего одна ошибка была, питание на аналоговую часть микрухи не завёл...
Но, вообще, от косяков разводки меня Altera спасла, так как все сайпресовские пины на ПЛИСину были заведены. Даже ресет!
На что влияет вывод 5 (NC) у cy7cc680001? Просто он должен висеть в воздухе, а мне его повесили на высокий. И теперь проблема его от тудова отодрать. Может это и есть причиной того что микруха не хочет читать пиды и виды из EEPROM?
Trashy
Feb 24 2005, 15:13
Цитата(ASV @ Feb 24 2005, 14:52)
На что влияет вывод 5 (NC) у cy7cc680001? Просто он должен висеть в воздухе, а мне его повесили на высокий. И теперь проблема его от тудова отодрать. Может это и есть причиной того что микруха не хочет читать пиды и виды из EEPROM?
Врядли.
Пока ты писал этот постинг, лучще бы иголочкой лапу поддел и паяльничком ткнул. И нет проблемм. Пусть в воздухе висит (как у меня).
Лучше обрати внимание на разрядность адреса в твоей микрухе.
Цитата(Trashy @ Feb 24 2005, 19:13)
Цитата(ASV @ Feb 24 2005, 14:52)
На что влияет вывод 5 (NC) у cy7cc680001? Просто он должен висеть в воздухе, а мне его повесили на высокий. И теперь проблема его от тудова отодрать. Может это и есть причиной того что микруха не хочет читать пиды и виды из EEPROM?
Врядли.
Пока ты писал этот постинг, лучще бы иголочкой лапу поддел и паяльничком ткнул. И нет проблемм. Пусть в воздухе висит (как у меня).
Лучше обрати внимание на разрядность адреса в твоей микрухе.
Да с разрядностью все нормально. Я поставил 24LC01B, как и в даташите рекомендуют. Вот только не хочет он дескрипторы читать и все. VID и PID в реестре нулевые. Тут еще мне не понятный прикол есть на микрухе написано 24LC01B, а программатор её шьет и читает только как 24LC01A - это вызывает подозрения.
Trashy
Feb 25 2005, 13:06
Цитата(ASV @ Feb 24 2005, 23:12)
Да с разрядностью все нормально. Я поставил 24LC01B, как и в даташите рекомендуют. Вот только не хочет он дескрипторы читать и все. VID и PID в реестре нулевые. Тут еще мне не понятный прикол есть на микрухе написано 24LC01B, а программатор её шьет и читает только как 24LC01A - это вызывает подозрения.
Я сожалею, но мне, что бы что-то проверить, нужно кучу всего отпаивать от платы и Альтеру перешивать, что бы она пустила Супреса "в свободное плавание"...
Я через ЕЕПРОМ уже давно не конфигурюсь. У меня этим ПЛИС занимается...
Цитата(Trashy @ Feb 25 2005, 17:06)
Цитата(ASV @ Feb 24 2005, 23:12)
Да с разрядностью все нормально. Я поставил 24LC01B, как и в даташите рекомендуют. Вот только не хочет он дескрипторы читать и все. VID и PID в реестре нулевые. Тут еще мне не понятный прикол есть на микрухе написано 24LC01B, а программатор её шьет и читает только как 24LC01A - это вызывает подозрения.
Я сожалею, но мне, что бы что-то проверить, нужно кучу всего отпаивать от платы и Альтеру перешивать, что бы она пустила Супреса "в свободное плавание"...
Я через ЕЕПРОМ уже давно не конфигурюсь. У меня этим ПЛИС занимается...
А какую ты EEPROM использовал? Просто 24LC01В вообще вроде как игнорирует дополнтильные биты адреса, которые выставляються выводами на ПЗУ А0-А2. И мне кажиться что из-за этого киприс мой не может понять что за EEPROM я ему подсунул и не может прочитать ВИД и ПИД. Он просто принимает их нулевыми, покрайней мере я это вижу в реестре.
Trashy
Feb 27 2005, 07:21
Цитата(ASV @ Feb 25 2005, 17:29)
А какую ты EEPROM использовал? Просто 24LC01В вообще вроде как игнорирует дополнтильные биты адреса, которые выставляються выводами на ПЗУ А0-А2. И мне кажиться что из-за этого киприс мой не может понять что за EEPROM я ему подсунул и не может прочитать ВИД и ПИД. Он просто принимает их нулевыми, покрайней мере я это вижу в реестре.
Абсолютно не верные рассуждения!
Сайпрес не отвечает на запросы виндовоза в принципе(в твоём случае)!
А в реестре ты можешь увидеть нули, просто замкнув D+ на плюс(по моему, точно не помню, или даже выпаяв кварц из рабочей платы - эфект будет тот же).
Что бы микруха начала передавать вид и пид, она должна считать 0xC4 два раза (с нулевой ячейки и с третьей)! И ещё должна считать размер дескриптора 0x00 и 0x06!!! То есть, вороятность ошибки равна нулю.
Если она смогла считать это, то и вид с пидом считает. Но в твоём случае, она ваще ни хера не делает! Кстати, если у тебя всё таки сомнения, то проверяется это возникновением прерывания при завершении ренумерации. То есть, при завершении инициализации возникает прерывание для внешнего устройства. Ты это можешь запросто тестером увидеть...
На тему еепрома, я сегодня закончу свою работу, а завтра вечером попробую с епроминой загрузиться. И скажу о результате
Вспомнил!
Прочитай внимательно INTENABLE bit definition пункт 3.4.2
а конкретно: Bit 0 - READY
Ты поймёшь в каком случае какое прерывание происходит READY или ENUMOK.
И отсюда ты сможешь понять, что на самом деле происходит с твоим устройством.
Кароче, переведи внимательно и подробно.
Не читает она ничего из EEPROM

. Вот щас освободился от другой работы и буду пытаться загрузить от внешнего МК.
sphera
Apr 17 2005, 08:55
Запускаю SX2
Собрал макетную плату к параллельной шине подключил ATmega8 которая в свою очередь управляется от PC через RS232. Сейчас ситуация следующая: при подключении к USB микросхема распознается, читается VID PID и.т.д. Могу передають данные от PC к SX2 через USB при помощи панели CyConsole с драйвером CyUSB.sys читаю через ATmega8 вроде все правильно. Но как только пытаюсь записать в SX2 что то через параллельную шину т.е. подаю 0 на SLWR, SX2 начинает жрать кучу тока, падает напряжение питания и перестает работать кварц и SX2 пропадает с шины USB. Проверил все тестером тыкал на SLOE, SLWR, ADR0-2 все правильно, на всякий случай на параллельную шину SX2 поставил резисторы 1кОм; то же самое. Собрал вторую макетную плату работает точно так же как и первая я в отчаянии. Может у кого были подобные симптомы поделитесь рецептом или есть сгоревшие образцы которые не работают так же как и мои и надо собирать третью макетную плату.
Trashy
Apr 17 2005, 09:51
Цитата(sphera @ Apr 17 2005, 11:55)
т.е. подаю 0 на SLWR, SX2 начинает жрать кучу тока, падает напряжение питания и перестает работать кварц и SX2 пропадает с шины USB.
Куча, это скока? И вкаком режиме(синхронный или асинхронный)?
Цитата
на всякий случай на последовательную шину SX2 поставил резисторы 1кОм;
Где у него такая шина?
Цитата
Проверил все тестером тыкал на SLOE, SLWR, ADR0-2 все правильно,
ПРи включении SLOE - Data шина в высокоимпедансное состояние уходит?
sphera
Apr 19 2005, 14:15
1. ток не мерял но стабилизатор 3.3В на 1А должно хватать; SX2 работает в асинхронном режиме так как ATmega8 в синхронном не успеет.
2. Сори действительно оговорился имелось в виду параллельная шина (уже исправлено).
3. Шина уходит в высокоимпедансное состояние так как падение напряжения на резисторая 1кОм 0.2В а ATmega8 питается от 5В.
Trashy
Apr 20 2005, 03:26
Цитата(sphera @ Apr 19 2005, 17:15)
1. ток не мерял но стабилизатор 3.3В на 1А должно хватать; SX2 работает в асинхронном режиме так как ATmega8 в синхронном не успеет.
2. Сори действительно оговорился имелось в виду параллельная шина (уже исправлено).
3. Шина уходит в высокоимпедансное состояние так как падение напряжения на резисторая 1кОм 0.2В а ATmega8 питается от 5В.
А что мешает атмегу на 3.3 вольта включить?
На сколько я силен в смехотехнике, там входы от перенапряжения защищены диодами подключенными к 3.3 вольтам. То есть, все твои 5 вольт будут через эти диоды до 3.9 коротиться. Попробуй у атмеги снизить питание до 3.9...
Что тебе мешает включать по одному биту на портах атмеги?
Кстати, когда пишешь в Супрес, то ендпоинт должен подключаться типа IN. Это делается пинами FIFOADDR[2..0]. То есть для тебя: или 010 или 011.
Либо ты перепутал полярность при конфигурации(например того же SLWR)...
А, то вообще, сопля на этом проводе. Тестером на КЗ проверь. Хотя, я не думаю, что один порт атмеги может 1ампер пропустить(если только сопля не на 5 вольт)... Кстати, при включении IN-ендпоинта, микруха сама должна переводить данные в Z состояние. SLOE не нужен(хотя подробностей не помню)...
Зачем в даташите в схеме питание на AVCC подаеться через RC цепочку?
Зачем в даташите питание на AVCC подаеться через RC-цепочку?
Trashy
Apr 21 2005, 06:24
Цитата(ASV @ Apr 20 2005, 15:28)
Зачем в даташите в схеме питание на AVCC подаеться через RC цепочку?
Называется - развязывающий фильтр.
480 мегагерц шоб по плате не гуляло.
В твоём случае - вещь абсолютно бесполезная. У меня этой цепочки тоже нету.
Кстати, обрати внимание на номинал резистора.
Надеюсь, у тебя все выводы Vcc зашунтированы 0.1микрофарадами...
Цитата(Trashy @ Apr 21 2005, 10:24)
Цитата(ASV @ Apr 20 2005, 15:28)
Зачем в даташите в схеме питание на AVCC подаеться через RC цепочку?
Называется - развязывающий фильтр.
480 мегагерц шоб по плате не гуляло.
В твоём случае - вещь абсолютно бесполезная. У меня этой цепочки тоже нету.
Кстати, обрати внимание на номинал резистора.
Надеюсь, у тебя все выводы Vcc зашунтированы 0.1микрофарадами...
Зашунтированы.
Я вообще сейчас плату переразвожу (до этого не я разводил) и ставлю новую микруху. Потому что как я не пытался ее заставить заработать, так она и не заработала. Винда пишет, что найдено новое устройство, но оно не опознано.
Единственное что, я не могу из реестра удалить нулевые пиды (пишет что из-за ошибки не возможно удаление всех ключей).
Коллеги!
Есть плата: DSP (хост процессор) соединен с CY7C68001 по параллельной шине, также на плате предусмотренна EEPROM.
Пытаюсь инициализировать CY7C68001.
Ситуация №1: Инициализация через EEPROM. Прописываем
C4,C9,00,C4,47,05,02,10,00,01. После инициализации супраса таким образом PC определяет новое устройство положенным образом. Но при этом Host процессор не может установить связь с супрасом (супрас не отвечает на запросы)
Ситуация №2: Инициализация через host процессор (изначально в этом случае host видит супресс). Прописываем
VID, PID, DID (для использования дескриптора по умолчанию). Проверка показывает (чтение супраса хост процессором), что VID, PID, DID прописались правильно. Однако PC не идентифицирует новое устройство.
В чем может быть проблема?
Trashy
May 25 2005, 03:48
Цитата(Fam @ May 24 2005, 15:55)
Коллеги!
Есть плата: DSP (хост процессор) соединен с CY7C68001 по параллельной шине, также на плате предусмотренна EEPROM.
Пытаюсь инициализировать CY7C68001.
Ситуация №1: Инициализация через EEPROM. Прописываем
C4,C9,00,C4,47,05,02,10,00,01. После инициализации супраса таким образом PC определяет новое устройство положенным образом. Но при этом Host процессор не может установить связь с супрасом (супрас не отвечает на запросы)
Ситуация №2: Инициализация через host процессор (изначально в этом случае host видит супресс). Прописываем
VID, PID, DID (для использования дескриптора по умолчанию). Проверка показывает (чтение супраса хост процессором), что VID, PID, DID прописались правильно. Однако PC не идентифицирует новое устройство.
В чем может быть проблема?
Драйвер чей?
Вообще, у супресса ендпоинты с двойной буфферизацией(по умолчанию), так, что после CreateFile(); Можно, например, отправить два пакета по 512 в каждый ендпоинт 2 или 4. Третий пакет - подвесит приложение. Если этот механизм работает, то косяк в согласовании с ДСП.
Ситуация№2 - не ясна абсолютно...
Trashy
May 25 2005, 04:06
Цитата(Fam @ May 24 2005, 15:55)
Коллеги!
Есть плата: DSP (хост процессор) соединен с CY7C68001 по параллельной шине, также на плате предусмотренна EEPROM.
Пытаюсь инициализировать CY7C68001.
Ситуация №1: Инициализация через EEPROM. Прописываем
C4,C9,00,C4,47,05,02,10,00,01. После инициализации супраса таким образом PC определяет новое устройство положенным образом. Но при этом Host процессор не может установить связь с супрасом (супрас не отвечает на запросы)
Ситуация №2: Инициализация через host процессор (изначально в этом случае host видит супресс). Прописываем
VID, PID, DID (для использования дескриптора по умолчанию). Проверка показывает (чтение супраса хост процессором), что VID, PID, DID прописались правильно. Однако PC не идентифицирует новое устройство.
В чем может быть проблема?
Блин - понял...
Со второй ситуацией обожди. Пока заведи на епромине. И забудь пока, о существовании ДСП. Зацепи игрушку к ПК, и зашли в ендпоинт2 пакет. Тестером пощупай флаги. Попереключай FIFOADDR. Потом ещё один пакет. Опять флаги посмотри. Опорожни ендпоинт в синхронном режиме(коротнув SLRD). Опять содержимое флагов оцени.
Потом, пробуй читать приложением. Приложение повиснет. И будет ждать когда, ты коротнёшь SLWR...
Кароче, посмотри как это всё работает, а уж потом будешь весь из себя - крутой программер у которого все блоки с первого раза заработали...
Enrique
Jun 16 2005, 09:35
Приветствую!
Кто-нибудь работал с драйверами от Jungo?
каких скоростей удовалось достич?
ps я планирую использовать CY7C68001
Enrique
Jun 17 2005, 08:16
При первом знакомстве с этим драйвером выявилось следующее:
PC не может принят от устройства посылку более 64 байт. Приняв 64 байта происходит выход из процедуры чтения, хотя ожидаемый пакет: несколько килобайт.
использую следующие pipe:
pipe $2 на запись
pipe $86 на чтение
процедура: WDU_Transfer
Что харрактерно: windriverwizard также не может принят более 64 байт, при этом замечено что PC генерит 8мс паузы между этими пакетами (в режиме прослушивания)...
Кто нибудь может подсказать где собака зарыта?
Есть подозрения что дело во размерах входного буфера USb со стороны PC, если это так, то как изменить его настройки (размер)?
Trashy
Jun 18 2005, 05:10
Цитата(Enrique @ Jun 17 2005, 11:16)
При первом знакомстве с этим драйвером выявилось следующее:
PC не может принят от устройства посылку более 64 байт. Приняв 64 байта происходит выход из процедуры чтения, хотя ожидаемый пакет: несколько килобайт.
использую следующие pipe:
pipe $2 на запись
pipe $86 на чтение
процедура: WDU_Transfer
Что харрактерно: windriverwizard также не может принят более 64 байт, при этом замечено что PC генерит 8мс паузы между этими пакетами (в режиме прослушивания)...
Кто нибудь может подсказать где собака зарыта?
Есть подозрения что дело во размерах входного буфера USb со стороны PC, если это так, то как изменить его настройки (размер)?
У меня буфер(физический) 4 килобайта, а драйвер берёт 64килобайта.
Так, что - фигня это всё.
К тому же, через какой эндпоинт данные гонишь?
Enrique
Jun 20 2005, 15:14
Согласен, фигня вышла с программой в железе, щас все ок.
Здравствуйте!
Давайте разберемся с прерываниями в этой микросхеме? Очень уж не логично они там наворочали... Я уже задавал подобный вопрос в сайпрессовской техподдержке, ответ получил аж через неделю. И ответ этот несколько странен: он никак не совпадает с данными даташита. Суть проблемы вот в чем. Имеем аппаратную логику, которая считывает поток байт из 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.
Опять же, ничего не говорится про статус прерывания.
Так как же оно на самом деле?
Подскажите, пожалуйста, про этот проклятый байт прерывания...
Хм... Провел специальный эксперимент. Микроконтроллер обнаруживает ноль на линии 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 из их Девелопер Студии?
Trashy
Oct 25 2005, 03:23
Цитата(jur @ Oct 24 2005, 21:49)
Подскажите, пожалуйста, чем хорош драйвер USBIO.SYS по сравнению с CyUSB.sys из их Девелопер Студии?
Что бы ответить на этот вопрос - нужно иметь исходники.
Не знаю как USBIO.SYS, но старый драйвер EZUSB.SYS - прокачивает 26мег в секунду. Единственный косяк, не соответствует спецификации энергосбережения и не поддерживает оверлаппед. К тому же в нём много прибабахов для 68013. А в CyUSB - их поделяли.
Вообще, есть мнение, что самый лучший драйвер для кипариса, получается из исходников EZUSB + пример из ДДК.
Исходники там здоровые, черт побери... Без достаточного опыта разработки драйверов тяжко будет ковыряться. Наверное отложу на будущее.
Большое спасибо за информацию!
Так. К сведению. Запустил свою новую плату на CY7C68001... :-)
Микросхема используется в асинхронном режиме. Как и положено, я не загружал ее под завязку быстродействия. Поэтому остановился на 160-ти наносекундном цикле выдачи данных. Работает аки часы швейцарские.
Молодца фирма Cypress! В отличие от примененной мною более года назад FTDI, сайпрессовские драйвера не приводят к RESET'у компьютера, не вызывают никаких проблем и сама микросхема проще в применении (да и стоит дешевле).
Теперь приступаю к углублению в вопросы программной "обвязки" со стороны компьютера. Пошерстю форум и, возможно, понаоткрываю кучу новых топиков! :-)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.