Virtual COM Port

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

Ответить
vitkorob
Сообщения: 3
Зарегистрирован: 22 июл 2016, 16:27

Virtual COM Port

Сообщение vitkorob »

Подскажите запускал ли кто-нибудь уже USB на миктороконтроллере К1921ВК01Т? Есть ли в Интернете наработки по теме? Очень интересует класс устройств CDC (так называемый виртуальный COM-порт). Буду благодарен, если поделитесь кодом.
vitkorob
Сообщения: 3
Зарегистрирован: 22 июл 2016, 16:27

Re: Virtual COM Port

Сообщение vitkorob »

Похоже это еще никто не делал.

Есть ли на форуме специалисты готовые реализовать это за вознаграждение? https://www.fl.ru/projects/2875416/real ... vk01t.html

Пожалуйста, сообщите мне через ЛС
hgost
Сообщения: 61
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Контактная информация:

Re: Virtual COM Port

Сообщение hgost »

vitkorob писал(а):Подскажите запускал ли кто-нибудь уже USB на миктороконтроллере К1921ВК01Т? Есть ли в Интернете наработки по теме? Очень интересует класс устройств CDC (так называемый виртуальный COM-порт). Буду благодарен, если поделитесь кодом.
Здравствуйте.
Класс устройств CDC подразумевает использование трех конечных точек (на прием - in, передачу - out, и статуса - interrupt). А в К1921ВК01Т доступно только 2 точки(не считая управляющей). Реализовать CDC согласно стандарту невозможно. Реализация схожего типа устройств возможна, но уже не в рамках стандарта CDC.
vitkorob
Сообщения: 3
Зарегистрирован: 22 июл 2016, 16:27

Re: Virtual COM Port

Сообщение vitkorob »

Да, действительно, в микроконтроллере НИИЭТ К1921ВК01Т всего 3 оконечные точки (считая управляющую). Это сложно увидеть из документации (понял, только просматривая таблицы регистров в самом конце).

В нашей компании также используется еще микроконтроллер Миландр К1986ВЕ92QI. Я посмотрел их код USB CDC https://github.com/eldarkg/emdr1986x-st ... SB_Library

Там помимо управляющей endpoint объявлено использование ещё 3х endpoint.

Код: Выделить всё

#define USB_CDC_EP_SEND             USB_EP1
#define USB_CDC_EP_RECEIVE          USB_EP3
#define USB_CDC_EP_STATE            USB_EP2
Как я понял USB_CDC_EP_STATE это то, что вы называете interrupt endpoint. Я проанализировал её использование и по факту она встречается всего один раз
Функция, в которой используется USB_CDC_EP_STATE | Показать

Код: Выделить всё

USB_Result USB_CDC_Reset(void)
{
  USB_Result result;

  /* Inherited handler call */
  result = USB_DeviceReset();

  if (result == USB_SUCCESS)
  {
    /* EP1, EP2 and EP3 initialization. Note: DATA1 bit would be toggled to DATA0 on the first
     * IN transaction */
    USB_EP_Init(USB_CDC_EP_SEND, USB_SEPx_CTRL_EPEN_Enable | USB_SEPx_CTRL_EPDATASEQ_Data1,
                USB_CDC_HANDLE_SEND_ERROR);
    USB_EP_Init(USB_CDC_EP_STATE, USB_SEPx_CTRL_EPEN_Enable | USB_SEPx_CTRL_EPDATASEQ_Data1,
                USB_CDC_HANDLE_LINE_STATE_REPORT_SEND_ERROR);
    USB_EP_Init(USB_CDC_EP_RECEIVE, USB_SEPx_CTRL_EPEN_Enable, 0);

    /* Start to listen for incoming data, if desired */
    if (USB_CDCContext.CDC_ReceiveDataStatus == USB_SUCCESS)
    {
      result = USB_EP_doDataOut(USB_CDC_EP_RECEIVE, USB_CDCContext.CDC_ReceiveBuffer,
                USB_CDCContext.CDC_DataPortionLength, USB_CDC_OnDataReceive);
    }
  }
  return result;
}
То как работает реализвция USB СDC в этом случае нас вполне устраивает (о композитном устройстве уже не мечтаем). Устройство хорошо подхватывается всеми стандартными драйверами.
Реализация схожего типа устройств возможна, но уже не в рамках стандарта CDC.
Можно ли создать на микроконтроллере НИИЭТ такое же устройство как на микроконтроллере Миландр? Или я не прав, что в реализации Миландра endpoint USB_CDC_EP_STATE не играет роли?
hgost
Сообщения: 61
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Контактная информация:

Re: Virtual COM Port

Сообщение hgost »

Можно ли создать на микроконтроллере НИИЭТ такое же устройство как на микроконтроллере Миландр? Или я не прав, что в реализации Миландра endpoint USB_CDC_EP_STATE не играет роли?
Да, похоже, что в реализации Миландра USB_CDC_EP_STATE не используется. Тогда реализация подобного устройства возможна и на К1921ВК01Т
Ответить

Вернуться в «32-разрядные микроконтроллеры»