cdc device require SOF to operate
This commit is contained in:
@@ -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->ENDPOINTLISTADDR = (uint32_t) p_dcd->qhd; // Endpoint List Address has to be 2K alignment
|
||||||
lpc_usb->USBSTS_D = lpc_usb->USBSTS_D;
|
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 &= ~0x00FF0000; // Interrupt Threshold Interval = 0
|
||||||
lpc_usb->USBCMD_D |= BIT_(0); // connect
|
lpc_usb->USBCMD_D |= BIT_(0); // connect
|
||||||
@@ -595,7 +595,7 @@ void hal_dcd_isr(uint8_t coreid)
|
|||||||
|
|
||||||
if (int_status & INT_MASK_SOF)
|
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) {}
|
if (int_status & INT_MASK_NAK) {}
|
||||||
|
@@ -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)
|
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];
|
endpoint_handle_t ep = cdcd_data[coreid].edpt_hdl[CDC_PIPE_DATA_IN];
|
||||||
|
|
||||||
if ( !dcd_pipe_is_busy( ep ) )
|
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)
|
bool tud_cdc_connected(uint8_t coreid)
|
||||||
{
|
{
|
||||||
return cdcd_data[coreid].connected;
|
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)
|
int tud_cdc_read_char(uint8_t coreid)
|
||||||
{
|
{
|
||||||
uint8_t ch;
|
uint8_t ch;
|
||||||
|
Reference in New Issue
Block a user