USB 问题 SAM3S-EK -> 自定义卡



我正在开发我的项目与SAM3S-EK演示板。我使用USB CDC和MSC驱动程序与示例代码和ASF,一切工作正常。现在我想把代码放入我的自定义卡中(使用SAM3S1B)。但这是我的问题。我已经分配了引脚并更改了时钟配置,但该设备无法被Windows识别。所有的描述符都等于零(根据USBLyser)。

有人能帮帮我吗?

这是我的时钟配置文件(我有一个16MHz晶体):

// ===== System Clock (MCK) Source Options
#define CONFIG_SYSCLK_SOURCE        SYSCLK_SRC_PLLACK
// ===== System Clock (MCK) Prescaler Options   (Fmck = Fsys / (SYSCLK_PRES))
#define CONFIG_SYSCLK_PRES          SYSCLK_PRES_4
// ===== PLL0 (A) Options   (Fpll = (Fclk * PLL_mul) / PLL_div)
// Use mul and div effective values here.
#define CONFIG_PLL0_SOURCE          PLL_SRC_MAINCK_XTAL
#define CONFIG_PLL0_MUL             32
#define CONFIG_PLL0_DIV             2
// ===== PLL1 (B) Options   (Fpll = (Fclk * PLL_mul) / PLL_div)
// Use mul and div effective values here.
#define CONFIG_PLL1_SOURCE          PLL_SRC_MAINCK_12M_RC
#define CONFIG_PLL1_MUL             16
#define CONFIG_PLL1_DIV             2
// ===== USB Clock Source Options   (Fusb = FpllX / USB_div)
// Use div effective value here.
//#define CONFIG_USBCLK_SOURCE        USBCLK_SRC_PLL0
#define CONFIG_USBCLK_SOURCE        USBCLK_SRC_PLL1
#define CONFIG_USBCLK_DIV           2
// ===== Target frequency (System clock)
// - XTAL frequency: 16MHz
// - System clock source: PLLA
// - System clock prescaler: 4 (divided by 4)
// - PLLA source: XTAL
// - PLLA output: XTAL * 32 / 3
// - System clock is: 16 * 32 / 4 / 2 = 64MHz
// ===== Target frequency (USB Clock)
// - USB clock source: PLLB
// - USB clock divider: 2 (divided by 2)
// - PLLB output: XTAL * 12 / 2
// - USB clock: 16 * 12 / 2 / 2 = 48MHz

像所有在Windows下使用的USB设备一样,您需要首先安装特定于您要连接的设备的Windows端USB驱动程序。

当您安装Atmel Studio 6.2或更新版本时,它会为您在固件中使用的Atmel ASF USB驱动程序安装Windows端USB驱动程序。该Windows驱动程序与我的SAM4E目标处理器一起工作。请注意,在Windows中加载驱动程序需要很长时间。它看起来像是挂起来了。只要给它时间,它最终会安装驱动程序。您可能必须响应弹出的警告,以允许安装未签名的驱动程序。

Windows驱动程序也可以单独下载和安装。使用此链接:

https://gallery.atmel.com/products/details/6272a8fd - 68 - fe - 43 - d8 - a990 - 741878 - cfe7b6?

再次检查你的时钟频率。我正在使用SAM4L部分,它需要锁相环从OSC0运行以生成48 MHz时钟。我有一段时间遇到了同样的问题,因为我的ABDACB使用了相同的时钟并改变了速率。据我所知,USB设备的插入会根据速度感应引脚DP或DN上的单个上拉电阻。这就是告诉windows(主机)尝试通信的内容。如果时钟速率错误,窗口中的属性都显示0

最新更新