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

 
 
> Посоветуйте по изучению USB, каким путём лучше идти
NaughtyFreak
сообщение Feb 5 2013, 08:12
Сообщение #1


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

Группа: Участник
Сообщений: 90
Регистрация: 7-10-11
Из: Москва
Пользователь №: 67 593



Всем ДВС!

Хотел бы спросить у уважаемого сообщества совета по изучению USB, так сказать чтобы указали направление, а дальше сам. Сейчас на столе лежит некое устройство, скажем, телеметрии. Оно должно собирать инфо с сенсоров в кучу и отправлять всё это дело в ПК + возможность настройки устройства через оболочку на ПК. В связи с тем, что стандартного HID класса ввиду ограниченности размера посылки может не хватить, хочу забацать свой собственный. И вот тут начинаются вопросы и трудности. Сам я после чтения Агурова и ресурсов, посвященных сабжу, изучения библ от STM более-менее разобрался и как я понял главное это правильный дескриптор и настройка ендпоинтов. Как я понял, для моих задач потребуется тип передачи interrupt, 4 ендпоинта (EP0, control EP, TxEP, RxEP), т.е. концепция более-менее понятна. В какую сторону дальше копать и какой контроллер лучше взять для того, чтобы пощупать работу USB? Правильно ли я понимаю, что потребуется custom class? Сейчас имеется stm32f417, но судя по многочисленным обсуждениям его движок USB очень тяжёл для начала. Делать USB-COM не хочу принципиальноsm.gif
Что посоветуете, опытные гуру?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
NaughtyFreak
сообщение Feb 7 2013, 09:18
Сообщение #2


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

Группа: Участник
Сообщений: 90
Регистрация: 7-10-11
Из: Москва
Пользователь №: 67 593



Итак, за сутки неплохо продвинулся вперед, детально изучил дескрипторы и вообще что к чему. Многие вопросы отпали сами собой.
Вот, наваял файлик с дескрипторами будущего девайса. Всего 4 рабочих эндпоинта. Остались вопросы по-мелочи: обязательно ли делать строковые дескрипторы и правильно ли я инициализировал порядок работы vendor specific? Никак не могу найти где прочитать про interface protocol, он ведь тоже определен для классов?

Код
typedef unsigned char BYTE;

const BYTE DEVICE_DESCRIPTOR [] = {
    0x12,      //0 0-17 (18) размер в байтах
    0x01,      //1 дескриптор устр-ва
    0x02, 0x00, //2 USB 2.0
    0x00,      //4 см. дескриптор интерфеса  
    0x00,      //5 см. дескриптор интерфеса
    0x00,      //6 см. дескриптор интерфеса
    0x20,      //7 размер EP 0 32 байта
    0x12, 0xab, //8 VID с потолка
    0x00, 0x01, //10 PID с потолка
    0x00, 0x01, //12 Version 1.0
    0x00,      //14 нет
    0x00,      //15 нет
    0x00,        //16 нет
    0x01          //17 1 конф-ия
    };

const BYTE CONFIG_DESCRIPTOR [] = {
    0x09,       // 9 байт
    0x02,       // дескр-р конф-ии
    0x00,0x2e,  // всего байт возвращает - 4x7 (EP) + 2x9 = 46
    0x01,       // 1 интерфес
    0x01,       // "1"
    0x00,       // нет
    0xc0,       // self-powered
    0x96          // 300mA
    };

const BYTE INTERFACE_DESCRIPTOR [] = {
    0x09,    // 9 байт
    0x04,     // дескр-р инт-са
    0x00,    // интерфес "0"
    0x00,    // альт. интерфейс "0"
    0x04,    // 4 ендпоинта: EP1 DIN interrupt, EP1 DOUT interrupt, EP2 DOUT interrupt, EP2 DIN control
    0xff,        // vendor specific class
    0x01,    // subclass "1"
    0xff,        // vendor specific protocol
    0x00        // нет
    };

const BYTE ENDPOINT1_IN_DESCRIPTOR [] = {
    0x07,      // 7 байт
    0x05,      // дескр-р ендпоинта
    0x81,      // EP1 IN, основный данные
    0x03,      // interrupt
    0x00, 0x40, // размер 64 байта
    0x64          // каждые 100 мс
    };

const BYTE ENDPOINT1_OUT_DESCRIPTOR [] = {
    0x07,      //  7 байт
    0x05,      // дескр-р ендпоинта
    0x01,      // EP1 OUT, запись данных в ус-во
    0x03,      // interrupt
    0x00, 0x40, //  размер 64 байта
    0x64          //  каждые 100 мс
    };

const BYTE ENDPOINT2_IN_DESCRIPTOR [] = {
    0x07,      //  7 байт
    0x05,      // дескр-р ендпоинта
    0x82,      // EP2 IN, прочие данные
    0x03,      // interrupt
    0x00, 0x40, // размер 64 байта
    0x64          // каждые 100 мс
    };
    
const BYTE ENDPOINT2_OUT_DESCRIPTOR [] = {
    0x07,      // 7 байт
    0x05,      // дескр-р ендпоинта
    0x02,      // EP2 OUT, команды
    0x00,      // control type
    0x00, 0x40, // размер 64 байта
    0x32          // каждые 40 мс
    };


Нижайше прошу кинуть помидором в то место, где я накосячил rolleyes.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- NaughtyFreak   Посоветуйте по изучению USB   Feb 5 2013, 08:12
- - kovigor   Цитата(NaughtyFreak @ Feb 5 2013, 12:12) ...   Feb 5 2013, 08:52
- - Herz   Цитата(NaughtyFreak @ Feb 5 2013, 10:12) ...   Feb 5 2013, 09:02
|- - NaughtyFreak   Цитата(Herz @ Feb 5 2013, 13:02) Двигател...   Feb 5 2013, 09:52
|- - kovigor   Цитата(NaughtyFreak @ Feb 5 2013, 13:52) ...   Feb 5 2013, 09:57
|- - toweroff   Цитата(NaughtyFreak @ Feb 5 2013, 13:52) ...   Feb 5 2013, 10:02
|- - shreck   Цитата(NaughtyFreak @ Feb 5 2013, 16:52) ...   Feb 5 2013, 10:36
|- - NaughtyFreak   Цитата(shreck @ Feb 5 2013, 14:36) Вы дум...   Feb 5 2013, 10:52
|- - kovigor   Цитата(NaughtyFreak @ Feb 5 2013, 13:52) ...   Feb 5 2013, 11:15
|- - shreck   Цитата(kovigor @ Feb 5 2013, 18:15) Нет, ...   Feb 5 2013, 12:18
|- - kovigor   Цитата(shreck @ Feb 5 2013, 15:18) Не пут...   Feb 5 2013, 12:31
- - telix   Если Вы хотите копать USB то вот этот вариант наи...   Feb 5 2013, 09:30
|- - toweroff   Цитата(telix @ Feb 5 2013, 13:30) или их ...   Feb 5 2013, 09:47
- - NaughtyFreak   Нет-нет, супернадёжности не требуется, более того ...   Feb 5 2013, 10:23
|- - toweroff   Цитата(NaughtyFreak @ Feb 5 2013, 14:23) ...   Feb 5 2013, 10:29
|- - kovigor   Цитата(NaughtyFreak @ Feb 5 2013, 13:23) ...   Feb 5 2013, 10:35
|- - SyncLair   Цитата(kovigor @ Feb 5 2013, 14:35) Для а...   Feb 12 2013, 16:35
|- - NaughtyFreak   Еще одна непонятка с STM: их бит ENUMDNEM, сигнали...   Feb 13 2013, 10:46
- - NaughtyFreak   Понял, буду изучать! Скачал refernce manual на...   Feb 5 2013, 11:37
|- - kovigor   Цитата(NaughtyFreak @ Feb 5 2013, 14:37) ...   Feb 5 2013, 11:45
|- - NaughtyFreak   Цитата(kovigor @ Feb 5 2013, 15:45) Качай...   Feb 5 2013, 17:44
|- - kovigor   Цитата(NaughtyFreak @ Feb 5 2013, 20:44) ...   Feb 5 2013, 19:40
|- - toweroff   Цитата(NaughtyFreak @ Feb 5 2013, 21:44) ...   Feb 5 2013, 20:53
|- - NaughtyFreak   Цитата(toweroff @ Feb 6 2013, 00:53) при ...   Feb 6 2013, 09:18
|- - kovigor   Цитата(NaughtyFreak @ Feb 6 2013, 12:18) ...   Feb 6 2013, 09:51
- - andrewlekar   ЦитатаО какой ограниченности посылки вы говорите. ...   Feb 6 2013, 05:00
|- - shreck   Цитата(andrewlekar @ Feb 6 2013, 12:00) Г...   Feb 6 2013, 07:37
- - toweroff   kovigor, там в примерах для LPC, в общем-то, все п...   Feb 6 2013, 09:56
|- - kovigor   Цитата(toweroff @ Feb 6 2013, 12:56) kovi...   Feb 6 2013, 10:06
|- - toweroff   Цитата(kovigor @ Feb 6 2013, 14:06) И все...   Feb 6 2013, 10:27
|- - kovigor   Цитата(toweroff @ Feb 6 2013, 13:27) Впол...   Feb 6 2013, 10:36
- - NaughtyFreak   Задача почти тривиальная: Есть, ну скажем, гиропла...   Feb 6 2013, 10:23
- - toweroff   Все в первоисточнике: http://www.usb.org/developer...   Feb 7 2013, 10:32
- - NaughtyFreak   спс, пошёл дальше изучтать... Пока что опираюсь н...   Feb 7 2013, 10:34
- - NaughtyFreak   Да простят меня гуру да не кинут в меня тапками св...   Feb 12 2013, 13:40


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 22:14
Рейтинг@Mail.ru


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