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

 
 
> STM32 Cube Bulk + Interrupt transfer
Atlantis-
сообщение Jun 28 2017, 14:52
Сообщение #1


Местный
***

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



Добрый день!
Кто нибудь реализовывал одновременно Bulk In + Interrupt In transfer в Cube? Я сгенерировал проект для CDC Virtual com port, добавил Interrupt In endpoint. Собрался передавать данные и не пойму как это сделать.
Есть стандартная функция
Код
uint8_t CDC_Transmit_HS(uint8_t* Buf, uint16_t Len)
{
  uint8_t result = USBD_OK;  
  USBD_CDC_SetTxBuffer(hUsbDevice_1, Buf, Len);  
  result = USBD_CDC_TransmitPacket(hUsbDevice_1);  
  return result;
}

Добавить в нее номер эндпойнта некуда. Но это не главная беда. Внутренние функции устанавливают некий буфер
Код
uint8_t  USBD_CDC_SetTxBuffer  (USBD_HandleTypeDef   *pdev,
                                uint8_t  *pbuff,
                                uint16_t length)
{
  USBD_CDC_HandleTypeDef   *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
  
  hcdc->TxBuffer = pbuff;
  hcdc->TxLength = length;  
  
  return USBD_OK;  
}

и данные
Код
uint8_t  USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev)
{      
  USBD_CDC_HandleTypeDef   *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
  
  if(pdev->pClassData != NULL)
  {
    if(hcdc->TxState == 0)
    {
      /* Tx Transfer in progress */
      hcdc->TxState = 1;
      
      /* Transmit next packet */
      USBD_LL_Transmit(pdev,
                       CDC_IN_EP,
                       hcdc->TxBuffer,
                       hcdc->TxLength);
      
      return USBD_OK;
    }
    else
    {
      return USBD_BUSY;
    }
  }
  else
  {
    return USBD_FAIL;
  }
}


Как я понял, пока не завершится одна передача, совать другую нельзя. То есть если я начал Interrupt In transfer, то придется ждать минимум 1 мс пока он завершится и все это время я не смогу ничего отправить по Bulk In? Можно это как то обойти?
Go to the top of the page
 
+Quote Post



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

 


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


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