2017-05-31 759 views
1

我使用stm32L151通過USB CDC與PC進行通信。我使用stm32 HAL庫來創建我的項目。 我發現USB發送數據的間隔爲1ms,每次發送64字節。那麼,USB CDC的最大速度是64kbyte/s?而且這個速度遠低於USB全速12Mbit /秒。我如何才能達到這個速度?或至少是這個速度的一小部分? 謝謝STM32 USB CDC的最大速度是多少?

回答

0

沒有。如果您的代碼「足夠快」,則最大CDC速度大約爲1MByte/sec。這可能需要在設備端有一個大的(> 1KB)FIFO。哦,並且PC側必須能夠足夠快地讀取數據,例如有很大的緩衝。

64KByte/s限制適用於使用中斷端點的USB HID。 USB CDC接口使用更快的批量終端。

+0

Thanks @Turbo J.如前所述,我使用HAL庫,我使用函數CDC_Transmit_FS()將數據發送到PC。我應該如何使用此功能達到1MB/s?我有一個2K字節的大緩衝區,但是端點大小是64字節。我在示波器中看到usb每1毫秒發送一次數據。如果CDC功能使用端點發送數據,它可以每1ms發送64byte?我想錯了嗎?還有一個問題:是否有免費的軟件來檢查傳入的數據波特率?謝謝 – Mohammad

0
  1. USB FS幀爲1ms,所以如果你將64個字節放入緩衝區(使用HAL功能) - 它會在下一幀發送這64個字節。它將不會再發送更多的數據,直到另一個1ms幀

  2. 如何提高速度 - >將數據集中在更大的塊中,並在一個事務中發送更多的數據(使用HAL庫高達8kB)。

+0

非常感謝您的幫助。那麼,我們可以說使用HAL庫的最大速度將是8kB * 64 = 512kByte /秒或4096Mbit /秒?這是真的嗎?我們如何能夠達到全速,例如8 Mbit/s或1MByte/s?謝謝 – Mohammad

+0

您需要比STM提供的USB庫更好一些。請記住,Windows本身會限制速度,因爲內置的VCOM實施不是很好 –

+0

再次感謝@ PeterJ。我可以使用HAL庫達到500kByte /秒的最大速度。有沒有什麼技巧使用HAL庫來提高速度?或者可以向我介紹比HAL庫更好的usb庫嗎? – Mohammad

相關問題