USB 问题 SAM3S-EK -> 自定义卡
Posted
技术标签:
【中文标题】USB 问题 SAM3S-EK -> 自定义卡【英文标题】:USB issue SAM3S-EK -> Custom card 【发布时间】:2015-07-27 07:42:37 【问题描述】:我正在使用 SAM3S-EK 演示板开发我的项目。我使用带有示例代码和 ASF 的 USB CDC 和 MSC 驱动程序,一切正常。现在我想将代码放入我的自定义卡中(使用 SAM3S1B)。 但这是我的问题。我已经分配了引脚并更改了时钟配置,但 Windows 无法识别该设备。所有描述符都等于 0(根据 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
【问题讨论】:
【参考方案1】:与 Windows 下使用的所有 USB 设备一样,您需要先安装特定于您所连接设备的 Windows 端 USB 驱动程序。
当您安装 Atmel Studio 6.2 或更高版本时,它会为您在固件中使用的 Atmel ASF USB 驱动程序安装 Windows 端 USB 驱动程序。该 Windows 驱动程序适用于我的 SAM4E 目标处理器。请注意,在 Windows 中加载驱动程序需要很长时间。它似乎已挂起。只要给它时间,它最终会安装驱动程序。您可能必须响应弹出警告以允许安装未签名的驱动程序。
Windows 驱动程序也可以单独下载和安装。使用此链接:
https://gallery.atmel.com/Products/Details/6272a8fd-68fe-43d8-a990-741878cfe7b6?
【讨论】:
感谢您的回答。问题出在它工作的开发卡上(我有正确的驱动程序),但在自定义卡上它不起作用(相同的代码在等效架构上运行,所以我认为我不需要新的驱动程序)。【参考方案2】:仔细检查您的时钟频率。我正在使用 SAM4L 部件,它需要 PLL 从 OSC0 运行以生成 48 MHz 时钟。我有一段时间遇到同样的问题,因为我的 ABDACB 使用相同的时钟并改变了速率。据我了解,插入 USB 设备会根据速度感应 DP 或 DN 引脚上的单个上拉电阻。这就是告诉 Windows(主机)尝试通信的原因。如果时钟频率错误,windows中的属性都显示为0。
【讨论】:
以上是关于USB 问题 SAM3S-EK -> 自定义卡的主要内容,如果未能解决你的问题,请参考以下文章
STM32CubeMX学习笔记(46)——USB接口使用(HID自定义设备)
STM32CubeMX学习笔记(46)——USB接口使用(HID自定义设备)