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

 
 
> AT91USBFramework, динамическое изменение типа конечной точки
dimka76
сообщение May 7 2010, 13:09
Сообщение #1


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Если кто разобрался с вышеуказанной framework, подскажите как на лету можно поменять тип контрольной точки с bulk-in на bulk-out и наоборот.

Как говориться, я уже весь мозг сломал, три дня воюю с этой проблемой.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dimka76
сообщение May 10 2010, 06:01
Сообщение #2


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Опишу проблему подробнее.

Есть драйвер, который работает с устройством, имеющем следующие дескрипторы конечных точек
Код
        sizeof(S_usb_endpoint_descriptor), // Size of this descriptor in bytes
        USB_ENDPOINT_DESCRIPTOR,           // ENDPOINT descriptor type
        0x82,   // IN endpoint, address = 0x01
        ENDPOINT_TYPE_BULK,                // Bulk endpoint
        64,                                // Endpoint size is 64 bytes
        0x00                               // Must be 0x00 for full-speed bulk
                                       // endpoints

        sizeof(S_usb_endpoint_descriptor), // Size of this descriptor in bytes
        USB_ENDPOINT_DESCRIPTOR,           // ENDPOINT descriptor type
        0x02,     // OUT endpoint, address = 0x02
        ENDPOINT_TYPE_BULK,                // Bulk endpoint
        64,                                // Endpoint size is 64 bytes
        0x00                               // Must be 0x00 for full-speed bulk


Получается одна и та же конечная точка работает и на чтение и на передачу.
За основу я взял AT91USBFramework.

Компьютером устройство определятся нормально, драйвер устанавливается.
В устройстве я жду пакет от компа (не USB пакет, а пакет протокола) переключаю конечную точку. Для этого
добавил такую функцию
Код
void STD_Reconfig_Endpoin( S_std_class *pClass )
{
  S_usb_endpoint_descriptor   *pEpDesc;
  S_usb_endpoint              *pEndpoint;  
  uint32_t                    tmp_UDP_CSR[2];
  
  if( SER_EPT_DATA_OUT == 0x02 )
  {
    SER_EPT_DATA_OUT = 0x01;
    SER_EPT_DATA_IN  = 0x02;
    pEpDesc = (S_usb_endpoint_descriptor*)(pClass->pDescriptors->pEndpoints[0]);
    pEpDesc->bEndpointAddress = 0x02;
    //USB_ConfigureEndpoint(pClass->pUsb, pEpDesc);
    pEpDesc = (S_usb_endpoint_descriptor*)(pClass->pDescriptors->pEndpoints[1]);
    pEpDesc->bEndpointAddress = 0x82;
   //USB_ConfigureEndpoint(pClass->pUsb, pEpDesc);    
  }else{
        SER_EPT_DATA_OUT = 0x02;
        SER_EPT_DATA_IN  = 0x01;
        pEpDesc = (S_usb_endpoint_descriptor*)(pClass->pDescriptors->pEndpoints[0]);
        pEpDesc->bEndpointAddress = 0x82;
       // USB_ConfigureEndpoint(pClass->pUsb, pEpDesc);
        pEpDesc = (S_usb_endpoint_descriptor*)(pClass->pDescriptors->pEndpoints[1]);
        pEpDesc->bEndpointAddress = 0x02;
       // USB_ConfigureEndpoint(pClass->pUsb, pEpDesc);
  };
  AT91C_BASE_UDP->UDP_CSR[SER_EPT_DATA_OUT] &= ~(AT91C_UDP_EPTYPE);
  AT91C_BASE_UDP->UDP_CSR[SER_EPT_DATA_OUT] |= AT91C_UDP_EPTYPE_BULK_OUT;
  AT91C_BASE_UDP->UDP_CSR[SER_EPT_DATA_IN] &= ~(AT91C_UDP_EPTYPE);
  AT91C_BASE_UDP->UDP_CSR[SER_EPT_DATA_IN] |= AT91C_UDP_EPTYPE_BULK_IN;
  

    // Enter the Configured state
    USB_SetConfiguration(pClass->pUsb);

    USB_ConfigureEndpoint(pClass->pUsb,
                              pClass->pDescriptors->pEndpoints[0]);
    USB_ConfigureEndpoint(pClass->pUsb,
                              pClass->pDescriptors->pEndpoints[1]);
    
    
}


Далее пытаюсь отправить пакет компьютеру. И ничего не отправляется. Даже в прерывание конечной точки не попадает, хотя они разрешены и настроены.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 10 2010, 12:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(dimka76 @ May 10 2010, 10:01) *
Получается одна и та же конечная точка работает и на чтение и на передачу.

Это две физически разные точки. А атмеловцы несколько урезали свою продукцию в плане гибкости назначения номеров точек.
Go to the top of the page
 
+Quote Post
dimka76
сообщение May 11 2010, 04:36
Сообщение #4


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(aaarrr @ May 10 2010, 16:59) *
Это две физически разные точки. А атмеловцы несколько урезали свою продукцию в плане гибкости назначения номеров точек.


А чтобы Вы можете предложить для решения этой задачи?
Изначально этот драйвер работал с USBN9603(4)


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dimka76   AT91USBFramework   May 7 2010, 13:09
- - sergeeff   Цитата(dimka76 @ May 7 2010, 16:09) Если ...   May 7 2010, 17:47
- - sergeeff   Когда вы хотите поменять что-либо в своем usb устр...   May 10 2010, 06:54
|- - dimka76   Цитата(sergeeff @ May 10 2010, 10:54) Ког...   May 10 2010, 07:41
|- - VslavX   Мне представляется что динамически менять тип точк...   May 10 2010, 08:58
|- - dimka76   Цитата(VslavX @ May 10 2010, 12:58) Мне п...   May 10 2010, 09:27
- - sergeeff   Нормально воспримется   May 10 2010, 11:21
- - sergeeff   Вы все как-то вокруг да около. Что за проблема то?...   May 11 2010, 05:55
|- - dimka76   Цитата(sergeeff @ May 11 2010, 09:55) Вы ...   May 11 2010, 12:45
|- - VslavX   Цитата(dimka76 @ May 11 2010, 15:45) HOST...   May 11 2010, 13:00
|- - dimka76   Цитата(VslavX @ May 11 2010, 17:00) Если ...   May 12 2010, 04:07
|- - VslavX   Цитата(dimka76 @ May 12 2010, 07:07) Я та...   May 12 2010, 10:07
|- - Седой   Цитата(VslavX @ May 12 2010, 16:07) Таког...   May 12 2010, 11:39
|- - VslavX   Цитата(Седой @ May 12 2010, 14:39) А разр...   May 12 2010, 12:09
|- - dimka76   Цитата(VslavX @ May 12 2010, 16:09) Умеюч...   May 12 2010, 12:25
|- - VslavX   Цитата(dimka76 @ May 12 2010, 15:25) А де...   May 12 2010, 13:00
|- - dimka76   Цитата(VslavX @ May 12 2010, 17:00) У Вас...   May 13 2010, 06:11
|- - sergeeff   Цитата(dimka76 @ May 13 2010, 09:11) Это ...   May 13 2010, 11:51
- - dimka76   Как и предполагалось, с STM32F103 все заработало. ...   Aug 4 2010, 06:21


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:54
Рейтинг@Mail.ru


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