在使用FT232R USBtoRS232芯片進行某些測試時,應該能夠管理高達3Mbaud/s的速度,但我的實際速度只有38kbaud/s或3,8KB/s左右。實際波特率是115200還是更高?
我搜索了網頁,但找不到任何可比較的數據,以證明或防止此限制。
雖然我正在進一步研究這個問題,但我想知道,如果某人在這裏有可比較的數據。
我用我自己的代碼,並在這裏這個工具測試:
http://www.aggsoft.com/com-port-stress-test.htm
設置是115200 8N1 64Byte的數據包。
我本來期望的結果像這樣:
115200波特 - >有效11520字節/秒或11,52KB/s的
在921600波特 - > 92,16KB/s的
我需要確認11,2KB/s的最低速度,更好的速度在15-60KB/s左右。
基於數據表,這應該是沒有問題的 - 基於現實,我堅持在3,8KB/s - 至少現在至少。
編輯:
噢,我發現一個相當不錯的暗示 - 我TRANSFERRATE高度依賴於數據包的大小。因此,在使用64字節數據包的同時,我使用180Byte數據包以3,8 KB/s的速度傳輸數據,平均每秒大約11,26KB/s,並且主光源亮起,當我檢查速度爲1字節數據包時 - >大約64B/s!
向它添加一些數學 - > 11,52KB/s除以180等於64B/s。所以速度基本上與字節大小成比例。這是正確的嗎?爲什麼是這樣?
該芯片的USB驅動程序將字節放入USB數據包的方式是一個強大的實現細節。發佈到electronics.stackexchange.com以查找曾使用此芯片的用戶。 –
在串口中,沒有「數據包」,只有字節流。您看到的差異是由於API調用串行驅動程序的開銷導致的時間損失,而不是端口速度本身造成的。如果您使用少量數據撥打電話,則開銷較大。如果您打出一個能夠提供巨大緩衝區的呼叫,那麼串行硬件會保持已滿狀態,並將吞吐量最大化。 – TJD
您將波特率等於*吞吐量*,但幾乎不可能實現數據通道的100%利用率。連接線的範圍。您實際上可以通過位寬來測量波特率。你不會看到任何「減速」,但看到字符幀之間的死或空閒時間。增加幀之間的死區時間就是你所說的「較慢的速度」,但它會降低吞吐量。 – sawdust