|
проблема USB cy7c68013a, инициализация устройства |
|
|
|
Sep 10 2007, 15:46
|
Участник

Группа: Новичок
Сообщений: 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;
}
|
|
|
|
|
 |
Ответов
|
Nov 25 2008, 11:37
|
Частый гость
 
Группа: Свой
Сообщений: 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); Но она никак не повлияла
|
|
|
|
|
Nov 25 2008, 17:46
|

Местный
  
Группа: Участник
Сообщений: 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 протокол  Он работает на нижнем уровне и на него нет возможности повлиять со стороны FX2.
--------------------
Удачи.
|
|
|
|
|
Nov 26 2008, 19:14
|
Знающий
   
Группа: Свой
Сообщений: 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 протокол  Он работает на нижнем уровне и на него нет возможности повлиять со стороны FX2. Сам такую задачу не решал, так что, сейчас буду фантазировать Можно так: подключиться с разрешенным “Chirp”, затем проанализировать, если в течении определенного времени хост не присваивает адрес FX2/FX2LP, хотя VBUS присутствует, то FX2/FX2LP устанавливает в "1" бит 1 недокументированного регистра CT1 и переподключается к USB. Дальше: наличие сбоев обмена анализировать по регистрам USBERRIE, USBERRIRQ, ERRCNTLIM, CLRERRCNT. Если число сбоев больше допустимого, то опять таки, переключить FX2/FX2LP в режим Full Speed.
|
|
|
|
|
Dec 2 2008, 20:46
|

Местный
  
Группа: Участник
Сообщений: 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). Но возник резонный вопрос, а дока по ним есть??  Я что-то не нашел.
Сообщение отредактировал AndreyS - Dec 2 2008, 20:47
--------------------
Удачи.
|
|
|
|
|
Dec 3 2008, 18:59
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(AndreyS @ Dec 3 2008, 00:46)  Добрый день. Нашел этот документ, но в нем нет адреса этого регистра, в даташите об этом регистре тоже ничего нет. Нашел хидер с перечнем недокументированных регистров ( в том числе и адрес этого пресловутого CT1). Но возник резонный вопрос, а дока по ним есть??  Я что-то не нашел. Я и не искал. Поскольку прочитал в "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. Отвечают они всегда быстро, но, бывает, что результат общения - нулевой.
|
|
|
|
|
Dec 3 2008, 20:48
|

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

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

Группа: Участник
Сообщений: 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), могу выложить.
|
|
|
|
|
Dec 10 2008, 12:20
|
Участник

Группа: Новичок
Сообщений: 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??????????
|
|
|
|
Сообщений в этой теме
леха_настойчивый проблема 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|