STM32F746-Disco USB Host

Gast #4606718
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
Gast #4606762
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren