Yaumen 0 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Стоит задача написать код, позволяющий подключаться к PC через USB таким образом, чтобы мое устройство определялось в Windows как виртуальный COM (типа микросхем FTDI). Желательно обойтись без написания специализированных драйверов во Windows. Может кто-нибудь помочь с примером или ссылочкой на ресурс, разжевывающий данный вопрос!? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nixon 4 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Что в Keil, что в IAR есть приметры для данного процессора USBCDC. Это и есть искомое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Что в Keil, что в IAR есть приметры для данного процессора USBCDC. Это и есть искомое. Перерыл всю папку своего Keil, ничего подобного не нашел. IAR не стоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vmp 0 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Перерыл всю папку своего Keil, ничего подобного не нашел. IAR не стоит. c:\keil\ARM\Boards\Keil\MCB2300\USBCDC\ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба c:\keil\ARM\Boards\Keil\MCB2300\USBCDC\ Да, точно нашел!!! Во зарыли! Спасибо А даташита к нему не прилагается, чтобы разобраться что, как и в какой последовательности там делается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Я у себя тупо копипастнул код и запустил. И оно заработало с первого тыка. Сам удивляюсь. И именно поэтому так толком и не понял как бы я сам написал такую уйму строк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба Переписал исходники из примеров Keil под свой BOARD, скомпилировался нормально, однако, при обращении к любому USB регистру (например EP_INDEX = 0;) происходит переход на DAbt_Handler. В чем может быть проблема!? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vmp 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба однако, при обращении к любому USB регистру (например EP_INDEX = 0;) происходит переход на DAbt_Handler. Питание USB включено? PCUSB в PCONP. PLL настроен? И вообще инициализация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба Питание 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mme 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба Проверьте установку бита DEV_CLK_EN в регистре USBClkCtrl (адрес регистра 0xFFE0 CFF4). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorsk 0 15 сентября, 2010 Опубликовано 15 сентября, 2010 · Жалоба AHB Clock включен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба igorsk, mme, спасибо проблема действительно была в CLOCK, забыл напрочь настроить USBClkCtrl. Виснуть перестало, но Windows не распознает устройство, буду бороться дальше!!! Все, заработало!!! Всем спасибо, остался один вопрос. Я хочу чтобы в Винде мое устройство распознавалось как мое, а не "MCB2300 USB VCom Port". Я так думаю, что нужно подменить строки в дескрипторах USB моего класса и в INF файле-драйвере. Может есть у кого инструкция, как и что нужно поменять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба Именно ТУПО поменять. Везде. Включая даже то, что по вашему мнению не является текстовой строкой (это в инф файле). Хотя это и просто понты. В идеале, порт должен вставать самостоятельно. Т.е. чтоб этот usbser.sys автоматом подключался. И для вас же удобнее. Имхо, разумеется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaumen 0 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба но он же все равно автоматом не становится. При первом включении все равно требует драйвер, а в драйвере прописано стандартное название VCOM. И еще мне кажется, что одних манипуляций с INF файлом недостаточно, так как у USB устройства есть некий ID (дескриптор), по которому Windows его сопоставляет с драйвером, так вот если его не поменять, то многие устройства будут подключаться под моим именем, а это неправильно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 19 октября, 2010 Опубликовано 19 октября, 2010 · Жалоба По результатам тестов с разными ОС выяснилось, что inf из примера написан через.. плохо. Вот несколько лучший вариант. На 64-битных windows я его так и не проверил, зато оно работает с XP, Vista и Win7. [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. Их надо менять парой - в контроллере и в данном файле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться