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

 
 
> проблема USB cy7c68013a, инициализация устройства
леха_настойчивый
сообщение Sep 10 2007, 15:46
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Здавствуйте люди!

Подскажите кто может, в чем проблема при выделении пямяти под структуру СyUSBdevice
уже месяц бьюсь, не пойму в чем дело. СТУДИЯ видит устройство (су7с68013а)
данные передаються и принимаються, я подключил библиотеку СYUsb.Lib , СYUsb.h
к проекту, компилируеться нормально, но на строке
s_usb_device = new CCyUSBDevice();------ сообщение
"Access vilation at address 004048e1 in module "Project1" write address 0017f62c"
Заранее благодарен, Алексей.

Код

c++ Bulder

void* usb_init(void)
{
    int i = 2;
CCyUSBDevice*s_usb_device = new CCyUSBDevice();

    // open my device
    if (s_usb_device->DeviceCount()) {
        // search for all connected devices, and add the one that has the right name
        for (i = 0; i < s_usb_device->DeviceCount(); i++) {
            s_usb_device->Open(i);
            if(strcmp (USB_DEVICE_NAME, s_usb_device->DeviceName) == 0)
                break;
            s_usb_device->Close();
        }
    } else {
        // Cannot find my device
        return NULL;
    }

    if (!s_usb_device->IsOpen()) {
        // Could not open my device
        return NULL;
    }

    delete s_usb_device;

  }
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-=HermiT=-
сообщение Nov 25 2008, 11:37
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 29-11-05
Из: Belarus
Пользователь №: 11 540



В документе FX2 TechRefManual.pdf написано:
Цитата
The USB 2.0 Specification requires that high-speed (480 Mbit/sec) devices must also be capable
of enumerating at full-speed (12 Mbit/s). In fact, all high-speed devices begin the enumeration process
in full-speed mode; devices switch to high-speed operation only after the host and device
have agreed to operate at high speed. The high-speed negotiation process occurs during USB
reset, via the “Chirp” protocol described in Chapter 7 of the USB 2.0 Specification.

(что за “Chirp” protocol я там так и не нашел). Но зато в 7 главе есть следующее:
Цитата
7.5 USB Bus Reset
The host signals a USB Bus Reset by driving an SE0 state (both D+ and D- data lines low) for a
minimum of 10 ms. The FX2 senses this condition, requests the USB Interrupt (INT2), and supplies
the interrupt vector for a USB Reset. After a USB bus reset, the following occurs:
• Toggle bits are cleared to 0.
• The device address is reset to zero.
• If the Default USB Device is active, the USB configuration and alternate settings are reset
to zero.
• The FX2 will renegotiate with the host for high-speed (480 Mbps) mode.


Казалось бы то, что надо.
Вставил команду:
Код
DeviceIoControl        (FX2Device,
                                IOCTL_Ezusb_RESET,
                                NULL,
                                0,
                                NULL,
                                0,
                                (unsigned long *)&nBytes,
                                NULL);

Но она никак не повлияла
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Nov 25 2008, 17:46
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(-=HermiT=- @ Nov 25 2008, 14:37) *
В документе FX2 TechRefManual.pdf написано:

(что за “Chirp” protocol я там так и не нашел). Но зато в 7 главе есть следующее:


Добрый день.

Ну для начала внимательно смотрим на то что написано. Вами указано именно ссылка на главу 7 USB2.0 спецификации, а не пользовательской инструкции FX2.
Ну а если вы там почитаете внимательно, то там идет описание выхода устройства на High speed режим.
И самое главное. Если у вас хост не high speed, то FX2 не перейдет на бфструю скорость. И наоборот. Если у вас хост 2.0, то несущая у вас будет с FX2 именно 480Мбит. Даже если вы скажете FX2, что работатете на full speed (пропускная способность кончно упадет, но несущая будет 480МГц).
В свое время пытался из-за глюков (потеря данных, периодическое пропадание устройства в системе) на плохом кабеле, но с хостом USB2.0 заставить всеми силами FX2 перейти на несущую 12мбит. Но без отключения хаба 2.0 в компе этого не происходит. И виноват в этом Chirp протокол smile.gif Он работает на нижнем уровне и на него нет возможности повлиять со стороны FX2.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Nov 26 2008, 19:14
Сообщение #4


Знающий
****

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



Цитата(AndreyS @ Nov 25 2008, 21:46) *
Если у вас хост 2.0, то несущая у вас будет с FX2 именно 480Мбит. Даже если вы скажете FX2, что работатете на full speed (пропускная способность кончно упадет, но несущая будет 480МГц).

В разделе "3.1 Disabling High-speed Chirp via EEPROM Config Byte" документа "Migrating From EZ-USB FX2™ to EZ-USB FX2LP™" (fx2_to_fx2lp.pdf) описано, как заставить FX2/FX2LP работать на Full Speed с High Speed хостом.

Цитата(AndreyS @ Nov 25 2008, 21:46) *
В свое время пытался из-за глюков (потеря данных, периодическое пропадание устройства в системе) на плохом кабеле, но с хостом USB2.0 заставить всеми силами FX2 перейти на несущую 12мбит. Но без отключения хаба 2.0 в компе этого не происходит. И виноват в этом Chirp протокол smile.gif Он работает на нижнем уровне и на него нет возможности повлиять со стороны FX2.

Сам такую задачу не решал, так что, сейчас буду фантазировать smile.gif
Можно так: подключиться с разрешенным “Chirp”, затем проанализировать, если в течении определенного времени хост не присваивает адрес FX2/FX2LP, хотя VBUS присутствует, то FX2/FX2LP устанавливает в "1" бит 1 недокументированного регистра CT1 и переподключается к USB.
Дальше: наличие сбоев обмена анализировать по регистрам USBERRIE, USBERRIRQ, ERRCNTLIM, CLRERRCNT. Если число сбоев больше допустимого, то опять таки, переключить FX2/FX2LP в режим Full Speed.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Dec 2 2008, 20:46
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(Konst_777 @ Nov 26 2008, 22:14) *
В разделе "3.1 Disabling High-speed Chirp via EEPROM Config Byte" документа "Migrating From EZ-USB FX2™ to EZ-USB FX2LP™" (fx2_to_fx2lp.pdf) описано, как заставить FX2/FX2LP работать на Full Speed с High Speed хостом.


Добрый день.
Нашел этот документ, но в нем нет адреса этого регистра, в даташите об этом регистре тоже ничего нет.
Нашел хидер с перечнем недокументированных регистров ( в том числе и адрес этого пресловутого CT1). Но возник резонный вопрос, а дока по ним есть?? smile.gif Я что-то не нашел.

Сообщение отредактировал AndreyS - Dec 2 2008, 20:47


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Dec 3 2008, 18:59
Сообщение #6


Знающий
****

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



Цитата(AndreyS @ Dec 3 2008, 00:46) *
Добрый день.
Нашел этот документ, но в нем нет адреса этого регистра, в даташите об этом регистре тоже ничего нет.
Нашел хидер с перечнем недокументированных регистров ( в том числе и адрес этого пресловутого CT1). Но возник резонный вопрос, а дока по ним есть?? smile.gif Я что-то не нашел.

Я и не искал. Поскольку прочитал в "FX2regs.h", что:
Код
/ Debug/Test
// The following registers are for Cypress's internal testing purposes only.
// These registers are not documented in the datasheet or the Technical Reference
// Manual as they were not designed for end user application usage
EXTERN xdata volatile BYTE DBUG              _AT_ 0xE6F8;  // Debug
EXTERN xdata volatile BYTE TESTCFG           _AT_ 0xE6F9;  // Test configuration
EXTERN xdata volatile BYTE USBTEST           _AT_ 0xE6FA;  // USB Test Modes
EXTERN xdata volatile BYTE CT1               _AT_ 0xE6FB;  // Chirp Test--Override
EXTERN xdata volatile BYTE CT2               _AT_ 0xE6FC;  // Chirp Test--FSM
EXTERN xdata volatile BYTE CT3               _AT_ 0xE6FD;  // Chirp Test--Control Signals
EXTERN xdata volatile BYTE CT4               _AT_ 0xE6FE;  // Chirp Test--Inputs

Если есть большое желание узнать, как использовать эти регистры, то можно попробовать пообщаться с техподдержкой Cypress. Отвечают они всегда быстро, но, бывает, что результат общения - нулевой.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Dec 3 2008, 20:48
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(Konst_777 @ Dec 3 2008, 21:59) *
Если есть большое желание узнать, как использовать эти регистры, то можно попробовать пообщаться с техподдержкой Cypress. Отвечают они всегда быстро, но, бывает, что результат общения - нулевой.



Спасибо. Было просто любопытно.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
Vix
сообщение Dec 5 2008, 07:17
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 24-06-05
Пользователь №: 6 281



Итак, снова о CodeGear 2007 и Builder6.
Исключительную ситуацию в CodeGear 2007 вызывают следующие коды
1) ... = new CCyUSBDevice(...);
2) USBDevice->Open(...);

Чтобы использовать CyAPI в CodeGear 2007, необходимо написать простую DLL в Builder6.
В DLL передается VID & PID, а возвращается указатель на CCyUSBDevice. Далее работаем с CyAPI как обычно.

Пример функции из DLL

extern "C" __declspec(dllexport) CCyUSBDevice* IUSBDeviceOpen(int VID,int PID){
CCyUSBDevice *USBDevice = new CCyUSBDevice(NULL);
int i;
int USBDevCount = USBDevice->DeviceCount();
if (USBDevCount == 0) return NULL;
for (i = 0; i < USBDevCount; i++)
{
USBDevice->Open(i);
if((USBDevice->VendorID == VID) && (USBDevice->ProductID == PID))
break;
}
if(i == USBDevCount) return NULL;//"No USB device found";
if(!USBDevice->EndPoints)
{
USBDevice->ReConnect();
return NULL;
}
return USBDevice;
}

Если нужна готовая DLL (со стандартным GUID), могу выложить.
Go to the top of the page
 
+Quote Post
J2post
сообщение Dec 10 2008, 12:20
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 43
Регистрация: 12-04-06
Из: Томск
Пользователь №: 16 049



Цитата(Vix @ Dec 5 2008, 13:17) *
Итак, снова о CodeGear 2007 и Builder6.
Исключительную ситуацию в CodeGear 2007 вызывают следующие коды
1) ... = new CCyUSBDevice(...);
2) USBDevice->Open(...);

Чтобы использовать CyAPI в CodeGear 2007, необходимо написать простую DLL в Builder6.
В DLL передается VID & PID, а возвращается указатель на CCyUSBDevice. Далее работаем с CyAPI как обычно.

Пример функции из DLL

extern "C" __declspec(dllexport) CCyUSBDevice* IUSBDeviceOpen(int VID,int PID){
CCyUSBDevice *USBDevice = new CCyUSBDevice(NULL);
int i;
int USBDevCount = USBDevice->DeviceCount();
if (USBDevCount == 0) return NULL;
for (i = 0; i < USBDevCount; i++)
{
USBDevice->Open(i);
if((USBDevice->VendorID == VID) && (USBDevice->ProductID == PID))
break;
}
if(i == USBDevCount) return NULL;//"No USB device found";
if(!USBDevice->EndPoints)
{
USBDevice->ReConnect();
return NULL;
}
return USBDevice;
}

Если нужна готовая DLL (со стандартным GUID), могу выложить.

Очень интересует такой вопрос, а для VC будет работать эта DLL написанная в Borlande??????????
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- леха_настойчивый   проблема USB cy7c68013a   Sep 10 2007, 15:46
- - Warlord   Звезду убери КодCCyUSBDevice s_usb_device = new CC...   Sep 11 2007, 06:18
|- - леха_настойчивый   Цитата(Warlord @ Sep 11 2007, 09:18) Звез...   Sep 11 2007, 15:00
|- - Warlord   Да, со звездой я погорячился. Попробуй вынести пер...   Sep 12 2007, 07:59
|- - леха_настойчивый   Цитата(Warlord @ Sep 12 2007, 10:59) Да, ...   Sep 12 2007, 10:01
|- - Warlord   Цитата(леха_настойчивый @ Sep 12 2007, 14...   Sep 12 2007, 10:57
|- - леха_настойчивый   Цитата(Warlord @ Sep 12 2007, 13:57) Стра...   Sep 12 2007, 11:23
||- - Warlord   Цитата(леха_настойчивый @ Sep 12 2007, 15...   Sep 12 2007, 12:19
||- - леха_настойчивый   Цитата(Warlord @ Sep 12 2007, 15:19) Это ...   Sep 12 2007, 12:40
||- - леха_настойчивый   Цитата(леха_настойчивый @ Sep 12 2007, 15...   Sep 13 2007, 06:18
||- - Warlord   Собери это проект, отключив на закладке Linker гал...   Sep 13 2007, 09:01
||- - леха_настойчивый   Цитата(Warlord @ Sep 13 2007, 12:01) Собе...   Sep 13 2007, 10:32
||- - Warlord   У тебя какой Билдер?? Явно не шестой. EXe-шник не ...   Sep 13 2007, 12:07
||- - леха_настойчивый   Цитата(Warlord @ Sep 13 2007, 15:07) У те...   Sep 13 2007, 13:46
||- - Warlord   Цитата(леха_настойчивый @ Sep 13 2007, 17...   Sep 14 2007, 05:40
||- - леха_настойчивый   Цитата(Warlord @ Sep 14 2007, 08:40) ИМХО...   Sep 14 2007, 06:56
||- - Vix   Всем привет! Скажите, что такого изменилось в ...   Mar 14 2008, 07:42
||- - Vix   Кстати, если в CBuilder 2007 использовать IOCTL вм...   Mar 14 2008, 10:22
|- - Дуглас Шеппард   Цитата(Warlord @ Sep 12 2007, 16:27) Посы...   Apr 3 2008, 13:24
- - -Al-   С этим Cypress API есть довольно неприятная хренов...   Sep 13 2007, 13:02
- - MSL   Начал сегодня возиться с одной платой с 68013А - т...   Mar 29 2008, 15:16
- - Serg_Sm   Выкиньте вы эти библиотеки - я вот написал класс д...   Mar 31 2008, 09:04
- - MSL   Цитата(Serg_Sm @ Mar 31 2008, 13:04) Выки...   Mar 31 2008, 18:43
|- - Vix   MSL Вот простенький примерчик. Без потоков и OVERL...   Apr 1 2008, 02:57
- - MSL   Цитата(Vix @ Apr 1 2008, 06:57) Вот прост...   Apr 1 2008, 08:18
|- - Vix   MSL Видимо, кому что ближе и удобнее... ИМХО: унив...   Apr 1 2008, 08:34
|- - Седой   Цитата(Vix @ Apr 1 2008, 14:34) ИМХО: уни...   Apr 1 2008, 20:42
- - MSL   2 'Vix' Ясно, значит тема про LIB для BCB...   Apr 1 2008, 08:57
- - -=HermiT=-   Здравствуйте! Бьюсь со скоростью обмена. Возн...   Nov 21 2008, 11:56
- - -=HermiT=-   может, надо при инициализации устройства какие-то ...   Nov 25 2008, 07:53
|- - -=HermiT=-   Цитата(AndreyS @ Nov 25 2008, 20:46) Вами...   Nov 26 2008, 12:16
|- - AndreyS   Цитата(Konst_777 @ Nov 26 2008, 22:14) В ...   Nov 29 2008, 20:24
|- - Vix   Цитата(J2post @ Dec 10 2008, 15:20) Очень...   Dec 10 2008, 12:32
|- - J2post   Цитата(Vix @ Dec 10 2008, 18:32) Маловеро...   Dec 10 2008, 12:38
- - -=HermiT=-   Проблема решилась с помощью использования асинхрон...   Nov 25 2008, 14:51
- - -=HermiT=-   В общем на этом грабли на пути достижения высокой ...   Nov 27 2008, 07:04
- - MegaElektronik   Здравствуйте! Помогите пожалуйста! Проб...   Dec 5 2008, 07:07
- - Glitko   Помогите разобратся ! У меня на плате CY768013...   May 18 2009, 03:53
- - Vix   to Glitko читаете данные каким образом?   May 18 2009, 04:11
- - alexkok   Цитата(Glitko @ May 18 2009, 06:53) Помог...   May 18 2009, 04:12
- - Glitko   Цитата(Glitko @ May 18 2009, 06:53) Помог...   May 18 2009, 16:29


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:16
Рейтинг@Mail.ru


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