реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> CP2102, Паузы при передаче пакетов
Eltex
сообщение Apr 24 2007, 17:06
Сообщение #1





Группа: Новичок
Сообщений: 13
Регистрация: 14-07-06
Из: Ukraine
Пользователь №: 18 821



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

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

Сообщение отредактировал Eltex - Apr 24 2007, 17:07
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 24 2007, 22:42
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



По опыту общения с FTDI
таймауты которые устанавливаются виндоватыми функциями SetCommTimeouts...
не работают на USB (или работают не так как ожидается)
это конечно связано с тем что реально данные идут пакетами и на прием приходят пачками, причем чаще чем 2 ms меду такими пакетами сделать не получатеся.
в FTDI есть настройка LatencyTimer которая позволяет менять частоту опроса USB
Наверное у Silabs есть что то подобное.
В любом случае нельзя полагаться на тамауты установленные SetCommTimeouts, они будут только мешать. Таймауты придется делать по другому.
Go to the top of the page
 
+Quote Post
Eltex
сообщение Apr 25 2007, 01:47
Сообщение #3





Группа: Новичок
Сообщений: 13
Регистрация: 14-07-06
Из: Ukraine
Пользователь №: 18 821



Цитата(KRS @ Apr 24 2007, 22:42) *
По опыту общения с FTDI
таймауты которые устанавливаются виндоватыми функциями SetCommTimeouts...
не работают на USB (или работают не так как ожидается)
это конечно связано с тем что реально данные идут пакетами и на прием приходят пачками, причем чаще чем 2 ms меду такими пакетами сделать не получатеся.
в FTDI есть настройка LatencyTimer которая позволяет менять частоту опроса USB
Наверное у Silabs есть что то подобное.
В любом случае нельзя полагаться на тамауты установленные SetCommTimeouts, они будут только мешать. Таймауты придется делать по другому.


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

На другом компе вообще скорость упала раз в 200, но посмотреть осцилографом паузы и пакеты там возможности нет.
Go to the top of the page
 
+Quote Post
Седой
сообщение Apr 25 2007, 20:00
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



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

PS. Лучше реализовать ваш протокол на том же С8051F327.
Для облегчения задачи можно применить USBXpress.
Go to the top of the page
 
+Quote Post
Лев Александрови...
сообщение Apr 6 2008, 17:23
Сообщение #5





Группа: Новичок
Сообщений: 1
Регистрация: 6-04-08
Пользователь №: 36 519



Цитата(Eltex @ Apr 24 2007, 21:06) *
Добрый день.
Столкнулся со следующей проблемой:
Наше железо ранее обменивалось с компом по стандартному 232 порту. В дежурном режиме идет постоянный обмен короткими пакетами (8 байт). После перехода на СР2102 с стандартными драйверами виртуального порта оказалось что между посылкой/приемом пакета идут довольно большие паузы.(около 40мс) как следствие фактическая скорость обмена упала примерно в 50раз. На стандарном ком-порте пауз нет вообще. Изменения таймаутов не влияют.
С чем связана такая проблема? Возможно ее побороть или хотя бы немного уменьшить задержку между пакетами?
Пакеты посылаются в цикле , после ответа железки сразу посылается новый запрос, ни каких специальных пауз в программе нет, но чтение данных из порта стандартными АРІ длится гараздо больше установленных таймаутов с передачей тоже самое, на обычном ком-порте тоже ПО работает нормально.
Спасибо.

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


Посылаю Вам свой перевод AN232B-03 FTDI Прикрепленный файл  FTDI__________.zip ( 106.46 килобайт ) Кол-во скачиваний: 687
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016