Jump to content

    
Sign in to follow this  
anton

Работа с USB2.0 SX2

Recommended Posts

Запускаю 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кОм; то же самое. Собрал вторую макетную плату работает точно так же как и первая я в отчаянии. Может у кого были подобные симптомы поделитесь рецептом или есть сгоревшие образцы которые не работают так же как и мои и надо собирать третью макетную плату.

Share this post


Link to post
Share on other sites
т.е. подаю 0 на SLWR, SX2 начинает жрать кучу тока, падает напряжение питания и перестает работать кварц и SX2 пропадает с шины USB.

 

Куча, это скока? И вкаком режиме(синхронный или асинхронный)?

 

на всякий случай на последовательную шину SX2 поставил резисторы 1кОм;

 

Где у него такая шина?

 

Проверил все тестером тыкал на SLOE, SLWR, ADR0-2 все правильно,

 

ПРи включении SLOE - Data шина в высокоимпедансное состояние уходит?

Share this post


Link to post
Share on other sites

1. ток не мерял но стабилизатор 3.3В на 1А должно хватать; SX2 работает в асинхронном режиме так как ATmega8 в синхронном не успеет.

2. Сори действительно оговорился имелось в виду параллельная шина (уже исправлено).

3. Шина уходит в высокоимпедансное состояние так как падение напряжения на резисторая 1кОм 0.2В а ATmega8 питается от 5В.

Share this post


Link to post
Share on other sites
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 не нужен(хотя подробностей не помню)...

Share this post


Link to post
Share on other sites
Зачем в даташите в схеме питание на AVCC подаеться через RC цепочку?

 

Называется - развязывающий фильтр.

480 мегагерц шоб по плате не гуляло.

В твоём случае - вещь абсолютно бесполезная. У меня этой цепочки тоже нету.

Кстати, обрати внимание на номинал резистора.

Надеюсь, у тебя все выводы Vcc зашунтированы 0.1микрофарадами...

Share this post


Link to post
Share on other sites
Зачем в даташите в схеме питание на AVCC подаеться через RC цепочку?

 

Называется - развязывающий фильтр.

480 мегагерц шоб по плате не гуляло.

В твоём случае - вещь абсолютно бесполезная. У меня этой цепочки тоже нету.

Кстати, обрати внимание на номинал резистора.

Надеюсь, у тебя все выводы Vcc зашунтированы 0.1микрофарадами...

 

Зашунтированы.

Я вообще сейчас плату переразвожу (до этого не я разводил) и ставлю новую микруху. Потому что как я не пытался ее заставить заработать, так она и не заработала. Винда пишет, что найдено новое устройство, но оно не опознано.

Единственное что, я не могу из реестра удалить нулевые пиды (пишет что из-за ошибки не возможно удаление всех ключей).

Share this post


Link to post
Share on other sites

Коллеги!

Есть плата: 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 не идентифицирует новое устройство.

В чем может быть проблема?

Share this post


Link to post
Share on other sites
Коллеги!

Есть плата: 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 - не ясна абсолютно...

Share this post


Link to post
Share on other sites
Коллеги!

Есть плата: 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...

Кароче, посмотри как это всё работает, а уж потом будешь весь из себя - крутой программер у которого все блоки с первого раза заработали...

Share this post


Link to post
Share on other sites

При первом знакомстве с этим драйвером выявилось следующее:

PC не может принят от устройства посылку более 64 байт. Приняв 64 байта происходит выход из процедуры чтения, хотя ожидаемый пакет: несколько килобайт.

использую следующие pipe:

pipe $2 на запись

pipe $86 на чтение

процедура: WDU_Transfer

Что харрактерно: windriverwizard также не может принят более 64 байт, при этом замечено что PC генерит 8мс паузы между этими пакетами (в режиме прослушивания)...

Кто нибудь может подсказать где собака зарыта?

Есть подозрения что дело во размерах входного буфера USb со стороны PC, если это так, то как изменить его настройки (размер)?

Share this post


Link to post
Share on other sites
При первом знакомстве с этим драйвером выявилось следующее:

PC не может принят от устройства посылку более 64 байт. Приняв 64 байта происходит выход из процедуры чтения, хотя ожидаемый пакет: несколько килобайт.

использую следующие pipe:

pipe $2    на запись

pipe $86  на чтение

процедура: WDU_Transfer

Что харрактерно: windriverwizard также не может принят более 64 байт, при этом замечено что PC генерит 8мс паузы между этими пакетами (в режиме прослушивания)...

Кто нибудь может подсказать где собака зарыта?

Есть подозрения что дело во размерах входного буфера USb со стороны PC, если это так, то как изменить его настройки (размер)?

 

У меня буфер(физический) 4 килобайта, а драйвер берёт 64килобайта.

Так, что - фигня это всё.

К тому же, через какой эндпоинт данные гонишь?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this