Не работал раньше с USB, но вот теперь надо.
Запустил на демодорде пример из Кейла
Код
* Name: vcomdemo.c
* Purpose: USB virtual COM port Demo
* Version: V1.20
Пример работает.
Там USB как Витруальный СОМ-порт, соединяется с реальным UART'ом, и гонят друг в друга.
Мне не нужен UART, нужен только виртуальный СОМ через USB, но вот разобраться в этом нагромождении буферов и колбеков пока не могу.
(там какая-то тройная или четверная буферизация, причем не все линейно - не могу проследить цепочки).
Непонятно - почему связка с UARTом идет в двух местах:
в колбеках:
Код
void USB_EndPoint2 (uint32_t event) {
switch (event) {
case USB_EVT_OUT:
CDC_BulkOut (); /* data received from Host */
break;
case USB_EVT_IN:
CDC_BulkIn (); /* data expected from Host */
break;
}
}
в функциях CDC_BulkOut (); и CDC_BulkIn ();
но кроме того еще и в основном цикле:
Код
while (1) { // Loop forever
VCOM_Serial2Usb(); // read serial port and initiate USB event
VCOM_CheckSerialState();
VCOM_Usb2Serial();
} // end while
Пытался отключить все, связанное с реальным UARTом, и оставить только отправку пакета из 16 байтов с периодом в секунду:
USB_WriteEP (CDC_DEP_IN, (unsigned char *)&MyBuf[0], 16);
но при этом исчезает сам VCOM в компе.
Уж не знаю в чем рыться.
Может есть у кого другой пример USB_CDC, попроще? Типа нажал кнопку - отправил байт, пришел байт - зажег светодиод ?
Я волшебное слово знаю - "пожалуста"