CH375如何發(fā)送SCSI命令?

我通過CH375訪問一個類似于U盤的設(shè)備,走的是Bulk。走的也是類似于SCSI的命令。 現(xiàn)在設(shè)備可以正常枚舉起來,也就是 mCtrlSetConfig 也是正確完成。 然后我開始發(fā)test unit ready命令下去。 在此之前要配置一下端點信息,我是這樣做: ch375_host[index].status = CH375_IDLE; ch375_host[index].mBulkInEndp = 1; // BulkIn ch375_host[index].mBulkOutEndp = 2; // BulkOut ch375_host[index].mBulkOutLen = 64; // Max Pack Length ch375_host[index].in_tog = 0; ch375_host[index].out_tog = 0;

每發(fā)送和接收完數(shù)據(jù)后,我都將in_tog和out_tog都做一次變更。

目前情況是: 在一些u盤,這樣做是沒問題的,發(fā)送u盤讀寫都可以正常。 但有些就不行,具體是在發(fā)送完cbw后,讀不到u盤的csw響應(yīng)。 但我確定在windows下是好的。


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

(1)發(fā)送的流程很簡單:就把SCSI命令封裝成CBW按照BulkOnly協(xié)議通過主機端點發(fā)送給設(shè)備。 (2)類似于U盤的設(shè)備?在計算機上是什么設(shè)備,如果比較特殊,那么需要看看計算機操作該設(shè)備的流程 (3)CH375芯片內(nèi)部固化了BulkOnly協(xié)議及部分常用SCSI命令,只要發(fā)送命令碼即可,如test unit ready,只要發(fā)送DISK_READY給CH375,那么CH375會把它解釋成SCSI命令,并按BulkOnly協(xié)議發(fā)送給U盤


請問你說的(3),有文檔嗎? 我需要發(fā)送一些自定義的命令和U盤通迅,所以大概只能自己封裝了。

現(xiàn)在程序流程如下,請幫忙分析: 0x46,0x01 CMD_GET_DESCR 0x22,0x14 Isr

0x28,0x12,0x..... 0x45,0x05 CMD_SET_ADDRESS(5) 0x22,0x14 Isr

0x13,0x05 CMD_SET_USB_ADDR 0x46,0x02 CMD_GET_DESCR 0x22,0x14 Isr

0x28,0x20,0x...

0x49,0x01 CMD_SET_CONFIG 0x22,0x14 Isr

CMD 0x16 CMD 0x22,0x14

0x1D,0x80 CMD_SET_ENDP7 0x2B,0x1F,0x55,0x53,0x42... Send TestUnitReady CBW 0x4F,0x21 CMD_ISSUE_TOKEN 0x22,0x14 Isr

0x1C,0x80 CMD_SET_ENDP6 0x4F,0x19

后面無中斷產(chǎn)生


搞定了。 不同的U盤其In,Out端點不一樣,正確分析描述符并取其值,進(jìn)行設(shè)置就可以了。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频