在peripheral例程上添加usb host,對應usb部分有點疑問,對usb協(xié)議不是很熟悉,之前用libusb寫過上位機,看usb host例程不是很清楚,流程可能有點差別,所以,請問usb host的收發(fā)是怎么樣的,CH357有個例程倒是跟其他usb device通信的,非U盤之類。
//?獲取透傳數(shù)據(jù) __align(4)?const?UINT8??GetTranData[]?=?{?0xc0,0x33,0x00,0x00,0x00,0x00,0x09,0x00?}; //?發(fā)送透傳數(shù)據(jù) __align(4)?const?UINT8??SetTranData[]?=?{?0x40,0x35,0x00,0x00,0x00,0x00,0x09,0x00?}; //?USB?Host檢測設備連接 UINT8??UsbDectConn(void) { UINT8 s; ????s?=?ERR_SUCCESS; ????if?(?R8_USB_INT_FG?&?RB_UIF_DETECT?)???????????????????????????????//?如果有USB主機檢測中斷則處理 ????{?? ????????R8_USB_INT_FG?=?RB_UIF_DETECT?;? ????????s?=?AnalyzeRootHub(?);??? ???????? ????????if?(?s?==?ERR_USB_CONNECT?)? ????????????FoundNewDev?=?1; ????} ???? ????if?(?FoundNewDev?||?s?==?ERR_USB_CONNECT?)????????????????????????//?有新的USB設備插入 ????{?? ????????FoundNewDev?=?0; ????????//?由于USB設備剛插入尚未穩(wěn)定,故等待USB設備數(shù)百毫秒,消除插拔抖動 ????????mDelaymS(?200?);???????? ???????? ????????s?=?InitRootDevice();????????????????????????????????????????//?初始化USB設備 ???????? ????????if((ThisUsbDev.DeviceVID?==?0x1213)&&(ThisUsbDev.DevicePID?==?0x3435)) ????????{ ????????????ThisUsbDev.DeviceType?=?DEV_TYPE_OTHER; ????????????s?=?ERR_SUCCESS; ????????????UsbConnStatus?=?1; ????????} ????????else???????????????????????????????????????????????????????? ????????{ ????????????s?=?ERR_USB_UNKNOWN;???? ????????????UsbConnStatus?=?0; ????????} ????} ???? ????return?s; }???? //?Usb?host接收 UINT8??UsbHostRecv(void) { ????PUINT8?len; ????*len?=?MYUSB_RX_LEN; ???? ????memset(myUsbRxBuf,0,sizeof(myUsbRxBuf)); ???? ????CopySetupReqPkg(?(PCHAR)GetTranData?);??????????????????????????????//?設置控制請求包 ???? ????//?執(zhí)行控制傳輸 ????if(ERR_SUCCESS?==?HostCtrlTransfer(?(PUINT8)myUsbRxBuf,?len,?10000000)) ????{ ????????return?1; ????}?? ???? ????return?0; }???? //?Usb?host發(fā)送 UINT8??UsbHostSend(void)??? { ????UINT8?s; ????PUINT8?len; ???? ????*len?=?MYUSB_TX_LEN; ???? ????CopySetupReqPkg((PCHAR)SetTranData); ????s?=?HostCtrlTransfer((PUINT8)myUsbTxBuf,?len,?200000/20?);???????????//?執(zhí)行控制傳輸 ???? ????if?(?s?!=?ERR_SUCCESS?) ????{ ????????return?0; ????} ????return?1; }