cdc device require SOF to operate

This commit is contained in:
hathach 2018-03-08 14:55:02 +07:00
parent 4ddac8bc88
commit 23fa9eeebe
2 changed files with 9 additions and 7 deletions

View File

@ -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) {}

View File

@ -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;