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

 
 
 
Reply to this topicStart new topic
> STM32Cube USB CDC, работа с USB запросами
Atlantis-
сообщение Oct 16 2014, 09:12
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Здравствуйте!
подскажите пожалуйста, как правильно выцепить данные из USB запроса
сейчас у меня сделано так:
CODE
static uint8_t USBD_CDC_Setup (USBD_HandleTypeDef *pdev,
USBD_SetupReqTypedef *req)
{
USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;

switch (req->bmRequest & USB_REQ_TYPE_MASK)
{

// case USB_REQ_TYPE_CLASS :
case USB_REQ_TYPE_VENDOR :
if (req->wLength)
{
if (req->bmRequest & 0x80)
{//если надо отправить служебные данные на комп
((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest,
(uint8_t *)hcdc->data,
req->wLength);
USBD_CtlSendData (pdev,
(uint8_t *)hcdc->data,
req->wLength);
}
else
{//принять запрос с данными
hcdc->CmdOpCode = req->bRequest;
hcdc->CmdLength = req->wLength;

USBD_CtlPrepareRx (pdev,
(uint8_t *)hcdc->data,
req->wLength);//прием данных

((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest,
(uint8_t *)hcdc->data,
req->wLength);

USBD_CtlSendStatus(pdev);
}
break;
}
else
{
((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest,
/*NULL*/ (uint8_t *)hcdc->data,
/*0*/req->wLength);
USBD_CtlSendStatus(pdev);
}
}
return USBD_OK;
}



Код
static int8_t CDC_Control_HS  (uint8_t cmd, uint8_t* pbuf, uint16_t length)
{
  /* USER CODE BEGIN 11 */
    
  switch (cmd)
  {
  case USB_REQ_VENDOR /*CDC_SEND_ENCAPSULATED_COMMAND*/:
        
    
        for (uint8_t i=0; i < length; i++)
        {
            Array_test[i] = pbuf[i];
        }
        
        if ((Array_test[0]==1) && (Array_test[1]==3) && (Array_test[2]==5) && (Array_test[3]==7) && (Array_test[4]== 9))
        {
        HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_RESET);
        }
    break;
    }
}


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

Сообщение отредактировал Atlantis- - Oct 16 2014, 09:14
Go to the top of the page
 
+Quote Post

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

 


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


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