|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
STR9 USB BULK速度怎樣提高? |
| 作者:sparkman 欄目:MCU技術(shù) |
我用STR9 USB HID DEMO修改成BULK傳輸程序后,已經(jīng)能用了?墒撬俣戎挥130KB/S,離理論速度1.5M/s還差得遠(yuǎn)。 我已經(jīng)嘗試了很多辦法,發(fā)現(xiàn)問題不在PC的驅(qū)動(dòng)上,因?yàn)榧词共挥抿?qū)動(dòng),使用USB HOUND也達(dá)不到高速。另外,問題也不在MCU處理速度上,48MHZ和96Mhz的主頻下傳輸速度都一樣。還有,單緩沖雙緩沖也沒有速度上的區(qū)別。DMA應(yīng)該也不能解決問題,因?yàn)榧词共桓戮彌_區(qū)的內(nèi)容(DMA就是自動(dòng)干這個(gè)的),速度也一樣。 另外,理論上說全速設(shè)備的端口描述的MaxPacket大小應(yīng)該是64,32……,可是我把它設(shè)置到256還能用,這是速度明顯比設(shè)置到64快得多(64的速度只有30KB/S)。但是不能設(shè)置成更大了,更大就會(huì)出錯(cuò),不能正常傳輸。這一點(diǎn)我一直不理解。 特請(qǐng)教專家,USB BULK速度上不去會(huì)是什么原因?怎樣解決? 謝謝! |
| 2樓: | >>參與討論 |
| 作者: starm 于 2007/1/7 14:15:00 發(fā)布:
關(guān)注這個(gè)問題, 期望專家釋疑. |
|
| 3樓: | >>參與討論 |
| 作者: 浪淘沙 于 2007/1/7 21:49:00 發(fā)布:
USB BULK的速度受多種因素影響 關(guān)于你的BULK傳輸慢的問題,我認(rèn)為主要原因應(yīng)在主機(jī)方面;通常若主機(jī)軟件要求傳輸數(shù)據(jù)是較小的長(zhǎng)度時(shí),下層的USB驅(qū)動(dòng)不能及時(shí)地發(fā)出數(shù)據(jù)包,造成大量的帶寬損失。以發(fā)送1MB數(shù)據(jù)舉例說明: 方法一: for (i=0;i<16;i++) USB_Bulk_Send(Buffer, 65536); 一次發(fā)送調(diào)用發(fā)送64KB數(shù)據(jù) 方法二: for (i=0;i<16384;i++) USB_Bulk_Send(Buffer, 64); 一次發(fā)送調(diào)用只發(fā)送64B數(shù)據(jù) 上述方法一比方法二快很多,你所得出的130KB/s估計(jì)是使用方法二,每次只發(fā)送64或128或256字節(jié)。 至于你把MaxPacket大小設(shè)為256也可以用,這絕對(duì)是主機(jī)USB驅(qū)動(dòng)的BUG,這個(gè)問題是出在你的USB HOUND上面。 |
|
| 4樓: | >>參與討論 |
| 作者: pumac 于 2007/1/8 9:31:00 發(fā)布:
應(yīng)該是pc端問題 上位機(jī)的數(shù)據(jù)buffer如果加到很大,比如32K,速度會(huì)有明顯提高 |
|
| 5樓: | >>參與討論 |
| 作者: ijk 于 2007/1/8 11:34:00 發(fā)布:
STR9 USB BULK速度最快 STR9 USB BULK速度最快應(yīng)該能達(dá)到500~600kB/s,或許還能更快些。STR7的DEMO板上用外部RAM模擬了1個(gè)U盤,大概就能達(dá)到上面的速度。 130kB/s還有很多的提升空間。就看怎么想辦法了 |
|
| 6樓: | >>參與討論 |
| 作者: sparkman 于 2007/1/8 13:45:00 發(fā)布:
510KB/s了 謝謝各位,我修改驅(qū)動(dòng),把BULKUSB_MAX_TRANSFER_SIZE 增加到1023, 同樣固件的MaxPacket也加大到1023,速度就上去了。 不過我還不明白為什么。按理說全速的MaxPacket理論上不能超過64的。 |
|
| 7樓: | >>參與討論 |
| 作者: 浪淘沙 于 2007/1/8 22:00:00 發(fā)布:
全速的MaxPacket不能超過64,問題是你的驅(qū)動(dòng)是否遵循這個(gè)原則 這絕對(duì)是主機(jī)驅(qū)動(dòng)的問題! |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |