Forum: Mikrocontroller und Digitale Elektronik STM32F746-Disco USB Host


von Dieter Graef (Gast)


Lesenswert?

Ich versuche grad Maus und Tastatur unter mbed zum laufen zu bekommen 
und scheitere daran, das im Interrupt das USB_OTG_GINTSTS_HCINT Flag nur 
beim Kontrollkanal gesetzt wird.

Gibs da für die Datenendpunkte etwas einzustellen oder Errata die ich 
übersehen habe?

CubeMX holt sich für Keyboard und Maus die Daten per SOF (Start of 
Frame) Interrupt ab verwendet HCINT (Host all channel) also gar nicht.

m.f.G.
Dieter Gräf

von Dieter Graef (Gast)


Lesenswert?


von Dieter Graef (Gast)


Lesenswert?

Hier:
https://developer.mbed.org/users/va009039/code/F401RE-USBHost/file/4ab8bc835303/USBHost/USBHALHost_F401RE.cpp

In der Funktion :
int USBHALHost::token_int_in(USBEndpoint* ep, uint8_t* data, int size) {
    HC hc;
    USBDeviceConnected* dev = ep->getDevice();
    hc.Init(
        ep->getAddress(),
        dev->getAddress(),
        dev->getSpeed() ? HCD_SPEED_LOW : HCD_SPEED_FULL,
        EP_TYPE_INTR, ep->getSize());

    hc.SetToggle((ep->getData01() == DATA0) ? 0 : 1);

    hc.SubmitRequest(data, size);
    while(hc.GetURBState() == URB_IDLE);
    switch(hc.GetURBState()) {
        case URB_DONE:
            switch(hc.GetState()) {
                case HC_XFRC:
                    LastStatus = ep->getData01();
                    ep->toggleData01();
                    return hc.GetXferCount();
                case HC_NAK:
                    LastStatus = NAK;
                    return -1;
            }
            break;
    }
    LastStatus = STALL;
    return -1;
}

kommt er aus der Schleife

while(hc.GetURBState() == URB_IDLE);


nicht raus weil der HCINT nicht kommt.

Dachte das ist wichtig
sorry für 3 Beiträge
m.f.G.
Dieter Graef

von Dieter Graef (Gast)


Lesenswert?

Jetzt läufts. Allerdings nicht Plug und Play.


m.f.G.
Dieter Gräf

von Dieter Graef (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.