Преглед изворни кода

added dcd disconnect/connect to lpc17/40

hathach пре 6 година
родитељ
комит
969121df4f
2 измењених фајлова са 14 додато и 6 уклоњено
  1. 3 3
      src/device/dcd.h
  2. 11 3
      src/portable/nxp/lpc17_40/dcd_lpc17_40.c

+ 3 - 3
src/device/dcd.h

@@ -106,10 +106,10 @@ void dcd_set_config (uint8_t rhport, uint8_t config_num);
 // Wake up host
 void dcd_remote_wakeup(uint8_t rhport);
 
-// Connect or disconnect D+/D- line pull-up resistor.
-// Defined in dcd source if MCU has internal pull-up.
-// Otherwise, may be defined in BSP.
+// Connect by enabling internal pull-up resistor on D+/D-
 void dcd_connect(uint8_t rhport) TU_ATTR_WEAK;
+
+// Disconnect by disabling internal pull-up resistor on D+/D-
 void dcd_disconnect(uint8_t rhport) TU_ATTR_WEAK;
 
 //--------------------------------------------------------------------+

+ 11 - 3
src/portable/nxp/lpc17_40/dcd_lpc17_40.c

@@ -181,9 +181,7 @@ void dcd_init(uint8_t rhport)
   LPC_USB->UDCAH = (uint32_t) _dcd.udca;
   LPC_USB->DMAIntEn = (DMA_INT_END_OF_XFER_MASK /*| DMA_INT_NEW_DD_REQUEST_MASK*/ | DMA_INT_ERROR_MASK);
 
-  sie_write(SIE_CMDCODE_DEVICE_STATUS, 1, 1);    // connect
-
-  // USB IRQ priority should be set by application previously
+  // Clear pending IRQ
   NVIC_ClearPendingIRQ(USB_IRQn);
 }
 
@@ -219,6 +217,16 @@ void dcd_remote_wakeup(uint8_t rhport)
   (void) rhport;
 }
 
+void dcd_connect(uint8_t rhport)
+{
+  sie_write(SIE_CMDCODE_DEVICE_STATUS, 1, SIE_DEV_STATUS_CONNECT_STATUS_MASK);
+}
+
+void dcd_disconnect(uint8_t rhport)
+{
+  sie_write(SIE_CMDCODE_DEVICE_STATUS, 1, 0);
+}
+
 //--------------------------------------------------------------------+
 // CONTROL HELPER
 //--------------------------------------------------------------------+