реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Виртуальный USB COM на LPC2366
Yaumen
сообщение Sep 10 2010, 04:54
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Стоит задача написать код, позволяющий подключаться к PC через USB таким образом, чтобы мое устройство определялось в Windows как виртуальный COM (типа микросхем FTDI).
Желательно обойтись без написания специализированных драйверов во Windows.
Может кто-нибудь помочь с примером или ссылочкой на ресурс, разжевывающий данный вопрос!?
Go to the top of the page
 
+Quote Post
Nixon
сообщение Sep 10 2010, 07:11
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Что в Keil, что в IAR есть приметры для данного процессора USBCDC. Это и есть искомое.


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Sep 10 2010, 07:48
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(Nixon @ Sep 10 2010, 10:11) *
Что в Keil, что в IAR есть приметры для данного процессора USBCDC. Это и есть искомое.


Перерыл всю папку своего Keil, ничего подобного не нашел. IAR не стоит.
Go to the top of the page
 
+Quote Post
vmp
сообщение Sep 10 2010, 08:14
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Цитата(Yaumen @ Sep 10 2010, 11:48) *
Перерыл всю папку своего Keil, ничего подобного не нашел. IAR не стоит.

c:\keil\ARM\Boards\Keil\MCB2300\USBCDC\
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Sep 10 2010, 08:20
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(vmp @ Sep 10 2010, 11:14) *
c:\keil\ARM\Boards\Keil\MCB2300\USBCDC\


Да, точно нашел!!! Во зарыли! Спасибо

А даташита к нему не прилагается, чтобы разобраться что, как и в какой последовательности там делается?
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Sep 10 2010, 15:17
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Я у себя тупо копипастнул код и запустил. И оно заработало с первого тыка. Сам удивляюсь.
И именно поэтому так толком и не понял как бы я сам написал такую уйму строк.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Sep 14 2010, 06:52
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Переписал исходники из примеров Keil под свой BOARD, скомпилировался нормально, однако, при обращении к любому USB регистру (например EP_INDEX = 0;) происходит переход на DAbt_Handler.
В чем может быть проблема!?
Go to the top of the page
 
+Quote Post
vmp
сообщение Sep 14 2010, 11:42
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Цитата(Yaumen @ Sep 14 2010, 10:52) *
однако, при обращении к любому USB регистру (например EP_INDEX = 0;) происходит переход на DAbt_Handler.

Питание USB включено? PCUSB в PCONP. PLL настроен? И вообще инициализация.
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Sep 14 2010, 11:58
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Цитата(vmp @ Sep 14 2010, 14:42) *
Питание USB включено? PCUSB в PCONP. PLL настроен? И вообще инициализация.


PCONP |= (1<<31); //PCUSB = 1 - USB power/clock control bit.
XTAL = 16 МГц
PLL = 288 Мгц (MSEL = 9, NSEL = 1)
CPU CLK = 72 MHz (CCLKSEL = 4)
USB CLK = 48 MHz (USBSEL = 6)

Все частотные параметры настроены в Конфигураторе проекта.
PCONP настроен в начале процедуры инициализации USB

Go to the top of the page
 
+Quote Post
mme
сообщение Sep 15 2010, 16:43
Сообщение #10





Группа: Новичок
Сообщений: 2
Регистрация: 15-09-10
Из: Москва
Пользователь №: 59 505



Проверьте установку бита DEV_CLK_EN в регистре USBClkCtrl (адрес регистра 0xFFE0 CFF4).
Go to the top of the page
 
+Quote Post
igorsk
сообщение Sep 15 2010, 22:28
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 22-03-10
Пользователь №: 56 131



AHB Clock включен?
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Oct 19 2010, 11:18
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



igorsk, mme, спасибо проблема действительно была в CLOCK, забыл напрочь настроить USBClkCtrl. Виснуть перестало, но Windows не распознает устройство, буду бороться дальше!!!

Все, заработало!!!

Всем спасибо, остался один вопрос. Я хочу чтобы в Винде мое устройство распознавалось как мое, а не "MCB2300 USB VCom Port".
Я так думаю, что нужно подменить строки в дескрипторах USB моего класса и в INF файле-драйвере. Может есть у кого инструкция, как и что нужно поменять?
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Oct 19 2010, 13:11
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Именно ТУПО поменять. Везде. Включая даже то, что по вашему мнению не является текстовой строкой (это в инф файле).
Хотя это и просто понты. В идеале, порт должен вставать самостоятельно. Т.е. чтоб этот usbser.sys автоматом подключался. И для вас же удобнее. Имхо, разумеется.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Yaumen
сообщение Oct 19 2010, 13:55
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



но он же все равно автоматом не становится. При первом включении все равно требует драйвер, а в драйвере прописано стандартное название VCOM. И еще мне кажется, что одних манипуляций с INF файлом недостаточно, так как у USB устройства есть некий ID (дескриптор), по которому Windows его сопоставляет с драйвером, так вот если его не поменять, то многие устройства будут подключаться под моим именем, а это неправильно
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Oct 19 2010, 14:11
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



По результатам тестов с разными ОС выяснилось, что inf из примера написан через.. плохо.

Вот несколько лучший вариант.
На 64-битных windows я его так и не проверил, зато оно работает с XP, Vista и Win7.

CODE

[Version]
Signature = "$Windows NT$"
Class = Ports
ClassGuid = {4D36E978-E325-11CE-BFC1-08002BE10318}
Provider = %MSFT%
DriverVer = 09/14/2010, 0.0.4.0
;;LayoutFile = layout.inf

[DestinationDirs]
DefaultDestDir = 12

[Manufacturer]
%MSFT% = Models, NTx86, NTia64, NTamd64

[Models.NTx86]
%SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF

[Models.NTia64]
%SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF

[Models.NTamd64]
%SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF

[Models]
%SERIAL_DEV% = SerialInstall, USB\VID_FFFF&PID_FFFF

[SerialInstall.NT]
Include = mdmcpq.inf
AddReg = SerialAddReg
CopyFiles = FakeModemCopyFilesSection

[SerialAddReg.NT]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[SerialInstall.NT.Services]
Include = mdmcpq.inf
AddService = usbser,0x0002,LowerFilter_Service_Inst

[Strings]
MSFT = "MSFT"
SERIAL_DEV = "USB serial port"


PS "некий ID" в случае USB называется VID и PID. Их надо менять парой - в контроллере и в данном файле.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 21:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016