pvvx
Активный участник сообщества
Кто может объяснить данное явление:
Как обычно закатал в WCH-LinkE сильно переделанную программу примера ch32v307\EVT\EXAM\USB\USBHS\DEVICE\SimulateCDC.
В ней исправил всё связанное с инициализацией PLL-ей, т.к. кварц на WCH-LinkE на 12 МГц, а не 8 МГц как во всех примерах от WCH.
Временно отключил UART (он всего там до 9 Мбит в сек, а мне надо десятки Мегабит), заменив на "Эхо" (что отсылается в USB то и приходит обратно) чтобы протестировать скорость USB на разных размерах передаваемых-принимаемых блоков в CDC (USB-COM).
Протестировал старым своим питоно-скриптом.
Скрипт передает фиксированный размер блока в COM и ждет приема ответа аналогичного переданному и так повторяет указное кол-во раз. Данные в блоке изменяются по номеру счетчика транзакции и сверяются...
В итого, как всегда:
Нарывается на предельный размер в 8120 байт, где далее идет падение скорости(!?).
Если тестируемый WCH-LinkE всунуть в другой порт USB, то вылезают и другие ограничения:
- в некоторых портах или через разные USB хабы (USB2.0...USB3.1...) вообще происходят сбои при блоке более чем 4095 байт.
Замеры скоростей передачи до этих ограничений примерно одинаковы...
Но от куда данные ограничения и провалы?
Ранее где-то мелькала информация о не полной скорости USB2.0 на драйвере или самом USB у AMD процов, проявляющуюся в редких тормозах... Например об этом писалось в Saleae при работе с Cypress CY7C68013A, так же у NRF в PowerProfiler II (хотя там всего USB2.0 FS) . Так и не исправили... Решается методом перебора и тыка в другой порт или через USB-Хаб.
Кто видел решение данной проблемы?
Как обычно закатал в WCH-LinkE сильно переделанную программу примера ch32v307\EVT\EXAM\USB\USBHS\DEVICE\SimulateCDC.
В ней исправил всё связанное с инициализацией PLL-ей, т.к. кварц на WCH-LinkE на 12 МГц, а не 8 МГц как во всех примерах от WCH.
Временно отключил UART (он всего там до 9 Мбит в сек, а мне надо десятки Мегабит), заменив на "Эхо" (что отсылается в USB то и приходит обратно) чтобы протестировать скорость USB на разных размерах передаваемых-принимаемых блоков в CDC (USB-COM).
Протестировал старым своим питоно-скриптом.
Код:
>python3 DevEchoCDCTstTxRx.py -p COM21 -c 10000 8120 8120
USB Echo Utility version 20.10.19
Start 10000 cycles Tx 8120 -> Rx 8120
------------------------------------------
Time: 6.081 sec
Cycles: 10000 (transactions)
Writes: 81200000 Bytes (13039.033 KBytes/s)
Reads: 81200000 Bytes (13039.033 KBytes/s)
OldBlk: 55 aa 1fb8 270f ..
------------------------------------------
IO Speed: 26078.066 KBytes/s
~ 25.5 MBytes/s
В итого, как всегда:
Нарывается на предельный размер в 8120 байт, где далее идет падение скорости(!?).
Если тестируемый WCH-LinkE всунуть в другой порт USB, то вылезают и другие ограничения:
- в некоторых портах или через разные USB хабы (USB2.0...USB3.1...) вообще происходят сбои при блоке более чем 4095 байт.
Замеры скоростей передачи до этих ограничений примерно одинаковы...
Но от куда данные ограничения и провалы?
Ранее где-то мелькала информация о не полной скорости USB2.0 на драйвере или самом USB у AMD процов, проявляющуюся в редких тормозах... Например об этом писалось в Saleae при работе с Cypress CY7C68013A, так же у NRF в PowerProfiler II (хотя там всего USB2.0 FS) . Так и не исправили... Решается методом перебора и тыка в другой порт или через USB-Хаб.
Кто видел решение данной проблемы?