diff --git a/cores/arduino/USB/SAMD21_USBDevice.h b/cores/arduino/USB/SAMD21_USBDevice.h index 2bb71a408..d1ef4f161 100644 --- a/cores/arduino/USB/SAMD21_USBDevice.h +++ b/cores/arduino/USB/SAMD21_USBDevice.h @@ -50,6 +50,10 @@ class USBDevice_SAMD21G18x { inline void noRunInStandby() { usb.CTRLA.bit.RUNSTDBY = 0; } inline void wakeupHost() { usb.CTRLB.bit.UPRSM = 1; } + // USB QoS + inline void setDataSensitiveQoS() { usb.QOSCTRL.bit.DQOS = 2; } + inline void setConfigSensitiveQoS() { usb.QOSCTRL.bit.CQOS = 2; } + // USB speed inline void setFullSpeed() { usb.CTRLB.bit.SPDCONF = USB_DEVICE_CTRLB_SPDCONF_FS_Val; } inline void setLowSpeed() { usb.CTRLB.bit.SPDCONF = USB_DEVICE_CTRLB_SPDCONF_LS_Val; } diff --git a/cores/arduino/USB/USBCore.cpp b/cores/arduino/USB/USBCore.cpp index c49cc077d..bf7888acb 100644 --- a/cores/arduino/USB/USBCore.cpp +++ b/cores/arduino/USB/USBCore.cpp @@ -295,6 +295,8 @@ void USBDeviceClass::init() usbd.reset(); usbd.calibrate(); + usbd.setDataSensitiveQoS(); + usbd.setConfigSensitiveQoS(); usbd.setUSBDeviceMode(); usbd.runInStandby(); usbd.setFullSpeed();