diff --git a/hw/mcu/nxp/lpc43xx/hal/dcd_lpc43xx.c b/hw/mcu/nxp/lpc43xx/hal/dcd_lpc43xx.c index a7ec01d79..cb6311287 100644 --- a/hw/mcu/nxp/lpc43xx/hal/dcd_lpc43xx.c +++ b/hw/mcu/nxp/lpc43xx/hal/dcd_lpc43xx.c @@ -252,7 +252,7 @@ bool hal_dcd_init(uint8_t coreid) lpc_usb->ENDPOINTLISTADDR = (uint32_t) p_dcd->qhd; // Endpoint List Address has to be 2K alignment lpc_usb->USBSTS_D = lpc_usb->USBSTS_D; - lpc_usb->USBINTR_D = INT_MASK_USB | INT_MASK_ERROR | INT_MASK_PORT_CHANGE | INT_MASK_RESET | INT_MASK_SUSPEND /*| INT_MASK_SOF */; + lpc_usb->USBINTR_D = INT_MASK_USB | INT_MASK_ERROR | INT_MASK_PORT_CHANGE | INT_MASK_RESET | INT_MASK_SUSPEND | INT_MASK_SOF; lpc_usb->USBCMD_D &= ~0x00FF0000; // Interrupt Threshold Interval = 0 lpc_usb->USBCMD_D |= BIT_(0); // connect @@ -595,7 +595,7 @@ void hal_dcd_isr(uint8_t coreid) if (int_status & INT_MASK_SOF) { -// hal_dcd_bus_event(coreid, USBD_BUS_EVENT_SOF); + hal_dcd_bus_event(coreid, USBD_BUS_EVENT_SOF); } if (int_status & INT_MASK_NAK) {} diff --git a/tinyusb/class/cdc/cdc_device.c b/tinyusb/class/cdc/cdc_device.c index 4e9a22539..0b83457b5 100644 --- a/tinyusb/class/cdc/cdc_device.c +++ b/tinyusb/class/cdc/cdc_device.c @@ -270,6 +270,8 @@ tusb_error_t cdcd_xfer_cb(endpoint_handle_t edpt_hdl, tusb_event_t event, uint32 void cdcd_sof(uint8_t coreid) { + if ( !tud_cdc_connected(coreid) ) return; + endpoint_handle_t ep = cdcd_data[coreid].edpt_hdl[CDC_PIPE_DATA_IN]; if ( !dcd_pipe_is_busy( ep ) ) @@ -280,16 +282,16 @@ void cdcd_sof(uint8_t coreid) } } -uint32_t tud_cdc_available(uint8_t coreid) -{ - return fifo_count(&_rx_ff); -} - bool tud_cdc_connected(uint8_t coreid) { return cdcd_data[coreid].connected; } +uint32_t tud_cdc_available(uint8_t coreid) +{ + return fifo_count(&_rx_ff); +} + int tud_cdc_read_char(uint8_t coreid) { uint8_t ch;