|
Com порт и нестандартные скорости?, возможно ли поставить нест. скорость? |
|
|
|
Dec 27 2006, 23:54
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(The Fresh @ Dec 27 2006, 17:41)  Я так понял, что настраивть мой USB пролифик на PL2303 бесполезно. Отчего такой диагноз? Цитата Можно ли это сделать на PC(ноут) с штатными портами, если нет, то существует ли какая нибудь возможность это сделать. А как у Вас "не получилось"? Настраиваются в пределах сетки которую может обеспечить делитель UART. Если Вы вдруг захотели 60000 получить, то получите вместо этого 115200, ибо возможны только два варианта 115200 - делитель на 1 и следующая 576000 - делитель на 2. На более низких скоростях вариантов естественно побольше.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 28 2006, 01:58
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(The Fresh @ Dec 27 2006, 18:41)  Я так понял, что настраивть мой USB пролифик на PL2303 бесполезно. Можно ли это сделать на PC(ноут) с штатными портами, если нет, то существует ли какая нибудь возможность это сделать. Спасибо. Вы напрасно списали PL2303 в утиль. Как оказалось, он умеет работать на любой скорости Обнаружено это было на телесистемах: Туплю не могу вывести формулу таблицы скоростей PL2303Итоговая дока лежит тут
|
|
|
|
|
Dec 28 2006, 21:56
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(The Fresh @ Dec 28 2006, 20:05)  Смотрел на форуме телесистем, так и не понял что к чему. Пробовал записывать их примеры но дополнительные скорости нигде не узрел, да и скорости у них бешенные, а мне надо 10400. Объясните глупышу  . На телесистемах был рабочий процесс. Читайте документ PL2303_extBaudrate.rtf - что там непонятно?
|
|
|
|
|
Dec 29 2006, 17:18
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(The Fresh @ Dec 29 2006, 11:06)  Не могу скачать этот .rtf точнее скачивается вот этот файл PL2303_extBaudrate.rtf.zip. Разархивировать бесполезно - это не файл архива, убрал расширение zip, открыл как .rtf а том копия той страницы с которой собсно скачивал т.е. Рапида этого. Чтото делаю неправильно при скачивании и если не затруднит может скинете на email back1981@mail.ru. Заранее спасибо. Отправил. С рапиды действительно неудобно скачивать, но у меня файл приходит нормальный.
|
|
|
|
|
Dec 30 2006, 13:59
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(The Fresh @ Dec 30 2006, 10:53)  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 - Dec 30 2006, 14:09
|
|
|
|
|
Dec 30 2006, 19:46
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(The Fresh @ Dec 30 2006, 19:10)  Если не секрет откуда такая базовая частота 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); } }
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|