kray 0 19 января, 2017 Опубликовано 19 января, 2017 (изменено) · Жалоба Взял пример 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" ). Подскажите пожалуйста в чем может быть проблема ? Как правильно произвести инициализацию ? myProjectSTR912FW44.zip Изменено 19 января, 2017 пользователем IgorKossak [codebox] для длинного кода. [code]-для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kray 0 19 января, 2017 Опубликовано 19 января, 2017 · Жалоба Все, проект заработал, нужно было раскомментировать строки с 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); Рабочий проект прикрепил к этому сообщению может кому-нибудь пригодиться. myProj_usbSTR912FW44.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться