Перейти к содержанию
    

Com порт и нестандартные скорости?

Я так понял, что настраивть мой USB пролифик на PL2303 бесполезно. Можно ли это сделать на PC(ноут) с штатными портами, если нет, то существует ли какая нибудь возможность это сделать. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понял, что настраивть мой USB пролифик на PL2303 бесполезно.

Отчего такой диагноз?

Можно ли это сделать на PC(ноут) с штатными портами, если нет, то существует ли какая нибудь возможность это сделать.

А как у Вас "не получилось"? Настраиваются в пределах сетки которую может обеспечить делитель UART. Если Вы вдруг захотели 60000 получить, то получите вместо этого 115200, ибо возможны только

два варианта 115200 - делитель на 1 и следующая 576000 - делитель на 2. На более низких скоростях

вариантов естественно побольше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понял, что настраивть мой USB пролифик на PL2303 бесполезно. Можно ли это сделать на PC(ноут) с штатными портами, если нет, то существует ли какая нибудь возможность это сделать. Спасибо.

Вы напрасно списали PL2303 в утиль. Как оказалось, он умеет работать на любой скорости :cheers:

Обнаружено это было на телесистемах: Туплю не могу вывести формулу таблицы скоростей PL2303

Итоговая дока лежит тут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используя одну комуникационную программу для связи с авто заметил(при помощи прослушивалки ком порта), что программа пытаеться забить нестандартную скорость SETbaudrate 28 A0 - 10400(реально байты стоят наооборот), но тутже при чтении настройки порта GETbaudrate выдает 25 80 -9600 - это при помощи USB конвертора. Попробовал на PC с штатным портом и после SETbaudrate 28 A0 GETbaudrate выдает 28 A0. Отсюда сделал вывод что в первом случае настройки не принялись, а во втором да. И вероятно поэтому не смог законектиться с авто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрел на форуме телесистем, так и не понял что к чему. Пробовал записывать их примеры но дополнительные скорости нигде не узрел, да и скорости у них бешенные, а мне надо 10400. Объясните глупышу :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрел на форуме телесистем, так и не понял что к чему. Пробовал записывать их примеры но дополнительные скорости нигде не узрел, да и скорости у них бешенные, а мне надо 10400. Объясните глупышу :).

На телесистемах был рабочий процесс.

Читайте документ PL2303_extBaudrate.rtf - что там непонятно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могу скачать этот .rtf точнее скачивается вот этот файл PL2303_extBaudrate.rtf.zip. Разархивировать бесполезно - это не файл архива, убрал расширение zip, открыл как .rtf а том копия той страницы с которой собсно скачивал т.е. Рапида этого. Чтото делаю неправильно при скачивании и если не затруднит может скинете на email [email protected]. Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могу скачать этот .rtf точнее скачивается вот этот файл PL2303_extBaudrate.rtf.zip. Разархивировать бесполезно - это не файл архива, убрал расширение zip, открыл как .rtf а том копия той страницы с которой собсно скачивал т.е. Рапида этого. Чтото делаю неправильно при скачивании и если не затруднит может скинете на email [email protected]. Заранее спасибо.

Отправил.

С рапиды действительно неудобно скачивать, но у меня файл приходит нормальный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 _3m

Сделал вроде все правильно поставил прескалер 6 (4096) основной делитель 9. В реестр сделал запись ExtBaudrate ----10472,2147486729(т.е. 0x8000 0C09)-расчитал на 10400. Но скорость не схватывается в программе, пытается забить 10472 а при чтении настроек тутже выдает 9600.

Может версия дров нужна определенная или еще какие нюансы?Да кстати данная скорость где нибудь визуально отображается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 _3m

Сделал вроде все правильно поставил прескалер 6 (4096) основной делитель 9. В реестр сделал запись ExtBaudrate ----10472,2147486729(т.е. 0x8000 0C09)-расчитал на 10400. Но скорость не схватывается в программе, пытается забить 10472 а при чтении настроек тутже выдает 9600.

Может версия дров нужна определенная или еще какие нюансы?Да кстати данная скорость где нибудь визуально отображается?

0x8000 0c09 действительно не работает.

работающий делитель для 10400 - 0x8000 0890 , т.е в реестр записывается "10400,2147485840".

Я поэкспериментировал с разными делителсями, при прескалере 6 (4096) основной делитель не должен быть меньше 16 (0x10), если меньше - на выходе получается полный бред (видимо у PLL и делителей вообще крышу сносит). Кроме того, чем меньше величина основного делителя, тем больше джиттер на выходе UART.

Думаю, что стоит начинать с минимальных значений прескалера чтобы основной делитель был как можно больше.

Все это надо контролировать осциллографом, так как расчет - это математическая абстракция, а чип работает как-то хитро и точных данных о делителях PL2303 нигде нет.

 

После изменения в реестре обязательно нужно передернуть usb шнурок с pl2303 иначе изменения не вступят в силу.

Дополнительные скорости нигде не отображаются, но если скорость установилась, она возвращаются в структуре DCB возвращаемой при вызове GetCommState.

Значение скорости в ExtBaudrate должно точно совпадать со скоростью, которую устанавливает программа, например если в реестре определена дополнительная скорость 10400, а программа пытается установить 10472, то работать не будет - драйвер pl2303 "не увидит" 10472 и подставит вместо этого ближайшую стандартную - 9600.

 

У меня драйвер PL2303 версии 2.0.2.1 от 25.07.2005, ОС - XP sp2 eng.

Изменено пользователем _3m

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему то не работает и упорно ставит вместо 10400 скорость 9600. Поставил версию дров такуюже, выставил в реестре настройки(ExtBaudrate тип string 10400,2147485840), поставил сервис пак2,взял другую прогу, которая ставит скорость 10400 и все равно getbaudrate возвращает 9600. Испытывал на двух разных шнурах один USB-COM, другой от мобилки. А у Вас эта скорость нормально ставится? Может потестите на моей проге?

Изменено пользователем The Fresh

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не секрет откуда такая базовая частота 383385600Hz, извините за ламерский вопрос, но у меня на плате шнура на осциляторе 12 000 М написано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не секрет откуда такая базовая частота 383385600Hz, извините за ламерский вопрос, но у меня на плате шнура на осциляторе 12 000 М написано.

Там внутрях PLL. Кроме того это частота условная для расчетов. Не факт, что в чипе она имеется в чистом виде, скорее всего код перскалера управляет частотй PLL.

Давайте исходник проги которая не работает (тот его кусок, где устанавливается скорость) - только так можно разобраться.

У меня смена скорости производится так:

{
DCB* dcb;
/* инициализация DCB опущена */
dcb->BaudRate=10400;   // задаем скорость
SetCommState(port,dcb);
Sleep(20);
/* проверка */
{
  DCB* dcb2;
  dcb2=(DCB*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(DCB));
  dcb2->DCBlength=sizeof(DCB);
  GetCommState(port,dcb2);
  cout << "\ndcb2.BaudRate=" << dcb2->BaudRate;
  HeapFree(GetProcessHeap(),0,dcb2);
}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что прога не моя и откомпиленная. Если логически рассуждать, то в обычном PC эта скорость 10400 нормально устанавливается прогой , теб более программная реализация не отличается применяешь ли ты штатный порт или переходник. Мое мнение что дело в настройках и почему-то они не срабатывают. Я могу выслать этот софт весит он 400 килов. В кратце там вверху есть кнопочки с моделями контроллеров те которые на М начинаются и работают на этой злосчатной частоте. При переключении между блочками инициализируется порт и считывает парметры Getbaurates(это при помощи шпиона ком портов HDD serial port ) затем забивает setbaudrates. переключая блочки туда обратно у меня на Getbaudrates, т.е. предыдущая скорость всегда появляется 9600, а не 10400. На PC после первого SETBaudrates 10400 дальнейшие getbaudrates выдают 10400. Вышлю на мыло откуда пришел файл про настройки pl2303. Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...