реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблемы с GPIF в CY7C68013a
Мария Е
сообщение Nov 29 2008, 11:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 18-11-07
Из: Москва
Пользователь №: 32 424



Здравствуйте!
Пытаюсь разобраться с GPIF в МК CY7C68013a. Согласно TechRefManual создаю файл для инициализации GPIF с помощью GpifDesigner (скачала с сайта cypress). Но столкнулась со следующей проблемой: если в проект в Кейле подключать сгенерированный GpifDesigner сишный файл, то проект нормально компилится, прошивается в МК, но при переподключении устройства (из Cypress USB Console) новое устройство консолью не обнаруживается. Через некоторое время винда говорит, что USB устройство не опознано, а USB Device viewer:
---===>Device Information<===---

ConnectionStatus: FailedEnumeration
Current Config Value: 0x00 -> Device Bus Speed: Low
Device Address: 0x00
Open Pipes: 0
*!*ERROR: No open pipes!

===>Device Descriptor<===
*!*ERROR: bLength of 0 incorrect, should be 18
bLength: 0x00
bDescriptorType: 0x00
bcdUSB: 0x0000
bDeviceClass: 0x00
*!*ERROR: Device enumeration failure

Если убрать файл, сгенерированный GpifDesigner, то все ок (обнаруживается новое устройство)wacko.gif

Кто-нибудь сталкивался с чем-то подобным? В чем может быть проблема?
Go to the top of the page
 
+Quote Post
vvvvv
сообщение Nov 30 2008, 12:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 342
Регистрация: 21-06-04
Пользователь №: 85



У него там настройки не только GPIF интерфейса но и тактовой и управляющих сигналов, поэтому внимательно сравните все настройки текущие и те, что выставляются в GPIF редакторе...
Go to the top of the page
 
+Quote Post
Мария Е
сообщение Dec 8 2008, 13:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 18-11-07
Из: Москва
Пользователь №: 32 424



Цитата(vvvvv @ Nov 30 2008, 15:44) *
У него там настройки не только GPIF интерфейса но и тактовой и управляющих сигналов, поэтому внимательно сравните все настройки текущие и те, что выставляются в GPIF редакторе...


как я поняла, в основном надо проверять соответствие содержимого IFCONFIG, сгенерированного GPIFDesigner, и настроек в остальном проекте.
Проверила, подправила, но сути не изменилось. Сейчас винда не говорит, что устройство не опознано. Но опознается оно с "родными" VID и PID контроллера. (а не с теми, которые я указала в дескрипторах в своем проекте)

Не знаю что и делать, подскажите, где еще могут быть косяки.

Пробовала даже забить на обмен данными по GPIF, просто инициализирую его и все, но результат такой же.
Смотрела пример с DSP из GpifDesigner, особых отличий (ну кроме GPIF дескрипторов) от своего проекта не нашла. Вроде все делается приблизительно также и в том же порядке
help.gif
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Dec 9 2008, 19:16
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(Мария Е @ Dec 8 2008, 17:07) *
...
Не знаю что и делать, подскажите, где еще могут быть косяки.
...

Попробуйте в качестве отправной точки firmware из Archive.rar в теме прием данных из АЦП в ПК по USB. Возможно, модифицируя этот проект, Вы быстрее получите желаемое.
Go to the top of the page
 
+Quote Post
Мария Е
сообщение Dec 14 2008, 10:10
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 18-11-07
Из: Москва
Пользователь №: 32 424



Спасибо, попробую
Go to the top of the page
 
+Quote Post
Мария Е
сообщение Dec 29 2008, 21:00
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 18-11-07
Из: Москва
Пользователь №: 32 424



Спасибо за пример, действительно сильно помогло.
Сейчас работает in передача (из плис в CY7C68013a и в хост) в manual mode, но проблемы с autoin.
На сколько я поняла, настройка autoin заключается в его разрешении и загрузке числа байт (которое хотим передавать автоматически) в EP2AUTOINLENH:L.
Если я пишу в EP2AUTOINLENH:L число меньше 40, то хостом принимается 512 байт, а если больше 40, то устройство вообще не опознается системой.
Подскажите, в чем может быть косяк?
Я неправильно понимаю принцип работы?

Куски кода:

.....// инициализация
SYNCDELAY;
EP2FIFOCFG = 0x04; // EP2 is: 0, INFM1=0, OEP1=0, AUTOOUT=0, AUTOIN=0, ZEROLEN=1, 0, WORDWIDE=0
SYNCDELAY;
EP2FIFOCFG = 0x0c; // EP2 is: 0, INFM1=0, OEP1=0, AUTOOUT=0, AUTOIN=1, ZEROLEN=1, 0, WORDWIDE=0
SYNCDELAY;

EP2AUTOINLENH = MSB(count); // if AUTOIN=1, auto commit 512 byte packets
SYNCDELAY;
EP2AUTOINLENL = LSB(count);
.......

//опрос
if( GPIFTRIG & 0x80 ) // if GPIF interface IDLE
{
if ( ! ( EP24FIFOFLGS & 0x01 ) ) // if EP2 fifo is not full
{

SYNCDELAY;
GPIFTCB1 = MSB(count); // setup transaction count with 512
SYNCDELAY;
GPIFTCB0 = LSB(count);
SYNCDELAY;

GPIFTRIG = GPIFTRIGRD | GPIF_EP2; // launch GPIF FIFO READ Transaction to EP2IN
SYNCDELAY;

while( !( GPIFTRIG & 0x80 ) ); // poll GPIFTRIG.7 GPIF Done bit

SYNCDELAY;
.....

Если делать передачу пакетов через установку соответствующего бита в регистре INPKTEND, то все нормально работает. Но хотелось бы полного автомата))))
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 07:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01314 секунд с 7
ELECTRONIX ©2004-2016