Easyelectronics.ru

Электроника для всех
Текущее время: 22 апр 2019, 07:27

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Виртуальный COM через USB для МК STR912FAW44
СообщениеДобавлено: 31 дек 2016, 22:55 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 июн 2013, 22:55
Сообщения: 53
Здравствуйте,

на плате для определенного изделия на базе старого микроконтроллера STR912FAW44 появилась необходимость прикрутить
виртуальный COM порт для usb.

Первым делом я решил посмотреть есть ли примеры создания виртуального COM порта, нашел пример на сайте ST.

Т.к. я пользуюсь keil3 для компиляции программы то выбрал готовый проект

"\um0290\str91x demos\Virtual Com Port\project\RVMDK".


Для ПК я установил драйвера предназначавшиеся для stm32, взял отсюдого.

Прошив данный пример в плату с МК STR912FAW44, и соединившись с хостом ПК (windows 7 64bit) никакой реакции, в диспетчере устройств ПК вообще
ничего не происходит при соединении по usb ПК и МК. Пробовал подключиться к старому ноутбуку (windows XP) там такая же ситуации ПК вообще не видит
МК, никакого com порта не появляется.

Далее я скачал документ UM0290 отсюдого чтобы прочитать более подробно о примере предоставленном ST.
На с.54 написана краткаz инструкция запуска примера:
1)Load the application and run it on the evaluation board
2) Plug the USB cable into the PC
3) Indicate to the PC the location of the stmcdc.inf file (already provided in the Kit)

С первыми 2 пунктами все понятно. А вот в 3ем пункте ни совсем понятно, откуда взять файл stmcdc.inf ?
У меня ведь нет evolution board. Возможно из-за этого ПК и не распознает мой МК с прошитым примером для виртуального com порта.



Подскажите пожалуйста, что можно сделать в данной ситуации, чтобы хост (ПК) распознал МК в качестве виртуального com порта ?
Или где можно взять stmcdc.inf ? И Каким образом нужно сделать: "Indicate to the PC the location of the stmcdc.inf file" ?

Заранее спасибо всем за помощь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальный COM через USB для МК STR912FAW44
СообщениеДобавлено: 04 янв 2017, 12:22 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 274
Откуда: Таганрог
Номер раз. А Ваша железка с прошитым примером видеться в системе как неопознанное устройство?

Номер два. Windows у Вас какой версии? Если старше чем 8.1, то в исходных кодах ваших в описании дескриптора устройства установите класс устройсва 2, подкласс (subclass) 2. Система автоматически увидит устройство типа CDC (communication device class)

Номер три. Если железка видится, но хочет драйвер. Тогда соглашаетесь на установку драйвера из указанного места. В указанном месте (Ржевский молчать) должен быть файлик .inf. Пример его я приложил. НО его нужно подправить под Вашу ситуацию, а именно указать ваши PID\VID, а так же добавить текстовые описания.

Этот файлик кстати, лежит обычно рядом exeшкой для установки драйвера.


Вложения:
stmcdc.rar [841 байт]
Скачиваний: 83
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальный COM через USB для МК STR912FAW44
СообщениеДобавлено: 17 янв 2017, 10:50 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 23 июн 2013, 22:55
Сообщения: 53
Спасибо большое, СheMax, за помощь.

На ПК у меня usb начала определяться после проведения определенных манипуляций с инициализацией.


Код:

  ErrorStatus=SCU_MCLKSourceConfig(SCU_MCLK_OSC);
ErrorStatus=SCU_PLLFactorsConfig(192, 25, 2); // Fpll=96mHz
ErrorStatus=SCU_PLLCmd(ENABLE);
ErrorStatus=SCU_MCLKSourceConfig(SCU_MCLK_PLL);



   SCU_AHBPeriphClockConfig(__USB48M, ENABLE);
SCU_AHBPeriphClockConfig(__USB, ENABLE);
SCU_AHBPeriphReset(__USB, DISABLE);




В диспетчере устройств usb устройство определяется как "Неопознанное устройство".

Далее инициализации не производиться, возможно что-то с примером от ST ни так.

В примере задается обработка прерывания (с высоким приоритетом):

Код:
VIC_Config(USBHP_ITLine, VIC_IRQ, 3);
  VIC_ITCmd(USBHP_ITLine, ENABLE);


Сюда я добавил еще задание прерывание с низким приоритетом для usb, в итоге:
Код:

VIC_Config(USBHP_ITLine, VIC_IRQ, 3);
  VIC_ITCmd(USBHP_ITLine, ENABLE);

  VIC_Config(USBLP_ITLine, VIC_IRQ, 4);
  VIC_ITCmd(USBLP_ITLine, ENABLE);



Но они не срабатывают.

Я подозреваю, что они должны срабатывать уже после проведения фазы enumeration (т.е. запрос на дискриптор, установку конфигурации и пр.).

Подскажите пожалуйста как произвести процесс enumeration, какие прерывания нужно настроить ?

Я смотрел в руководстве, но том достаточно смутно написано, ни очень понятно как обрабатывать запросы, как их ожидать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB