Поиск
Показаны результаты для тегов 'cts'.
-
Ковыряю работу виртуального порта в проце Nuvoton 487. Не понимаю как управлять сигналами квитирования со стороны процессора. Если в примерах в одном месте была одна корявая закомментированная строчка , позволяющая понять как принять от компьютера DTR RTS, то как передать не понятно. void VCOM_ClassRequest(void) { if (gUsbCmd.bmRequestType & 0x80) /* request data transfer direction */ { // Device to host switch (gUsbCmd.bRequest) { case GET_LINE_CODE: { if ((gUsbCmd.wIndex & 0xff) == 0){ /* VCOM-1 */ HSUSBD_PrepareCtrlIn((uint8_t *)&gLineCoding, 7); HSUSBD_CLR_CEP_INT_FLAG(HSUSBD_CEPINTSTS_INTKIF_Msk); HSUSBD_ENABLE_CEP_INT(HSUSBD_CEPINTEN_INTKIEN_Msk); break; } /* VCOM-1 */ } default: { /* Setup error, stall the device */ HSUSBD_SET_CEP_STATE(HSUSBD_CEPCTL_STALLEN_Msk); break; } } }//if (gUsbCmd.bmRequestType & 0x80) /* request data transfer direction */ else { // Host to device switch (gUsbCmd.bRequest) { case SET_CONTROL_LINE_STATE: { if ((gUsbCmd.wIndex & 0xff) == 0) /* VCOM-1 */ { gCtrlSignal = gUsbCmd.wValue; // !!!!!!!!!!!!!!!!!!!!! тут от компьютера //printf("RTS=%d DTR=%d\n", (gCtrlSignal0 >> 1) & 1, gCtrlSignal0 & 1); } // DATA IN for end of setup /* Status stage */ HSUSBD_CLR_CEP_INT_FLAG(HSUSBD_CEPINTSTS_STSDONEIF_Msk); HSUSBD_SET_CEP_STATE(HSUSBD_CEPCTL_NAKCLR); HSUSBD_ENABLE_CEP_INT(HSUSBD_CEPINTEN_STSDONEIEN_Msk); break; } case SET_LINE_CODE: { if ((gUsbCmd.wIndex & 0xff) == 0) /* VCOM-1 */ HSUSBD_CtrlOut((uint8_t *)&gLineCoding, 7); /* Status stage */ HSUSBD_CLR_CEP_INT_FLAG(HSUSBD_CEPINTSTS_STSDONEIF_Msk); HSUSBD_SET_CEP_STATE(HSUSBD_CEPCTL_NAKCLR); HSUSBD_ENABLE_CEP_INT(HSUSBD_CEPINTEN_STSDONEIEN_Msk); /* UART setting */ if ((gUsbCmd.wIndex & 0xff) == 0) /* VCOM-1 */ // тут меняются настройки порта VCOM_LineCoding(0); // параметры обмена беруться из gLineCoding break; } default: { /* Setup error, stall the device */ HSUSBD_SET_CEP_STATE(HSUSBD_CEPCTL_STALLEN_Msk); break; } } } }
- 6 ответов
-
- nuvoton
- virtual com port
-
(и ещё 7 )
C тегом: