hamidkavianathar Posted March 26, 2017 Share Posted March 26, 2017 Hello I have built a usb rubber with at32uc3b1256. but it does not work. when I plug it in to my computer, I receive this error :"A request for the USB device descriptor failed". could anyone tell me, what I should do? thanks. I've used a 12 MHz crystal. this is the conf_clock file: /** * \file * * \brief Chip-specific system clock manager configuration * * Copyright (c) 2011 Atmel Corporation. All rights reserved. * * \asf_license_start * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name of Atmel may not be used to endorse or promote products derived * from this software without specific prior written permission. * * 4. This software may only be redistributed and used in connection with an Atmel * AVR product. * * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * \asf_license_stop * */ #ifndef CONF_CLOCK_H_INCLUDED #define CONF_CLOCK_H_INCLUDED // ===== System Clock Source Options //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RCSYS //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_OSC0 #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLL0 // ===== PLL0 Options #define CONFIG_PLL0_SOURCE PLL_SRC_OSC0 //#define CONFIG_PLL0_SOURCE PLL_SRC_OSC1 #define CONFIG_PLL0_MUL 2 /* Fpll = (Fclk * PLL_mul) / PLL_div */ #define CONFIG_PLL0_DIV 2 /* Fpll = (Fclk * PLL_mul) / PLL_div */ // ===== PLL1 Options #define CONFIG_PLL1_SOURCE PLL_SRC_OSC0 //#define CONFIG_PLL1_SOURCE PLL_SRC_OSC1 #define CONFIG_PLL1_MUL 8 /* Fpll = (Fclk * PLL_mul) / PLL_div */ #define CONFIG_PLL1_DIV 2 /* Fpll = (Fclk * PLL_mul) / PLL_div */ // ===== System Clock Bus Division Options //#define CONFIG_SYSCLK_CPU_DIV 1 /* Fcpu = Fsys/(2 ^ CPU_div) */ //#define CONFIG_SYSCLK_PBA_DIV 1 /* Fpba = Fsys/(2 ^ PBA_div) */ //#define CONFIG_SYSCLK_PBB_DIV 1 /* Fpbb = Fsys/(2 ^ PBB_div) */ // ===== Peripheral Clock Management Options //#define CONFIG_SYSCLK_INIT_CPUMASK ((1 << SYSCLK_SYSTIMER) | (1 << SYSCLK_OCD)) //#define CONFIG_SYSCLK_INIT_PBAMASK (1 << SYSCLK_USART0) //#define CONFIG_SYSCLK_INIT_PBBMASK (1 << SYSCLK_HMATRIX) //#define CONFIG_SYSCLK_INIT_HSBMASK (1 << SYSCLK_MDMA_HSB) // ===== USB Clock Source Options //#define CONFIG_USBCLK_SOURCE USBCLK_SRC_OSC0 //#define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 #define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 #define CONFIG_USBCLK_DIV 1 /* Fusb = Fsys/(2 ^ USB_div) */ #endif /* CONF_CLOCK_H_INCLUDED */ and this is the conf_usb.h file: /** * \file * * \brief USB configuration file * * Copyright (c) 2009 Atmel Corporation. All rights reserved. * * \asf_license_start * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name of Atmel may not be used to endorse or promote products derived * from this software without specific prior written permission. * * 4. This software may only be redistributed and used in connection with an Atmel * AVR product. * * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * \asf_license_stop * */ #ifndef _CONF_USB_H_ #define _CONF_USB_H_ #include "compiler.h" /** * USB Device Configuration * @{ */ //! Device definition (mandatory) #define USB_DEVICE_VENDOR_ID USB_VID_ATMEL #define USB_DEVICE_PRODUCT_ID USB_PID_ATMEL_AVR_HIDKEYBOARD #define USB_DEVICE_MAJOR_VERSION 1 #define USB_DEVICE_MINOR_VERSION 0 #define USB_DEVICE_POWER 100 // Consumption on Vbus line (mA) #define USB_DEVICE_ATTR \ (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_SELF_POWERED) // (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_BUS_POWERED) // (USB_CONFIG_ATTR_SELF_POWERED) // (USB_CONFIG_ATTR_BUS_POWERED) //! USB Device string definitions (Optional) #define USB_DEVICE_MANUFACTURE_NAME "ALVAND" #define USB_DEVICE_PRODUCT_NAME "HAMEDAN" // #define USB_DEVICE_SERIAL_NAME "12...EF" /** * Device speeds support * @{ */ //! To define a Low speed device //#define USB_DEVICE_LOW_SPEED //! To authorize the High speed #if (UC3A3||UC3A4) //#define USB_DEVICE_HS_SUPPORT #endif //@} /** * USB Device Callbacks definitions (Optional) * @{ */ #define UDC_VBUS_EVENT(b_vbus_high) main_vbus_action(b_vbus_high) #define UDC_SOF_EVENT() main_sof_action() #define UDC_SUSPEND_EVENT() main_suspend_action() #define UDC_RESUME_EVENT() main_resume_action() //! Mandatory when USB_DEVICE_ATTR authorizes remote wakeup feature #define UDC_REMOTEWAKEUP_ENABLE() main_remotewakeup_enable() #define UDC_REMOTEWAKEUP_DISABLE() main_remotewakeup_disable() //! When a extra string descriptor must be supported //! other than manufacturer, product and serial string // #define UDC_GET_EXTRA_STRING() //@} //@} /** * USB Interface Configuration * @{ */ /** * Configuration of HID Keyboard interface * @{ */ //! Interface callback definition #define UDI_HID_KBD_ENABLE_EXT() main_kbd_enable() #define UDI_HID_KBD_DISABLE_EXT() main_kbd_disable() #define UDI_HID_KBD_CHANGE_LED(value) ui_kbd_led(value) //@} //@} /** * USB Device Driver Configuration * @{ */ //@} //! The includes of classes and other headers must be done at the end of this file to avoid compile error #include "udi_hid_kbd_conf.h" #include "main.h" #include "ui.h" #endif // _CONF_USB_H_ and this is my main.c file: /** * \file * * \brief Main functions for Keyboard example * * Copyright (c) 2009-2011 Atmel Corporation. All rights reserved. * * \asf_license_start * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name of Atmel may not be used to endorse or promote products derived * from this software without specific prior written permission. * * 4. This software may only be redistributed and used in connection with an Atmel * AVR product. * * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * \asf_license_stop * */ #include "compiler.h" #include "preprocessor.h" #include "board.h" #include "gpio.h" #include "sysclk.h" #include "sleepmgr.h" #include "conf_usb.h" #include "udc.h" #include "udd.h" #include "ui.h" //volatile static bool main_b_kbd_enable = false; volatile static bool main_b_kbd_enable = true; /*! \brief Main function. Execution starts here. */ int main(void) { irq_initialize_vectors(); cpu_irq_enable(); // Initialize the sleep manager sleepmgr_init(); sysclk_init(); board_init(); ui_init(); ui_powerdown(); ui_wakeup_enable(); volatile uint32_t freq = sysclk_get_cpu_hz(); freq ++; LED_Toggle(LED3); // Start USB stack to authorize VBus monitoring udc_start(); //udc_attach(); if (!udc_include_vbus_monitoring()) { // VBUS monitoring is not available on this product // thereby VBUS has to be considered as present main_vbus_action(true); } // The main loop manages only the power mode // because the USB management is done by interrupt while (true) { #ifdef USB_DEVICE_LOW_SPEED // No USB "Keep a live" interrupt available in low speed // to scan keyboard interface then use main loop if (main_b_kbd_enable) { static uint16_t virtual_sof_sub = 0; if (700 == virtual_sof_sub++) { virtual_sof_sub = 0; static uint16_t virtual_sof = 0; ui_process(virtual_sof++); } } #else sleepmgr_enter_sleep(); #endif } } void main_vbus_action(bool b_high) { //if (b_high) { // Attach USB Device udc_attach(); //} else { // VBUS not present //udc_detach(); //} } void main_suspend_action(void) { ui_powerdown(); } void main_resume_action(void) { ui_wakeup(); } void main_sof_action(void) { if (!main_b_kbd_enable) return; ui_process(udd_get_frame_number()); } void main_remotewakeup_enable(void) { ui_wakeup_enable(); } void main_remotewakeup_disable(void) { ui_wakeup_disable(); } bool main_kbd_enable(void) { main_b_kbd_enable = true; return true; } void main_kbd_disable(void) { main_b_kbd_enable = false; } /** * \mainpage ASF USB Device HID Keyboard * * \section intro Introduction * This example shows how to implement a USB Device HID Keyboard * on Atmel MCU with USB module. * The application note AVR4903 provides information about this implementation. * * \section startup Startup * The example uses the buttons or sensors available on the board * to simulate a standard keyboard. * After loading firmware, connect the board (EVKxx,XPlain,...) to the USB Host. * When connected to a USB host system this application provides a keyboard application * in the Unix/Mac/Windows operating systems. * This example uses the native HID driver for these operating systems. * * \copydoc UI * * \section example About example * * The example uses the following module groups: * - Basic modules: * Startup, board, clock, interrupt, power management * - USB Device stack and HID modules: * <br>services/usb/ * <br>services/usb/udc/ * <br>services/usb/class/hid/ * <br>services/usb/class/hid/keyboard/ * - Specific implementation: * - main.c, * <br>initializes clock * <br>initializes interrupt * <br>manages UI * - specific implementation for each target "./examples/product_board/": * - conf_foo.h configuration of each module * - ui.c implement of user's interface (buttons, leds) */ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.