2014-11-11 11:42 PM
Hello,
I am interested to make USB HID HOST which can communicate with custom hid device instead of mice or keyboard.For that I have to send data to that custom hid device.I have used below fuction for dataoutUSBH_InterruptSendData (pdev, (unsigned char *)&HID_Machine.buff, HID_Machine.length, HID_Machine.hc_num_out);I am only doing out transaction form Host(STM32) to device. Everything is perfect and working fine up to 14th frame but 15th frame get corrupted, I have analyzer showing ''child has an error''. So I am unable to understand the cause of issue, is it memory overflow at host?If I continue data transmission with new data then host is sending old data packet onwardsI used dual core example for ST and modified USBH_HID_Handle() as below (Only two cases are shown here)case HID_SEND_DATA: while(USB_OTG_IsEvenFrame(pdev) == FALSE); USBH_InterruptSendData (pdev, (unsigned char *)&HID_Machine.buff, HID_Machine.length, HID_Machine.hc_num_out); HID_Machine.state = HID_BUSY; HID_Machine.timer = HCD_GetCurrentFrame(pdev); break;case HID_BUSY: if(( HCD_GetCurrentFrame(pdev) - HID_Machine.timer) >= HID_Machine.poll) { HID_Machine.state = HID_SEND_DATA; //Retry++; //1 } else if(HCD_GetURB_State(pdev , HID_Machine.hc_num_out) == URB_DONE) //last transaction was successful or not(USB request Block) { HID_Machine.state = HID_GET_DATA; BD_Data_Sent_Flag=1; } else if(HCD_GetURB_State(pdev, HID_Machine.hc_num_out) == URB_STALL ) { if( (USBH_ClrFeature(pdev, pphost, HID_Machine.ep_addr, HID_Machine.hc_num_out)) == USBH_OK) { HID_Machine.state = HID_SEND_DATA; } } break; #hid #host #stm322018-08-10 09:18 AM
Sorry, bumping old zombie unanswered threads off my feed