www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ein Endpoint als HID und einer als Virt-COM?


Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist es möglich einen Endpoint als HID und einen als virtuelle COM 
einzustellen?

Ich verwende einen MAX3420e (SPI-USB-bridge). Dabei bisher einen 
Endpoint (EP1) als USB->Device und EP3 als Device->USB. Nun möchte ich 
einen weiteren Endpoint (EP2) nutzen. Diesen am liebsten als virtuelle 
COM, zunächst würde aber auch HID-Kanal reichen.

Wenn ich meinen Gerätemanager aufmache ist dort bei HID zwei Einträge 
vorhanden. Sind das meine bisherigen Endpoint? Erscheint da dann noch 
ein dritter?

Kann mir da wer weiterhelfen?


Hier mal mein Descriptor:

PROBLEM DABEI:
Es wird dann immer nur der zu erstgennte Endpoint abgefragt. Liegt das 
an der hid.dll?

Code: {
const uint16_t DD[]=  // DEVICE Descriptor
    {
        0x12,             // bLength = 18d
        0x01,      // bDescriptorType = Device (1)
        0x10,0x01,    // bcdUSB(L/H) USB spec rev (BCD)
        0x00,0x00,0x00,   // bDeviceClass, bDeviceSubClass, 
bDeviceProtocol
        0x40,      // bMaxPacketSize0 EP0 is 64 bytes
        0x2a,0x15,    // idVendor(L/H)--Maxim is 0B6A
        0x60,0x83,    // idProduct(L/H)--5346
        0x34,0x12,    // bcdDevice--1234
        1,2,3,      // iManufacturer, iProduct, iSerialNumber
        1      // bNumConfigurations
    };

const uint16_t CD[]=  // CONFIGURATION Descriptor
    {
        0x09,      // bLength
        0x02,      // bDescriptorType = Config
        0x30,0x00,    // wTotalLength(L/H) = 48 bytes
        0x01,      // bNumInterfaces
        0x01,      // bConfigValue
        0x00,      // iConfiguration
        0x80,      // bmAttributes. b7=1 b6=self-powered b5=RWU 
supported
        0x32,      // MaxPower is 2 ma
        // INTERFACE Descriptor
        0x09,      // length = 9
        0x04,      // type = IF
        0x00,      // IF #0
        0x00,      // bAlternate Setting
        0x03,      // bNum Endpoints
        0x03,      // bInterfaceClass = HID
        0x00,0x00,    // bInterfaceSubClass, bInterfaceProtocol
        0x00,      // iInterface
        // HID Descriptor--It's at CD[18]
        0x09,      // bLength
        0x21,      // bDescriptorType = HID
        0x10,0x01,    // bcdHID(L/H) Rev 1.1
        0x00,      // bCountryCode (none)
        0x01,      // bNumDescriptors (one report descriptor)
        0x22,      // bDescriptorType  (report)
        47,0,                   // CD[25]: wDescriptorLength(L/H) 
(report descriptor size is 43 bytes)
        // IN-Endpoint Descriptor
        0x07,      // bLength
        0x05,      // bDescriptorType (Endpoint)
        0x82,      // bEndpointAddress (EP2-IN)
        0x03,      // bmAttributes  (interrupt)
        0x3f,0,           // wMaxPacketSize (63)
        8,          // bInterval (poll every 8 msec)
         // IN-Endpoint Descriptor
        0x07,      // bLength
        0x05,      // bDescriptorType (Endpoint)
        0x83,      // bEndpointAddress (EP3-IN)
        0x03,      // bmAttributes  (interrupt)
        0x3f,0,           // wMaxPacketSize (63)
        4,            // bInterval (poll every 8 msec)
       // OUT-Endpoint Descriptor
        0x07,      // bLength
        0x05,      // bDescriptorType (Endpoint)
        0x01,      // bEndpointAddress (EP1-OUT)
        0x03,      // bmAttributes  (interrupt)
        0x16,0,           // wMaxPacketSize (22)
        16      // bInterval (poll every 8 msec)

    };

const uint16_t RepD[] =
    {
        0x06, 0xA0, 0xff,              // USAGE_PAGE (Vendor Defined 
Page 1)
        0x09, 0x01,                    // USAGE (Instance 1)
        0xa1, 0x01,                    // COLLECTION (Application)

        0x09, 0x03,                    //   USAGE (Instance 3) MAX to PC
        0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
        0x95, BYTES_TO_PC,              //   REPORT_COUNT (2)
        0x75, 0x08,                    //   REPORT_SIZE (8)
        0x81, 0x02,                    //   INPUT (Data,Var,Abs)

        0x09, 0x04,                    //   USAGE (Instance 3) MAX to PC
        0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
        0x95, BYTES_TO_PC,              //   REPORT_COUNT (2)
        0x75, 0x08,                    //   REPORT_SIZE (8)
        0x81, 0x02,                    //   INPUT (Data,Var,Abs)

        0x09, 0x05,                    //   USAGE (Instance 4) PC to 
Device
        0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
        0x75, 0x08,                    //   REPORT_SIZE (8)
        0x95, BYTES_TO_DEVICE,          //   REPORT_COUNT (2)
        0x91, 0x02,                    //   OUTPUT (Data,Var,Abs)

        0xc0                           //     END_COLLECTION
    };
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.