|
|
  |
USB, EZ-USB FX2 |
|
|
|
Nov 6 2010, 20:22
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Konst_777 @ Nov 6 2010, 20:47)  То есть, будете использовать для Slave FIFO синхронные чтение и запись. Скорость асинхронного чтения Slave FIFO не более 20 МБайт/с, а записи и того меньше. ой.. пугаете откуда у контроллера синхронный интерфейс? асинхронно будет... А откуда подобные цифры? На каком девайсе производился замер? Кстати, есть еще один вопрос. Если контроллер занят обработкой полученных данных и не может забрать из full FIFO, FX2 корректно это отработает?
|
|
|
|
|
Nov 7 2010, 08:52
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(toweroff @ Nov 6 2010, 23:22)  ...А откуда подобные цифры?... Из Datasheet. Разделы "10.8 Slave FIFO Asynchronous Read" и "10.10 Slave FIFO Asynchronous Write". Цитата(toweroff @ Nov 6 2010, 23:22)  ...Кстати, есть еще один вопрос. Если контроллер занят обработкой полученных данных и не может забрать из full FIFO, FX2 корректно это отработает? FX2 отработает корректно: будет отсылать NAK хост контроллеру USB. Таймауты обмена по USB задает Ваша программа для ПЭВМ.
|
|
|
|
|
Nov 7 2010, 10:01
|
Группа: Новичок
Сообщений: 8
Регистрация: 10-10-08
Пользователь №: 40 852

|
Есть устройство " AD9959/PCB evaluation board" в котором для управления DDS используется CY7C68013. К устройству есть софт для управления по USB. Есть пакеты снятые USB Logger в режиме настройки. Нужно реализовать свою программу управления, которая формирует необходимые пакеты. - Как лучше подобраться к решению вопроса? - Можно ли не переделывать драйвер? - С чего лучше начать? Есть много ссылок на использование пакета EZ-USB Development Tools V2.61.700, но на сайте Cypress его не нашел. Или может указанный пакет не сильно поможет?
|
|
|
|
|
Nov 8 2010, 13:18
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Что-то никак не дрыгаются флаги Отконфигурированы так: EP2 - bulk OUT 512 (x4), EP6 - bulk IN 512 x4, флаги: PINFLAGSAB = 0xE0; // FLAGB - EP6FF PINFLAGSCD = 0x08; // FLAGC - EP2EF в результате флаги не дрыгаются никак (FLAGB - 1, FLAGC - 0). Пробовал отсылать в точку EP2 пакеты и меньше 512 байт, и больше, и забить фсю FIFO - 2048 байт. Дескриптор точно в порядке, перепроверял не один раз Драйвер пользуется libusb - может тут что-то не в порядке? Может супресс любит только свой драйвер? проект для FX2 базируется на этом Manual Mode Operation of EZ-USB FX2LP™ in GPIF and Slave FIFO Configuration
|
|
|
|
|
Nov 8 2010, 18:49
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(toweroff @ Nov 8 2010, 16:18)  Что-то никак не дрыгаются флаги Отконфигурированы так: EP2 - bulk OUT 512 (x4), EP6 - bulk IN 512 x4, флаги: PINFLAGSAB = 0xE0; // FLAGB - EP6FF PINFLAGSCD = 0x08; // FLAGC - EP2EF в результате флаги не дрыгаются никак (FLAGB - 1, FLAGC - 0). Пробовал отсылать в точку EP2 пакеты и меньше 512 байт, и больше, и забить фсю FIFO - 2048 байт. Дескриптор точно в порядке, перепроверял не один раз Драйвер пользуется libusb - может тут что-то не в порядке? Может супресс любит только свой драйвер? проект для FX2 базируется на этом Manual Mode Operation of EZ-USB FX2LP™ in GPIF and Slave FIFO Configurationпроблема снята - криворукий копипаст называется Но появился новый проблем. Отсылаю в точку 4 байта. Точка отконфигурирована с WORDWIDE=1, т.е. 16 бит По идее, я в асинхронном режиме должен забрать эти 4 байта за две шинных операции, однако флаг FIFOEMPTY устанавливается уже после первого чтения FIFO. При этом софт на ПК говорит, что все 4 байта в точку доставлены. Где могут быть грабли? ЗЫ. Младшая часть U32 с ПК доставлена корректно
|
|
|
|
|
Nov 10 2010, 23:36
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Не принимаю данные с точки IN. TraceUSB говорит, что пакет есть, но данных ноль, хотя длина пакета указывается корректно - 0х200 может что наинитил не то... Код void TD_Init( void ) { // Called once at startup
SYNCDELAY; // REVCTL=0x03;
SYNCDELAY; // CPUCS = 0x10; // CLKSPD[1:0]=10, for 48MHz operation, output CLKOUT
SYNCDELAY; // IFCONFIG = 0xCB; // for async
SYNCDELAY; // PORTACFG = 0x40; // FLAGD is /CHIPSELECT
// EP2 512 BULK OUT 4x SYNCDELAY; // see TRM section 15.14 EP2CFG = 0xA0; // BUF[1:0]=00 for 4x buffering // EP6 512 BULK IN 4x SYNCDELAY; // EP6CFG = 0xE0; // BUF[1:0]=00 for 4x buffering // EP4 and EP8 are not used in this implementation... SYNCDELAY; // EP4CFG = 0x20; // clear valid bit SYNCDELAY; // EP8CFG = 0x60; // clear valid bit
SYNCDELAY; FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions SYNCDELAY; // see TRM section 15.14 FIFORESET = 0x82; // reset, FIFO 2 SYNCDELAY; // see TRM section 15.14 FIFORESET = 0x84; // reset, FIFO 4 SYNCDELAY; // see TRM section 15.14 FIFORESET = 0x86; // reset, FIFO 6 SYNCDELAY; // FIFORESET = 0x88; // reset, FIFO 8 SYNCDELAY; // see TRM section 15.14 FIFORESET = 0x00; // deactivate NAK-ALL
SYNCDELAY; // OUTPKTEND = 0x82; SYNCDELAY; // OUTPKTEND = 0x82; SYNCDELAY; // OUTPKTEND = 0x82; SYNCDELAY; // OUTPKTEND = 0x82;
SYNCDELAY; // EP2FIFOCFG = 0x11; // AUTOOUT=1, WORDWIDE=1 SYNCDELAY; // EP6FIFOCFG = 0x0D; // AUTOIN=1, WORDWIDE=1
SYNCDELAY; EP6AUTOINLENH = 0x02; SYNCDELAY; EP6AUTOINLENL = 0x00;
SYNCDELAY; PINFLAGSAB = 0xE0; // FLAGA - indexed, FLAGB - EP6FF SYNCDELAY; PINFLAGSCD = 0x08; // FLAGC - EP2EF, FLAGD - indexed SYNCDELAY;
FIFOPINPOLAR = 0x00; SYNCDELAY;
} с другими объемами передачи то же самое, т.е. в USB Trace показывается длина данных, которая ожидается (1024), а не та, которая передается (2048) Buffer Size при этом в снифере==0, т.е. ничего не принято где я накосячил в инициализации? вроде ж все верно...
|
|
|
|
|
Nov 13 2010, 20:59
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Переделал вместо фифы6 на фифу8 опа, словил на PC 2 байта. Но это не 512 точно уже перепробовал замену полностью fw.c на оригинальный (ну.. мало ли что.. я ж не фирмваре пишу, а как slave пользую), соответственно td_init поменялся в конфиге на 8-ю фифу нихт, точнее - уже что-то начал принимать то, и не то, и не все Ровно 2 байта, совершенно других Сигналы /WR, /RD, A, D смотрелись осциллом с полосой 200МГц, нет никаких пертрубаций, иголок точно не увидел
|
|
|
|
|
Nov 15 2010, 17:35
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(toweroff @ Nov 14 2010, 00:59)  ...Сигналы /WR, /RD, A, D смотрелись осциллом с полосой 200МГц, нет никаких пертрубаций, иголок точно не увидел а PKTEND ?
|
|
|
|
|
Nov 16 2010, 18:40
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(toweroff @ Nov 16 2010, 00:51)  сигнал тоже в порядке. Но, т.к. я пользую AUTO FIFO IN, указываю размер пакета в виде 0x200 и такой же передаю, он, по идее, должен отправляться самостоятельно? Или я неправ? Да, в этом случае PKTEND можно не использовать. Важно, чтобы этот сигнал не висел в воздухе и не был в активном состоянии (может быть и "0" и "1" в зависимости от установок регистра FIFOPINPOLAR). Цитата(toweroff @ Nov 16 2010, 16:25)  Подскажите, где найти DC описание параметров фронтов сигналов интерфейса для FX2?... Datasheet для FX2LP. Datasheet для FX2 не смог найти на сайте Cypress. Полагаю, что временные диаграммы одинаковы для FX2 и FX2LP. Но проверять лень. Поэтому выкладываю datasheet для FX2:
|
|
|
|
|
  |
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|