我用ch375作host,參考Bulk_Only協(xié)議發(fā)CBW,可是當(dāng)發(fā)多次CBW時(shí)總在中間在“死機(jī)”。 初步判定是在數(shù)據(jù)階段的同步出問題,請(qǐng)問要注意些什么; 還有如果我的接收端點(diǎn)是2,那么要用CLR_STALL命令時(shí)這樣四句對(duì)嗎: CH375_WR_CMD(CLR_STALL); CH375_WR_DAT(2|0x80); endp6_mode = 0x80; wait_interrupt();
(1)“死機(jī)”的話,得先確認(rèn)具體是什么階段,命令、數(shù)據(jù)還是狀態(tài) (2)清除端點(diǎn)的流程是可以的,不過endp6_mode必須是等待清除成功后才能修改,另外,清除命令一般是當(dāng)端點(diǎn)應(yīng)答Stall時(shí)才用的 (3)批量傳輸時(shí),同步位的切換很重要,且發(fā)送和接收的同步是獨(dú)立的,可能是程序流程有些問題
CH375內(nèi)部已經(jīng)集成了BULKONLY的大不分命令.讀寫U盤直接發(fā)送簡單的命令就可以了. 到在線下載搜索:CH375EVT.ZIP.里面有CH375EV0.C 一般返回STALL的時(shí)候才需要用到 CH375_WR_CMD(CLR_STALL); CH375_WR_DAT(2); endp6_mode = 0x80; wait_interrupt();
謝謝樓上兩位的解答:) 至于 紅桃六 的返回STALL操作,清除接收端點(diǎn)用..CH375_WR_DAT(2);..還是CH375_WR_DAT(2|0x80);呢?
清批量上傳端點(diǎn):CH375_WR_DAT(2|0x80) 清批量下傳端點(diǎn):CH375_WR_DAT(2)