2015-07-27 7 views
0

Я разрабатываю свой проект с демонстрационной доской SAM3S-EK. Я использовал USB CDC и MSC Driver с примером кода и ASF, и все работает нормально. Теперь я хочу поместить код в свою пользовательскую карту (с SAM3S1B). Но это моя проблема. Я назначил вывод и изменил конфигурацию часов, но устройство не распознается Windows. Все дескрипторы равны нулю (согласно USBLyser).USB-выпуск SAM3S-EK -> Пользовательская карта

Может кто-нибудь мне помочь?

Это мой конфигурационный файл часов (у меня есть 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

ответ

0

Как и все устройства USB, используемые под Windows, вам необходимо сначала установить драйвер для Windows сторона USB, что специфичен для устройства, которое вы подключаете.

Когда вы устанавливаете Atmel Studio 6.2 или новее, он устанавливает драйвер USB для Windows для USB-драйвера Atmel ASF, который вы используете в своей прошивке. Этот драйвер Windows работает с моим целевым процессором SAM4E. Имейте в виду, что загрузка драйвера в Windows занимает много времени. Кажется, он повесился. Просто дайте ему время, и в конечном итоге он установит драйвер. Вероятно, вам придется ответить на всплывающее предупреждение, чтобы разрешить установку неподписанного драйвера.

Драйвер Windows также можно загрузить и установить отдельно. Используйте эту ссылку:

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

+0

Спасибо за ваш ответ. Проблема заключается в том, что карта разработки работает (у меня есть правильный драйвер), но на пользовательской карте она не работает (тот же код работает на эквивалентной архитектуре, поэтому я думаю, что мне не нужен новый драйвер). – bernard

0

Двойная проверка вашей частоты. Я использую часть SAM4L, и она требует, чтобы PLL запускался из OSC0, чтобы генерировать 48 МГц часы. У меня была та же проблема, потому что мой ABDACB использовал одни и те же часы и изменил скорость. Насколько я понимаю, подключение USB-устройства определяет единственный подтягивающий резистор на контакте DP или DN в зависимости от скорости. Это то, что сообщает Windows (хосту) пытаться связаться. Если частота часов неверна, свойства в окнах показывают 0.