Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-фев-18 00:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 194 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13
Автор Сообщение
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-июл-18 16:01 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Столкнулся с проблемой, сконфигурировал хоста, факт подключения девайса не распазнает, транзакции не проходят вовсе
Код:
void Setup_USB(void)
{
   
       RST_CLK_PCLKcmd(RST_CLK_PCLK_USB, ENABLE);/*Enables the RTCHSE clock on usb*/
MDR_RST_CLK->USB_CLOCK =0x00000106; /*USB_C1:HSE
                                         USB_C2:PLLUSBo
                                         USB_C3:USB_C2
                                         USB_CLK_EN
                                                    */
   RST_CLK_USB_PLLcmd(ENABLE);
  RST_CLK_USB_PLLconfig(RST_CLK_USB_PLLsrcHSEdiv1, RST_CLK_USB_PLLmul6);
       
         USB_SetHSCR(USB_HSCR_RESET_CORE_Pos);/**/
   delay(); //Простая задержка.
   USB_SetHSCR(USB_HSCR_HOST_MODE_Host);/**/
   USB_SetHSCR(USB_HSCR_EN_TX_Pos);/**/
   USB_SetHSCR(USB_HSCR_EN_RX_Pos);/**/
   USB_SetHSCR(USB_HSCR_DP_PULLDOWN_Pos);/**/
   USB_SetHSCR(USB_HSCR_DM_PULLDOWN_Pos);/**/
   USB_SetHTXLC(USB_HTXLC_FSLR_12Mb);/*12Mb V SEK*/
   USB_SetHTXLC(USB_HTXLC_FSPL_Full);/*RABOTA S FULL SPEED USTROISTVOM*/
   USB_SetHTXSE(USB_HTXSE_SOFEN_Auto);      /*avtomaticheskaya otpravka sof paketov*/

_________________
Во славу империи БАНЗАЙ


Последний раз редактировалось kamikazzze 2016-авг-16 14:16, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-июл-21 17:29 
Не в сети

Зарегистрирован: 2016-июл-21 17:22
Сообщения: 2
Подскажите пожалуйста, Я правильно понял что всего 4 конечных точки, и нулевая должна быть CONTROL, значит остается 3.
Т.е нельзя будет реализовать к примеру CDC+Mass Storage Class?
Возможна одновременная работа конечной точки на IN и OUT, и как тогда быть с адресацией?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-июл-21 18:24 
Не в сети

Зарегистрирован: 2010-апр-18 12:59
Сообщения: 56
IN и OUT можно повесить на одну точку, только тогда это будет две разные конечные точки. Например EP1_BULK_IN и EP1_BULK_OUT - две конечные точки.
На нулевую тоже можно повесить и IN, и OUT. Пробовал я это через LIBUsb. В других реализациях не пробовал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-июл-29 13:14 
Не в сети

Зарегистрирован: 2016-июл-21 17:22
Сообщения: 2
Добрый день, пожалуйста помогите найти ошибку. Делаю CCID устройство на двух Bulk. При энумерации возникает случайная ошибка, обычно с запросом текстовых дескрипторов, отсылается пустой пакет Код просмотрел вроде всё как положено. Уже второй день ломаю голову.


Вложения:
Комментарий к файлу: Проект
mdr32f9(USB_CCID) — копия.rar [256.78 КБ]
Скачиваний: 69
Комментарий к файлу: Лог из анализатора
Безымянный.jpg
Безымянный.jpg [ 410.61 КБ | Просмотров: 3770 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-июл-31 20:07 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 239
1. Использую для 1986ВЕ91Т класс CDC из 1986Ве9х USB Library, за основу взял проект USB_CDC-RS-232 bridge из большого примера от "Фитона".

Решил сделать ответ на запрос от компьютера, а именно написал так:

Не работает!!!
Открыть
Код:
uint8_t Data[640];

/*******************************************************************************
* Function Name  : USB_CDC_RecieveData
* Description    : CDC data reception handler.
*                : Transfers received data to UART
* Output         : None
* Return         : USB_Result
*******************************************************************************/
USB_Result USB_CDC_RecieveData (uint8_t* Buffer, uint32_t Length)
{
  /* Initiate data portion sending via USB */
  USB_CDC_SendData ((uint8_t *)Data, sizeof(Data));
   
  return USB_SUCCESS;
}
Закрыть


Работает :? :? :? :mrgreen: :mrgreen: :mrgreen:
Открыть
Код:
uint8_t Data[640];

/*******************************************************************************
* Function Name  : USB_CDC_RecieveData
* Description    : CDC data reception handler.
*                : Transfers received data to UART
* Output         : None
* Return         : USB_Result
*******************************************************************************/
USB_Result USB_CDC_RecieveData (uint8_t* Buffer, uint32_t Length)
{
  /* Initiate data portion sending via USB */
  USB_CDC_SendData ((uint8_t *)Data, sizeof(Data)+1);
   
  return USB_SUCCESS;
}
Закрыть


То есть не работает на размерах 32, 320, 640 (кратных MAX_PACKET_SIZE=32 (байта)), работает на размерах 31, 33, 319, 321, 639, 641.

А теперь, внимание, вопрос - почему ???

2. Правильно ли я понимаю, что реализация USB Device от Фитона практически полностью соответствует стандарту USB, и используя её можно например сделать HID-класс и прочие классы?

P.S. Где-то на форуме гуляло в .pdf-файле "1986ВЕ9х USB Library. Описание реализации V01.00.00". Неплохо бы прикрепить его в шапку раздела Список форумов » Интегральные микросхемы АО "ПКК Миландр" » 32-разрядные микроконтроллеры (1986ВЕ9х, 1986ВЕ1Т, 1986ВЕ2х, 1986ВЕ3Т, 1986ВЕ4У, 1986ВЕ8Т)

_________________
Hack the Planet!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-авг-01 09:14 
Не в сети

Зарегистрирован: 2016-авг-01 08:37
Сообщения: 1
Откуда: Нижний Новгород
Добрый день!
Использую 1986ВЕ91Т, запускаю пример VCOM_Echo из библиотеки MDR_Library
Столкнулся с проблемой: драйвера из примера предназначены только для 32 разрядных систем, пробовал фичу для установки драйвера на 64 разрядную версию с добавлением "NTamd64" - не прокатывает.
Вопрос есть ли для драйвера для 64 разрядных систем?
Заранее спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-авг-01 10:02 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 383
Цитата:
То есть не работает на размерах 32, 320, 640 (кратных MAX_PACKET_SIZE=32 (байта)), работает на размерах 31, 33, 319, 321, 639, 641.
А теперь, внимание, вопрос - почему ???

На форуме уже было обсуждение. Если память не изменяет то проблема в следующем
Если размер буфера для отправки кратен размеру буфера точки, то последним должен отсылаться пустой пакет (нулевой длинны) в конце, и это не реализовано в библиотеке.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-авг-06 15:42 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 239
редактор, спасибо буду знать ... ещё остаётся вопрос как правильно выключить usb cdc устройство и включить снова, т.е.
программа работает так:
1. Настройка и включение USB CDC.
2. Выключение USB СDC устройства
3. Проведение быстрых измерений, где может "отвалиться" в компьютере USB устройство по таймауту.
4. Включение USB устройства и съём данных с эмулируемого COM-порта.
5. Повторение пп. 2-4.

Если писать так:
Открыть
Код:
#define   USB_REC_BUF_SIZE            100

uint8_t   USB_RecBuf[USB_REC_BUF_SIZE];
1.
void USB_Setup (void)
{
   /* CDC layer initialization */
  USB_CDC_Init (USB_RecBuf, 1, SET);
   
#ifdef USB_CDC_LINE_CODING_SUPPORTED
  /* Set line coding initial settings accordingly to UART ones above */
  USB_LineCoding.dwDTERate = 115200;
  USB_LineCoding.bCharFormat = USB_CDC_STOP_BITS1;
  USB_LineCoding.bParityType = USB_CDC_PARITY_NONE;
  USB_LineCoding.bDataBits = USB_CDC_DATA_BITS8;
#endif /* USB_CDC_LINE_CODING_SUPPORTED */
   
   SET_BIT_PER (MDR_RST_CLK->PER_CLOCK, RST_CLK_PER_CLOCK_PCLK_EN_USB_Pos);

  /* Device layer initialization */
  USB_Clock_InitStruct.USB_USBC1_Source = USB_C1HSEdiv1;
  USB_Clock_InitStruct.USB_PLLUSBMUL    = USB_PLLUSBMUL3;

  USB_DeviceBUSParam.MODE  = USB_SC_SCFSP_Full;
  USB_DeviceBUSParam.SPEED = USB_SC_SCFSR_12Mb;
  USB_DeviceBUSParam.PULL  = USB_HSCR_DP_PULLUP_Set;

  USB_DeviceInit (&USB_Clock_InitStruct, &USB_DeviceBUSParam);

  /* Enable all USB interrupts */
  USB_SetSIM (USB_SIS_Msk);

  USB_DevicePowerOn ();

  /* Enable interrupt on USB */
#ifdef USB_INT_HANDLE_REQUIRED
  NVIC_EnableIRQ (USB_IRQn);
#endif /* USB_INT_HANDLE_REQUIRED */

  USB_DEVICE_HANDLE_RESET;
}
2.
void USB_Off (void)
{
  USB_CDC_ReceiveStop ();
  USB_DevicePowerOff ();

#ifdef USB_INT_HANDLE_REQUIRED
  NVIC_DisableIRQ (USB_IRQn);
#endif /* USB_INT_HANDLE_REQUIRED */
}
4.
void USB_On (void)
{
#ifdef USB_INT_HANDLE_REQUIRED
  NVIC_EnableIRQ (USB_IRQn);
#endif /* USB_INT_HANDLE_REQUIRED */

   USB_DevicePowerOn ();
   USB_CDC_ReceiveStart ();
}
Закрыть

то после выполнения 4 к USB CDC устройству подключиться нельзя хотя в Диспетчере устройств видно эмулируемый COM-порт

_________________
Hack the Planet!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2016-авг-08 22:16 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1053
Откуда: Тула
R Max писал(а):
1. Использую для 1986ВЕ91Т класс CDC из 1986Ве9х USB Library, за основу взял проект USB_CDC-RS-232 bridge из большого примера от "Фитона".

Решил сделать ответ на запрос от компьютера, а именно написал так:

Не работает!!!
Открыть
Код:
uint8_t Data[640];

/*******************************************************************************
* Function Name  : USB_CDC_RecieveData
* Description    : CDC data reception handler.
*                : Transfers received data to UART
* Output         : None
* Return         : USB_Result
*******************************************************************************/
USB_Result USB_CDC_RecieveData (uint8_t* Buffer, uint32_t Length)
{
  /* Initiate data portion sending via USB */
  USB_CDC_SendData ((uint8_t *)Data, sizeof(Data));
   
  return USB_SUCCESS;
}
Закрыть


Работает :? :? :? :mrgreen: :mrgreen: :mrgreen:
Открыть
Код:
uint8_t Data[640];

/*******************************************************************************
* Function Name  : USB_CDC_RecieveData
* Description    : CDC data reception handler.
*                : Transfers received data to UART
* Output         : None
* Return         : USB_Result
*******************************************************************************/
USB_Result USB_CDC_RecieveData (uint8_t* Buffer, uint32_t Length)
{
  /* Initiate data portion sending via USB */
  USB_CDC_SendData ((uint8_t *)Data, sizeof(Data)+1);
   
  return USB_SUCCESS;
}


То есть не работает на размерах 32, 320, 640 (кратных MAX_PACKET_SIZE=32 (байта)), работает на размерах 31, 33, 319, 321, 639, 641.

А теперь, внимание, вопрос - почему ???

2. Правильно ли я понимаю, что реализация USB Device от Фитона практически полностью соответствует стандарту USB, и используя её можно например сделать HID-класс и прочие классы?

P.S. Где-то на форуме гуляло в .pdf-файле "1986ВЕ9х USB Library. Описание реализации V01.00.00". Неплохо бы прикрепить его в шапку раздела Список форумов » Интегральные микросхемы АО "ПКК Миландр" » 32-разрядные микроконтроллеры (1986ВЕ9х, 1986ВЕ1Т, 1986ВЕ2х, 1986ВЕ3Т, 1986ВЕ4У, 1986ВЕ8Т)
Закрыть

На форуме уже поднимаась эта проблема. ЕМНИП, в случае объёма данных, кратном размеру пакета, дополнительно последним нужно передавать пакет нулевой длинны. Это будет признаком конца всего объёма передаваемых данных. Погуглите тут...

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2017-май-23 09:45 
Не в сети

Зарегистрирован: 2017-мар-02 08:48
Сообщения: 15
Подскажите по Mass Storage Class Bulk-Only Transport со стороны host-а:
data0/data1 переключаются постоянно, сбрасываясь на data0 только после Clear Feature request,
или от CBW до CSW, т.е. CBW = data0, потом чередуем data1/data0/data1... вплоть до CSW, а следующее CBW = data0 независимо от предыдущего CSW ?


Или это привязано к каждой конечной точке: у OUT-точки свой переключатель data0/1, у IN-точки свой;

- отправили пакет, получили ACK - переключили out-переключатель; NAK - повторили отправку пакета; STALL, TIMOUT - сбросили переключатель на data0;

- приняли пакет - смотрим in-переключатель, если PID соответствует - переключаем in-переключатель для следующего пакета; а если не соответствует - ... (то не знаю, что) ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2017-май-29 10:27 
Не в сети

Зарегистрирован: 2017-мар-02 08:48
Сообщения: 15
Кто-нибудь, разъясните про data0/1 пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2017-ноя-27 12:52 
Не в сети

Зарегистрирован: 2016-янв-29 17:53
Сообщения: 54
Добрый день!
Работаю с отладочной платой для 1986ВЕ91Т. Хочу организовать отправку данных на от МК на ПК по USB с максимально возможной скоростью (требуется получить скорость хотя бы 2 Мбит/сек). Использую функционал для работы с Bulk транзакциями из класса CDC из 1986Ве9х USB Library. Соответственно настроил EP1 для OUT транзакций, а EP2 для IN. В дескрипторах настроил, что обе точки Bulk. Со стороны ПК установил LibUsbDotNet, сгенерировал драйвер, установил, подключился к отладочной плате. Связь есть, посылки ходят туда и обратно. НО!
Хочу прочитать из отладочной платы 1027 байт, или 515, или любое другое количество, большее ~32 байт (причем даже не 64 байт, которые физический размер fifo оконечной точки в МК). Запускаю на ПК чтение нужного кол-ва байт от оконечной точки EP2 (IN). МК в это время уже готов отправлять нужно кол-во байт, т.е. массив с данными сформирован, и вызвана функция USB_CDC_SendData. И всё прекрасно читается. ПК получает от МК все данные, но только 1 раз, или 2 раза, или несколько раз, а потом всё ломается. Метод, отвечающий за чтение данных из оконечной точки в LibUsbDotNet возвращает ошибку "Win32Error:GetOverlappedResult Ep 0x81 31:Присоединенное к системе устройство не работает." При этом физического отключения устройства в Windows 8.1 (работаю в нём) не происходит, в свойствах устройства Windows показывает, что устройство работает нормально. Блокируется любая попытка работы с USB подключением к отладочной плате через LibUsbDotNet.
Usb сниффер каждую дальнейшую попытку чтения показывает в сопровождении команды Abort Pipе. А в момент первой ошибки показывает ошибку "USBD_STATUS_BABBLE_DETECTED 0xC0000012 The device returned a babble detected error".
Что происходит на физическом уровне. Подслушиваю осциллографом. Sof токены продолжают поступать от ПК каждые 1 мс. В момент первой ошибки от ПК приходят IN токен, МК отвечает первой порцией данных из 32 байт (или 64, тоже пробовал, такие настройки). ПК отвечает ACK. После чего у ПК возникает вышеуказанная ошибка, а МК выходит из прерывания и начинает ждать следующего IN запроса, чтобы продолжить отправку данных. И ещё, фронты сигнала на линиях DP и DN от ПК много лучше, чем от МК. Пробовал менять номиналы последовательных резисторов в DP и DN, пробовал из убирать, существенного влияния это не оказывает.
Что делать, чтобы пофиксить проблему не представляю.
Что я сделал:
Пробовал разные комбинации размеров буфера у МК, разные длины отправляемых данных, разные паузы между отправкой данных. Разницы никакой нет, ошибка на меньшем количестве отправляемых данных возникает реже. Т.е. когда я вызываю USB_CDC_SendData с указателем на массив с 515 байтами ошибка наступает реже, чем при её вызове с 127 байтами.
Пробовал разные ПК и разные микроконтроллеры. Правда на обоих ПК был Win 8.1. А вторым МК был 1986ВЕ8Т. Ошибка никуда не делась.
Что думаю сделать: Попробовать на системе с Win7. Попробовать разбивать вызов USB_CDC_SendData с 515 байтами на несколько вызовов по 32 байта и остаток.

Нужны хоть какие-нибудь идеи или зацепки. Может ответ лежит на поверхности, но я в силу недостатка опыта его не вижу или не понимаю?

UPD 29.11.2017.
Проверил работу программы МК и ПК на Win7 и Win10. На Win10 такая же проблема, как на Win8.1. А на Win7 все работает без ошибок. Пришел к выводу, что всему виной старая версия libusb-win32, используемая в LibUsbDotNet. Установил последнюю версию libusb-win32, написал простенькую программу для проверки на C++. Ошибок в Win8.1 нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2018-янв-16 01:31 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 239
prostoRoman писал(а):
R Max писал(а):
1. Использую для 1986ВЕ91Т класс CDC из 1986Ве9х USB Library, за основу взял проект USB_CDC-RS-232 bridge из большого примера от "Фитона".

Решил сделать ответ на запрос от компьютера, а именно написал так:

Не работает!!!
Открыть
Код:
uint8_t Data[640];

/*******************************************************************************
* Function Name  : USB_CDC_RecieveData
* Description    : CDC data reception handler.
*                : Transfers received data to UART
* Output         : None
* Return         : USB_Result
*******************************************************************************/
USB_Result USB_CDC_RecieveData (uint8_t* Buffer, uint32_t Length)
{
  /* Initiate data portion sending via USB */
  USB_CDC_SendData ((uint8_t *)Data, sizeof(Data));
   
  return USB_SUCCESS;
}
Закрыть


Работает :? :? :? :mrgreen: :mrgreen: :mrgreen:
Открыть
Код:
uint8_t Data[640];

/*******************************************************************************
* Function Name  : USB_CDC_RecieveData
* Description    : CDC data reception handler.
*                : Transfers received data to UART
* Output         : None
* Return         : USB_Result
*******************************************************************************/
USB_Result USB_CDC_RecieveData (uint8_t* Buffer, uint32_t Length)
{
  /* Initiate data portion sending via USB */
  USB_CDC_SendData ((uint8_t *)Data, sizeof(Data)+1);
   
  return USB_SUCCESS;
}


То есть не работает на размерах 32, 320, 640 (кратных MAX_PACKET_SIZE=32 (байта)), работает на размерах 31, 33, 319, 321, 639, 641.

А теперь, внимание, вопрос - почему ???

2. Правильно ли я понимаю, что реализация USB Device от Фитона практически полностью соответствует стандарту USB, и используя её можно например сделать HID-класс и прочие классы?

P.S. Где-то на форуме гуляло в .pdf-файле "1986ВЕ9х USB Library. Описание реализации V01.00.00". Неплохо бы прикрепить его в шапку раздела Список форумов » Интегральные микросхемы АО "ПКК Миландр" » 32-разрядные микроконтроллеры (1986ВЕ9х, 1986ВЕ1Т, 1986ВЕ2х, 1986ВЕ3Т, 1986ВЕ4У, 1986ВЕ8Т)
Закрыть

На форуме уже поднимаась эта проблема. ЕМНИП, в случае объёма данных, кратном размеру пакета, дополнительно последним нужно передавать пакет нулевой длинны. Это будет признаком конца всего объёма передаваемых данных. Погуглите тут...


КАК ЖЕ ВСЁ-ТАКИ ПРАВИЛЬНО ПАТЧИТЬ БИБЛИОТЕКУ ФИТОНА НА ПРЕДМЕТ ПАКЕТОВ С ДЛИНОЙ, КРАТНОЙ MAX_PACKET_SIZE ???!!!

Пытаюсь прикрутить две оконечные точки Bulk: IN & OUT в режиме USB_RAW к LabVIEW http://www.ni.com/tutorial/4478/en/ https://www.diva-portal.org/smash/get/d ... TEXT01.pdf . Сгенерировал необходимый драйвер NI-VISA Driver Wizard, установил - результат устройство Unknown - ну думаю не покатит. Убил полдня, но нашёл проблему - дескриптор конфигурации оказывается 32 байта! Принудительно написал в отправке дескриптора
Открыть
if ((length % MAX_PACKET_SIZE) == 0)
length++;

result = USB_EP_doDataIn (USB_EP0, pDescr, length, USB_DeviceDoStatusOutAck);
Закрыть
И Вуаля - устройство обнаружено!
Открыть
Вложение:
patch.jpg
patch.jpg [ 128.73 КБ | Просмотров: 533 ]
Закрыть
Но следить так за всеми USB_EP_doDataIn () - не комильфо (вообще тоже вопрос к знающим USB - как хост отреагирует на этот байт данных - отбросит или запишет к себе эти левые данные как нормальные ?). Нашёл такой вариант viewtopic.php?p=12577#p12577 - помогло, но вот другую программу убило viewtopic.php?f=33&t=3813 =(

Попутно ещё вопрос, почему у Фитона выбрано именно MAX_PACKET_SIZE=32, если поставить MAX_PACKET_SIZE=64 (FIFO EP вроде как 64 байта) - будет ли всё правильно работать?...

И как убрать ошибку номер 10 драйвера winusb.sys ???!!! :( :( :evil: :evil: :roll: :roll:

_________________
Hack the Planet!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB
СообщениеДобавлено: 2018-янв-21 22:11 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 239
Убил кучу времени на отладку и поиск информации, но выяснил причину того, почему универсальный драйвер winusb.sys выдавал ошибку при определении драйвера в Windows 7 x64 и Windows 8.1. ....Оказывается в Microsoft USB-стек соответсвует всем стандартам, а ошибка заключалась в файле MDR32F9Qx_usb_device.c библиотеки Фитона (либо я неправильно понимаю её работу :wink: ) - почему то в коде при возврате ответов на стандартные запросы GET_*** нет этапа StatusStage!!
Исправленный файл во вложении - например для GET_CONFIGURATION поправка заключается в следующем:
// result = USB_EP_doDataIn(EPx, SetupPacketData, 1, 0);
result = USB_EP_doDataIn(EPx, SetupPacketData, 1, USB_DeviceDoStatusOutAck);


Вложения:
MDR32F9Qx_usb_device.rar [9.85 КБ]
Скачиваний: 25

_________________
Hack the Planet!
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 194 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB