Перейти к содержанию
    

Не приходят запросы на МК при инициализации usb для str912FW44

Взял пример usb драйвера для str9 virtual com port чтобы на основе него сделать свой драйвер для STR912FAW44.

Немного допилив его удалось сделать так, чтобы usb определялся как неизвестное устройство (раньше и этого не было).

Однако дальше процесс не идет (прикрепил скриншот программного анализатора на ПК).

Т.е. нет запросов GET_STATUS (0x00), GET_DESCRIPTOR (0x06) и т.д.

 

Вот кратко мой код (большая часть кода которая была для uart я удалил или закомментировал, т.к. он мне пока не нужен):

 

//1) Инициализация периферии и тактового генератора
 SCU_MCLKSourceConfig(SCU_MCLK_OSC);

 SCU_AHBPeriphClockConfig(__VIC, ENABLE);
 SCU_AHBPeriphReset(__VIC, DISABLE);

 /*USB clock = MCLK= 48MHz*/
 SCU_USBCLKConfig(SCU_USBCLK_MCLK2);
 SCU_AHBPeriphClockConfig(__USB48M, ENABLE);

 /*Enable USB clock*/
 SCU_AHBPeriphClockConfig(__USB, ENABLE);
 SCU_AHBPeriphReset(__USB, DISABLE);

//2) Настраиваем ножку port2 pin7 (USBCLK) на выход:
 SCU->GPIOOUT[0x02]  = 0x4000;

//  3) Настройка прерывания по умолчанию:
 VIC_DeInit();
 VIC_InitDefaultVectors();

//4) Настройка прерывания для usb:
void USB_Interrupts_Config(void)
{
 VIC_Config(USBLP_ITLine, VIC_IRQ, 3);
 VIC_ITCmd(USBLP_ITLine, ENABLE);
}

Обработчик прерывания USB_Istr() в файле usb_istr.c срабатывает, чтобы запустился код на обработку

запросов должна сработать вот эта вот ветка:

 

#if (IMR_MSK & ISTR_CTR)
  if (wIstr & ISTR_CTR & wInterrupt_Mask)
  {
    /* servicing of the endpoint correct transfer interrupt */
    /* clear of the CTR flag into the sub */
    CTR_LP();

Т.е. бит CTR в регистре USB_ISTR говорящей об успешности транзакции должен сработать. Однако этого почему-то не происходит.

(Приложил к сообщению свой проект,

проект делал в keil находиться по пути "um0290\str91x demos\Virtual Com Port\project\RVMDK"

).

 

Подскажите пожалуйста в чем может быть проблема ? Как правильно произвести инициализацию ?

post-73115-1484808645_thumb.png

myProjectSTR912FW44.zip

Изменено пользователем IgorKossak
[codebox] для длинного кода. [code]-для короткого!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все, проект заработал, нужно было раскомментировать строки с PLL:

 

SCU_PLLFactorsConfig(192, 25, 2);

SCU_PLLCmd(ENABLE);

SCU_MCLKSourceConfig(SCU_MCLK_PLL);

 

а также

 

FMI_Config(FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE, \

FMI_LVD_ENABLE, FMI_FREQ_HIGH);

 

Рабочий проект прикрепил к этому сообщению может кому-нибудь пригодиться.

post-73115-1484822374_thumb.png

myProj_usbSTR912FW44.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...