STM32的USB速度,終於確定了傳輸極限,為以后的產品設計提供了數據。


 是自定協議,用到一個bulk in ep1, 一個bulk out ep2 端點


 
 用虛擬串口的優點顯而易見,上位機的編寫非常方便,就按照常規的串口功能編寫就可以了,而速度確還是usb的速度 

USB要提速

1、使用自定義的Bulk傳輸
2、增加驅動的Buffer
剛才又實驗了下,現在驅動程序方面的速度瓶頸已經解決了。主要還是這個PipeMaxTransferSize的關系,這個值越大速度越快。晚上注意到這 個值很多USB設備的驅動程序都是設的很大的,連HID設備都設成4096,我的一個U盤也是4096,KEIL的ULINK設置成65535,幾乎所有 USB設備驅動的端點0都是設成65535。晚上測試了下,這個值不會影響數據傳輸,這個最大值不管怎么設實際USB設備管道每次接收的數據該64字節還 是64字節,應該是WINDOWS核心驅動層收到來自USB驅動的IRP后會自動拆包成與設備固件定義的大小(64字節)進行發送的。
    做了下速度對比
pipemaxtranfer:64---33KB/S
pipemaxtranfer:512--265KB/S
pipemaxtranfer:1024--349KB/S
pipemaxtranfer:4096--457KB/S
pipemaxtranfer:65535--506KB/S 
 
要實現程序更新
 MCU首先能解析出PC通過USB發送的數據是用於更新程序的,然后MCU退出正在運行的程序並進入"更新程序"狀態,完成后再運行更新后的程序

關於STM32的速度

要那么快的話就不該用STM32

應該用專用的USB讀卡器芯片或者用FPGA定制
很多人有誤解,以為USB2.0就意味着high speed,其實不然。USB2.0的設備(當然對主機也是差不多的道理,只是主機至少會支持full speed),可能只支持low speed 1.5M,也可能最高支持到full speed 12M(對於很多ARM芯片都是這種情況,包括STM32),當然也可能最高支持到high speed 480M


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM