Jump to content

    
Sign in to follow this  
Eltex

CP2102

Recommended Posts

Добрый день.

Столкнулся со следующей проблемой:

Наше железо ранее обменивалось с компом по стандартному 232 порту. В дежурном режиме идет постоянный обмен короткими пакетами (8 байт). После перехода на СР2102 с стандартными драйверами виртуального порта оказалось что между посылкой/приемом пакета идут довольно большие паузы.(около 40мс) как следствие фактическая скорость обмена упала примерно в 50раз. На стандарном ком-порте пауз нет вообще. Изменения таймаутов не влияют.

С чем связана такая проблема? Возможно ее побороть или хотя бы немного уменьшить задержку между пакетами?

Пакеты посылаются в цикле , после ответа железки сразу посылается новый запрос, ни каких специальных пауз в программе нет, но чтение данных из порта стандартными АРІ длится гараздо больше установленных таймаутов с передачей тоже самое, на обычном ком-порте тоже ПО работает нормально.

Спасибо.

 

ПС: О данной проблеме уже слышал но ответа не в форуме не в интернете не нашел.

Edited by Eltex

Share this post


Link to post
Share on other sites

По опыту общения с FTDI

таймауты которые устанавливаются виндоватыми функциями SetCommTimeouts...

не работают на USB (или работают не так как ожидается)

это конечно связано с тем что реально данные идут пакетами и на прием приходят пачками, причем чаще чем 2 ms меду такими пакетами сделать не получатеся.

в FTDI есть настройка LatencyTimer которая позволяет менять частоту опроса USB

Наверное у Silabs есть что то подобное.

В любом случае нельзя полагаться на тамауты установленные SetCommTimeouts, они будут только мешать. Таймауты придется делать по другому.

Share this post


Link to post
Share on other sites
По опыту общения с FTDI

таймауты которые устанавливаются виндоватыми функциями SetCommTimeouts...

не работают на USB (или работают не так как ожидается)

это конечно связано с тем что реально данные идут пакетами и на прием приходят пачками, причем чаще чем 2 ms меду такими пакетами сделать не получатеся.

в FTDI есть настройка LatencyTimer которая позволяет менять частоту опроса USB

Наверное у Silabs есть что то подобное.

В любом случае нельзя полагаться на тамауты установленные SetCommTimeouts, они будут только мешать. Таймауты придется делать по другому.

 

У FTDI действительно есть LatencyTimer, а вот у Silabs в настройках порта ее нет и вообще нигде в доке не упоминается.

Но, интерестно другое, после открытия порта в трафике УСБ явно видны осцилографом пакеты через каждую 1мс. При этом паузы между пакетами УАРТ не всегда стабильны но, всегда кратны 1мс и колебаются тоже ровно на 1мс, при этом на втором луче явно видно что они засинхронизированы с пакетами УСБ.

Т.е. получается что опрос УСБ на моем компе идет 1мс вот только прием/передача происходят не в первом запросе УСБ а на каком-то другом попозже.

 

На другом компе вообще скорость упала раз в 200, но посмотреть осцилографом паузы и пакеты там возможности нет.

Share this post


Link to post
Share on other sites

Такое поведение CP2102 скорее всего связано с его firmware (насколько я понял - это фабрично прошитый С8051F327) и драйвером виртуального СОМ-порта.

Если позволяют условия задачи, то попробуйте с драйвером USBXpress.

 

PS. Лучше реализовать ваш протокол на том же С8051F327.

Для облегчения задачи можно применить USBXpress.

Share this post


Link to post
Share on other sites
Добрый день.

Столкнулся со следующей проблемой:

Наше железо ранее обменивалось с компом по стандартному 232 порту. В дежурном режиме идет постоянный обмен короткими пакетами (8 байт). После перехода на СР2102 с стандартными драйверами виртуального порта оказалось что между посылкой/приемом пакета идут довольно большие паузы.(около 40мс) как следствие фактическая скорость обмена упала примерно в 50раз. На стандарном ком-порте пауз нет вообще. Изменения таймаутов не влияют.

С чем связана такая проблема? Возможно ее побороть или хотя бы немного уменьшить задержку между пакетами?

Пакеты посылаются в цикле , после ответа железки сразу посылается новый запрос, ни каких специальных пауз в программе нет, но чтение данных из порта стандартными АРІ длится гараздо больше установленных таймаутов с передачей тоже самое, на обычном ком-порте тоже ПО работает нормально.

Спасибо.

 

ПС: О данной проблеме уже слышал но ответа не в форуме не в интернете не нашел.

 

Посылаю Вам свой перевод AN232B-03 FTDI FTDI__________.zip

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this