我現(xiàn)在和HP打印機相連,前面的枚舉過程都挺順利,但是到了批量傳輸數(shù)據(jù)的時候,卻不知道怎么進行批量傳輸,批量傳輸?shù)闹噶钍窃趺礃拥?怎么實現(xiàn)的?哪位大蝦可以幫我一下,謝謝!
一般打印機也只有上傳和下傳端點,就向上傳端點送炸數(shù)據(jù)就行了,一般的端點地址都為0x01,小數(shù)的有0x02,0x03的都有,具體就要看端點描述符了,這個也不用說了,不明看協(xié)議吧,不然要USB協(xié)議來干嘛, 下傳的地址一般為0x81,
關(guān)于主機端的批量數(shù)據(jù)發(fā)送,你首先要知道什么哪個端點是批量端點,這個你可以去參考USB協(xié)議里面關(guān)于描述符的介紹,還有就是你在發(fā)送數(shù)據(jù)的時候一定要同步,還有就是你在發(fā)送數(shù)據(jù)的時候,如果是批量傳輸?shù)脑?,那么你的前面的?shù)據(jù)每次都是64字節(jié),只有最后一次可以不是64字節(jié),同時,你要先將數(shù)據(jù)寫到375,然后在發(fā)送令牌請求數(shù)據(jù)輸出。
我試來試去,好象都不行呀,誰可以幫助我一下呀?
你可以下載CH375HST里面有一個關(guān)于打印機的例子程序,那個批量傳輸你是可以參考的
因為我看了CH375的那個芯片介紹,里面根本沒有介紹批量傳輸?shù)膬?nèi)容,特別沒有介紹主機輸出的具體內(nèi)容,包括issue_token的具體用法,只介紹了輸入和控制的用法,輸出沒有太仔細的介紹,所以搞不太懂了.
你可以下載CH375DS2里面關(guān)于外置固件的有介紹
是不是我只要先wr_usb_data7把數(shù)據(jù)發(fā)送到主機的輸出緩沖區(qū)里,然后用issue_token輸出就可以了呢? 如果數(shù)據(jù)長度不為8的倍數(shù),發(fā)出后會是什么情況?
我現(xiàn)在就是搞不懂批量傳輸?shù)木唧w指令執(zhí)行情況和方法?特別是輸出指令.
那是USB的協(xié)議里面的,實際上我們的外置固件還是將一些USB協(xié)議寫好了,你要想了解清楚的話你可以看USB1。1的協(xié)議
我不是這個意思,我是說你們不是有說可以支持塊傳輸指令的嗎?我是看到你們說可以用issue_token的方式進行DATA輸出,但是我一直搞不懂怎么進行DATA輸出,具體步驟是怎么樣的?是不是就是WR_USB_DATA7先把數(shù)據(jù)送到CH375主機的輸出緩沖區(qū)里面(是哪一個緩沖區(qū)啊?),然后用ISSUE_TOKEN進行DATA輸出啊?是不是執(zhí)行了ISSUE_TOKEN后CH375緩沖區(qū)里的值就自動傳到了設(shè)備去了啊?那么傳輸?shù)臄?shù)據(jù)長度由什么來控制呢?
是這樣的,首先單片機將數(shù)據(jù)寫到375中,接著在發(fā)送令牌(令牌的命令是請求數(shù)據(jù)輸出),當令牌發(fā)送成功之后,那么就將375中的數(shù)據(jù)在寫到USB設(shè)備中,在USB協(xié)議中規(guī)定,批量傳輸中,當傳輸?shù)臄?shù)據(jù)大于64字節(jié)的時候,前面?zhèn)鬏數(shù)臄?shù)據(jù)都必須是64字節(jié),只有最后一次的數(shù)據(jù)可以不是64字節(jié),當設(shè)備檢測到傳輸?shù)臄?shù)據(jù)是小于64字節(jié)或者是 0字節(jié)的包的話,那說明數(shù)據(jù)傳輸完了
哦,謝謝hcn,我現(xiàn)在的疑問是比如我要發(fā)送一個6個字節(jié)或者就1個字節(jié)的數(shù)據(jù),我也使用塊傳輸可以嗎?在使用issue_token發(fā)送了令牌以后是不是就自動將CH375中的數(shù)據(jù)自動寫到USB設(shè)備中去呢?還有數(shù)據(jù)寫到USB設(shè)備中以后USB設(shè)備會不會返回一些握手信號呢?CH375自身去處理嗎?
發(fā)送6個或者一個都是一樣的,USB設(shè)備會返回一些握手信號,我們的375進行處理之后就產(chǎn)生中斷告訴單片機是哪中狀態(tài),在發(fā)送子程序里面不是有ACK,NAK和STALL三種中斷判斷嗎?就在那進行判斷
哦,非常謝謝hcn,還有發(fā)送6個或者1個字節(jié)的數(shù)據(jù)時CH375是不是在發(fā)送令牌以后只發(fā)送這1個或者6個數(shù)據(jù),會不會必須要發(fā)送8個或者16個這樣的數(shù)據(jù)呢? 另外在主機方式下發(fā)送wr_usb_data7需要進行DATA0和DATA1之間的轉(zhuǎn)換?
hcn,在主機方式下想CH375發(fā)送數(shù)據(jù)時需要進行DATA0和DATA1之間轉(zhuǎn)換嗎?如何轉(zhuǎn)換呢?