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
Die Software ist von hier: https://developer.mbed.org/users/va009039/code/F446RE-USBHostMouse_HelloWorld/file/26cbee9ef684/main.cpp m.f.G. Dieter
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
falls es einer braucht: https://developer.mbed.org/users/DieterGraef/code/DISCO-F746NG_USB_Host/ m.f.G. Dieter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.