skyspark 0 28 января, 2009 Опубликовано 28 января, 2009 (изменено) · Жалоба Привет. Начал разбиратся с сайпресом, столкнулся с проблемой, конфигурирую EP2 как ISOC IN AUTOIN=1. Выбираю нулевой адресс fifo. С ПЛИС дергаю лапкой SLWR и/или PKEND. Тактовую ПЛИС беру IFCLK = 48МГц. Наблюдается следющее: Если дергать лапкой SLWR, сигнал FULL = 0, тоже просходит если дернут PKEND 4 раза (по числу буфферов) ,EMPTY ведет себя адекватно после первого клока записи или окончания пакета EMPTY = 0. Инитил так, больше ничего не делал: REVCTL = 0x03; // REVCTL.0 and REVCTL.1 set to 1 SYNCDELAY; CPUCS = 0x12; SYNCDELAY; IFCONFIG = 0xE3; SYNCDELAY; EP2CFG = 0xD0; // EP2 is DIR=IN, TYPE=ISO SYNCDELAY; FIFORESET = 0x82; // Reset the FIFO SYNCDELAY; FIFORESET = 0x82; // Reset the FIFO SYNCDELAY; FIFORESET = 0x82; // Reset the FIFO SYNCDELAY; FIFORESET = 0x82; // Reset the FIFO SYNCDELAY; EP2FIFOCFG = 0x0C; // EP2 is AUTOOUT=0, AUTOIN=1, ZEROLEN=1, WORDWIDE=0 SYNCDELAY; EP2AUTOINLENH = 0x02; // Auto-commit 512-byte packets SYNCDELAY; EP2AUTOINLENL = 0x00; SYNCDELAY; PINFLAGSAB = 0x00; SYNCDELAY; PINFLAGSCD = 0x00; SYNCDELAY; Конечная точка сконфигурировал так: ;; Endpoint Descriptor db DSCR_ENDPNT_LEN ;; Descriptor length db DSCR_ENDPNT ;; Descriptor type db 82H ;; Endpoint number, and direction db ET_ISO ;; Endpoint type db 00H ;; Maximun packet size (LSB) db 02H ;; Max packect size (MSB) db 01H ;; Polling interval Не могу понять, почему он не отсылает пакеты. И достаточно ли USB Console что бы проконтролировать, она мне не зависимо состояния буффера говорит: Isoc IN failed. Изменено 28 января, 2009 пользователем skyspark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
marus-ka 0 4 февраля, 2009 Опубликовано 4 февраля, 2009 · Жалоба Я сама тоже разбираюсь с этим МК, режим slave fifo. Но autoin у меня работает. Очень помогла статья: http://www.efo.ru/doc/Cypress/Cypress.pl?2524 Зато не работает autoout. Чтобы не плодить много похожих тем, опубликую свой вопрос здесь. Сейчас пытаюсь сделать просто закольцовку данных в режиме slave fifo. Мастером служит ПЛИС. Интерфейс асинхронный, autoin, autoout. Данные должны передаваться с компа в 6кт, затем в ПЛИС, затем из ПЛИС в 2кт и в комп. Проблема в том, что при выставлении режима autoout при попытке послать данные из CyConsole в 6 кт, передача не проходит, CyConsole выдает следующее: Bulk OUT Transfer Bulk OUT failed Если не делать autoout, то данные 2 раза отправляются (в силу того, что буферизация двойная), а потом затыкаются. При этом флаг empty на выходе МК не меняется, следовательно ПЛИС и не забирает с него данные. Если делать только in передачу (из ПЛИС в МК и комп), то все нормально работает. Для out передачи меняла кт, меняла ногу для флага, но никаких изменений после этого не последовало. Вот код инициализации slave fifo: void TD_Init (void) { REVCTL = 0x03; // MUST set REVCTL.0 and REVCTL.1 to 1 SYNCDELAY; CPUCS = 0x10; // set 48MHz clk for CPU SYNCDELAY; // this defines the external interface to be the following: // use slave FIFO interface pins driven async by external master // enable slave fifo mode IFCONFIG = 0xcb; SYNCDELAY; // sets EP2 valid for IN's // and defines the endpoint for 512 byte packets, 2x buffered EP2CFG = 0xe2; SYNCDELAY; // sets EP6 valid for OUT's // and defines the endpoint for 512 byte packets, 2x buffered EP6CFG = 0xa2; SYNCDELAY; FIFORESET = 0x80; // reset all FIFOs SYNCDELAY; FIFORESET = 0x02; //reset FIFO EP2 SYNCDELAY; FIFORESET = 0x04; //reset FIFO EP4 SYNCDELAY; FIFORESET = 0x06; //reset FIFO EP6 SYNCDELAY; FIFORESET = 0x08; //reset FIFO EP8 SYNCDELAY; FIFORESET = 0x00; //return to normal operation SYNCDELAY; EP2FIFOCFG = 0x04; SYNCDELAY; // this lets the FX2 auto commit IN packets, gives // ability to send zero length packets, // and sets the slave FIFO data interface to 8-bits EP2FIFOCFG = 0x0c; SYNCDELAY; // this lets the FX2 auto receive out packets, gives no // ability to send zero length packets, // and sets the slave FIFO data interface to 8-bits */ EP6FIFOCFG = 0x10; SYNCDELAY; // defines FLAGB as full for 2ep // FLAGA as empty for 6ep PINFLAGSAB = 0xca; SYNCDELAY; // FLAGC as empty flag for 2ep // won't generally need FLAGD (default) PINFLAGSCD = 0x04; PORTACFG = 0x40; // used PA7/FLAGD/SLCS as a SLCS FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low SYNCDELAY; //set max in paket to 512 bytes EP2AUTOINLENH = 0x02; SYNCDELAY; EP2AUTOINLENL = 0x00; SYNCDELAY; OUTPKTEND = 0x86; // arm first buffer by writing OUTPKTEND w/skip=1 SYNCDELAY; OUTPKTEND = 0x86; // arm second buffer by writing OUTPKTEND w/skip=1 SYNCDELAY; } Если у кого-нибудь есть соображения, с чем может быть связано такое поведение МК, от поделитесь пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 6 февраля, 2009 Опубликовано 6 февраля, 2009 · Жалоба Если у кого-нибудь есть соображения, с чем может быть связано такое поведение МК, от поделитесь пожалуйста. Может, вы посылаете чанк размером, меньше чем оговоренный в конфиге? Скажем, если оговорены чанки по 64 байта, а вы послали меньше, то это будет признаком окончания сессии. Вообще же чип работает ОК, но с докой, помнится, у нас тоже были какие-то похожие на ваши непонятки. В свое время помучались, методом проб и ошибок подобрали нужный режим, зашили в софт и давным-давно забыли, в чем была заморочка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyspark 0 6 февраля, 2009 Опубликовано 6 февраля, 2009 · Жалоба Я сама тоже разбираюсь с этим МК, режим slave fifo. Но autoin у меня работает. Очень помогла статья: http://www.efo.ru/doc/Cypress/Cypress.pl?2524 Я разобрался с проблемой. Статья действительно помогла :) Дело было в том, что если поднят флаг FULL, то необходимо запрещать запись в fifo, со стороны мастера. В противном случае КТ перестает работать. Если не делать autoout, то данные 2 раза отправляются (в силу того, что буферизация двойная), а потом затыкаются. При этом флаг empty на выходе МК не меняется, следовательно ПЛИС и не забирает с него данные. Было каким-то похожим образом, вечером посмотрю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyspark 0 7 февраля, 2009 Опубликовано 7 февраля, 2009 · Жалоба Мария. Не понятно, зачем дважды конфигурировать fifo на EP2, но это ни чего не меняет. А вот где EP6AUTOINLENх. Может по этому не взводит флаги. А ассинхронный дизайн действительно так необходим? Синхронный выглядит понятнее и продолжает синхронный дизайн в ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
marus-ka 0 15 февраля, 2009 Опубликовано 15 февраля, 2009 · Жалоба Мария. А вот где EP6AUTOINLENх. Может по этому не взводит флаги. А ассинхронный дизайн действительно так необходим? Синхронный выглядит понятнее и продолжает синхронный дизайн в ПЛИС. Ну насколько я понимаю, EP6AUTOINLENх конфигурируется, если ep6 работает в режиме IN, у меня она out, поэтому я EP6AUTOINLENх и не использую. А про асинхронный интерфейс: человек, который разрабатывает прошивку для ПЛИС, сказал, что ему так удобнее, спорить не стала, мне-то особой разницы нет) Честно говоря, уже работает. Не поняла толком в чем была ошибка, но помог код, который прислали в личку (Спасибо, alexkok :a14: ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alevnew 0 4 марта, 2009 Опубликовано 4 марта, 2009 · Жалоба Ну насколько я понимаю, EP6AUTOINLENх конфигурируется, если ep6 работает в режиме IN, у меня она out, поэтому я EP6AUTOINLENх и не использую. А про асинхронный интерфейс: человек, который разрабатывает прошивку для ПЛИС, сказал, что ему так удобнее, спорить не стала, мне-то особой разницы нет) Честно говоря, уже работает. Не поняла толком в чем была ошибка, но помог код, который прислали в личку (Спасибо, alexkok :a14: ) Мария, или alexok - не поделитесь кодом инициализации? Беда 1 в 1 как Мария описала - если автоаут - не передаются данные, иначе передаются, пока буффер не заполнится. Не могу понять, все по доке и по примеру из ссылки - не работает. Ну насколько я понимаю, EP6AUTOINLENх конфигурируется, если ep6 работает в режиме IN, у меня она out, поэтому я EP6AUTOINLENх и не использую. А про асинхронный интерфейс: человек, который разрабатывает прошивку для ПЛИС, сказал, что ему так удобнее, спорить не стала, мне-то особой разницы нет) Честно говоря, уже работает. Не поняла толком в чем была ошибка, но помог код, который прислали в личку (Спасибо, alexkok :a14: ) ну вроде немного разобрался, если кому интересно на будущее: После ресета EP2CS = 0x28 (То есть фифо FULL и 4 пакета в буфере, интересно зачем?) Чтобы это убрать нужно (я использую EP2): EP2FIFOCFG = 0x01; //выключить автоаут, хотя по умолчанию он и не стоит SYNCDELAY; //потом очищаем "имеющиеся" 4 пакета в FIFO OUTPKTEND = 0x82; SYNCDELAY; OUTPKTEND = 0x82; SYNCDELAY; OUTPKTEND = 0x82; SYNCDELAY; OUTPKTEND = 0x82; SYNCDELAY; //и вот теперь уже включить автоаут EP2FIFOCFG = 0x11; SYNCDELAY; после этого вроде работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexkok 0 5 марта, 2009 Опубликовано 5 марта, 2009 · Жалоба Мария, или alexok - не поделитесь кодом инициализации? Беда 1 в 1 как Мария описала - если автоаут - не передаются данные, иначе передаются, пока буффер не заполнится. Не могу понять, все по доке и по примеру из ссылки - не работает. ну вроде немного разобрался, если кому интересно на будущее: после этого вроде работает. Если ещё нужно, то вот моя конфигурация.EPs_config.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alevnew 0 5 марта, 2009 Опубликовано 5 марта, 2009 · Жалоба Если ещё нужно, то вот моя конфигурация.EPs_config.txt Спасибо!!! Все вроде заработало, но в процессе обнаружился такой глюк (или может так и должно быть?): Допустим делаю конфигурцию EP2 AutoOut и EP4 AutoIn. Все по 512 байт, bulk. Slave FIFO. Async. Если я ставлю буферизацию EP2=2x - все работает. Если я ставлю буферизацию EP2=4x, то EP2 работает, а вот EP4 игнорирует входные данные, но на PKTEND все же реагирует, но присылает пустой пакет. Причем даже если отключить EP2 (EP2CFG=0) - то все равно EP4 ведет себя так же. Если же буферизация EP2=2x - то все работает ОК. Кто-нибудь сталкивался с таким, ли может в даташите где прописано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexkok 0 5 марта, 2009 Опубликовано 5 марта, 2009 · Жалоба Спасибо!!! Все вроде заработало, но в процессе обнаружился такой глюк (или может так и должно быть?): Допустим делаю конфигурцию EP2 AutoOut и EP4 AutoIn. Все по 512 байт, bulk. Slave FIFO. Async. Если я ставлю буферизацию EP2=2x - все работает. Если я ставлю буферизацию EP2=4x, то EP2 работает, а вот EP4 игнорирует входные данные, но на PKTEND все же реагирует, но присылает пустой пакет. Причем даже если отключить EP2 (EP2CFG=0) - то все равно EP4 ведет себя так же. Если же буферизация EP2=2x - то все работает ОК. Кто-нибудь сталкивался с таким, ли может в даташите где прописано? В TRM на фиг. 1-17 приведены возможные конфигурации ендпойнтов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alevnew 0 6 марта, 2009 Опубликовано 6 марта, 2009 · Жалоба В TRM на фиг. 1-17 приведены возможные конфигурации ендпойнтов. А слона то я и не приметил :) Спасибо! Теперь все стало на свои места. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alevnew 0 6 марта, 2009 Опубликовано 6 марта, 2009 (изменено) · Жалоба А вот еще вопрос возник, мож кто сталкивался: Есть EP4, AUTOIN=1 На каком то этапе (ну какая-либо исключительная ситуация, хост не принимает данные), нужно очистить данные, находящиеся в FIFO. Пробовал так: 1. Переводим в AUTOIN=0 2. Делаем FIFORESET 3. Делаем EP4BCH:L=0 4. делаем INPKTEND=0x84 два раза Не работает, уж по всякому пробовал. Максимум, чего добился, приходят вместо полных пакеты нулевой длины. Но как было в буфере 2 пакета, так и остается. И флаг FULL не сбрасывается. Мож кто делал подобное? Изменено 6 марта, 2009 пользователем alevnew Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 16 марта, 2010 Опубликовано 16 марта, 2010 · Жалоба Проблема с установкой драйверов под Windows7. Скачал новый пакет разработчика с новыми драйверами: http://www.cypress.com/?rID=34870 Подправил, как описано в мануале, VID и PID. Собственно проблема в том, что нет цифровой подписи у драйвера. От сюда не могу поставить драйвер для CY7C68013A. Система сначала говорит, что устанавливаемый драйвер не имеет сертификата, все равно продолжить? Жму да. После установки выдает сообщение, прикрепленное к посту. Пробовал делать и такой маневр: Для отключения проверки цифровой подписи при установке драйверов я использую: gpedit.msc=>Конфигурация_пользователя=>Администрат ивные_шаблоны=>Система=>Установка_драйвера=>Цифров ая_подпись_драйверов_устройств=>Включен=>> Пропустить . Результат тот же. Так же отключал UAC при помощи утилиты UAC off. Что еще можно сделать? Возможно ли сделать цифровую подпись своими силами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 17 марта, 2010 Опубликовано 17 марта, 2010 · Жалоба Проблема с установкой драйверов под Windows7. ... Эх, лучше бы Вам задать этот вопрос в теме Проблема CyUSB.sys и 64-х битных Windows. Судя по всему Вы как раз и пытаетесь установить CyUsb.sys под Windows 7 64 bit (x64). Вот пара ссылок в интернете: Windows 7 - Guide to Installing Un-Signed Drivers in Win 7 x64 и Loading Unsigned Drivers in Windows 7 and Vista 64-bit (x64). Ключевые слова для поиска в интернете - названия тем ссылок, а также "Windows 7 Test Mode". Лично у меня, использовать CyUsb.sys под Windows 7 x64 получается только в режиме Test Mode и при выборе во время загрузки Windows по F8 "Disable Driver Signature Enforcement". То есть, только до следующей перезагрузки Windows 7 :( . Предлагаемая в интернете утилита Driver Signature Enforcement Overrider, по отзывам пользователей, может привести к краху Windows 7. Достаточно экзотическое решение, предложенное в интернете - однократно загрузить компьютер с отключенной проверкой подписи драйверов, а затем вместо перезагрузки переводить компьютер в спящий режим. Правильное решение - подписать драйвер CyUsb.sys или использовать класс устройств USB, поддерживаемый Windows. В XP/SP3, Vista и Win7 добавлена поддержка еще одного класса: USB Video Class. Дальнейшее обсуждение, давайте продолжим в теме Проблема CyUSB.sys и 64-х битных Windows. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirB 1 10 июня, 2010 Опубликовано 10 июня, 2010 · Жалоба А вот еще вопрос возник, мож кто сталкивался: Есть EP4, AUTOIN=1 На каком то этапе (ну какая-либо исключительная ситуация, хост не принимает данные), нужно очистить данные, находящиеся в FIFO. Пробовал так: 1. Переводим в AUTOIN=0 2. Делаем FIFORESET 3. Делаем EP4BCH:L=0 4. делаем INPKTEND=0x84 два раза Не работает, уж по всякому пробовал. Максимум, чего добился, приходят вместо полных пакеты нулевой длины. Но как было в буфере 2 пакета, так и остается. И флаг FULL не сбрасывается. Мож кто делал подобное? Возникла аналогичная проблема: поднял в кипарисе CY7C68013A прерывание по которому нужно очистить FIFO EP2 IN и ничего не очищается, хотя светоидиот по прерыванию мигает. Может за год уже кто-нибудь решил эту проблему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться