LinuxForum.Fans
Тема

Задать нестандартную скорость COM порта

Автор: aalistrat 9 сообщений 2940 просмотров
#351068

Всем здравствуйте.
Возникла у меня необходимость задать нестандартную скорость работы COM-порта в программе, написанной на языке Си.
Подскажите каким образом можно это осуществить?

#351109

Согласно "man termios" и описанию в нём функции cfsetospeed,
скорость должна быть одной из предопределённых. Устанавливать
произвольную скорость нельзя, т.к. это не поддерживается аппаратно
и произойдёт рассинхронизация приёмника и предатчика из-за
ошибки отработки интервалов.

Если порт реализован программно, на PCI-плате и работает через
специальный драйвер, то не знаю, зависит от драйвера. Но сомневаюсь,
чтобы там кто-нибудь позаботился о такой возможности.

Пётр.

#351443

Я работаю с платой, у которой скорость работы COM 56000 бод, плата и комп связаны через переходник USB-COM на pl2303.
Мне все подойдет - любой способ - опробую, о результатах отпишусь.

#351464

Насколько я знаю, установить нестандартную скорость СОМ со стороны компьютера нельзя. На чём собрана ваша плата, которая связана с компом? Можно ли в ней скорректировать прошивку, чтобы установить стандартную скорость СОМ-порта (например 57600 бод)?

#352535

Плата собрана на сигнальном процессоре MSP430, ну и MAX-ы стоят для преобразования уровней и АЦП.
С перепрошивкой действительно там проблемы, поэтому я и хотел решить проблему посредством настройки порта компьютера.

#353351

MSP430 --- это не сигнальный процессор. TexasInstrument выпускает сигнальный процессор, который называется TMS320. В чём проблемы с перепрошивкой? Вероятно нет исходника?

Если вкратце, то для MSP430 скорость UART задаётся в регистрах UCA0BR0 и UCA0BR1. Вместо 0 --- номер модуля USCI. Значения этих регистров рассчитываются исходя из частоты тактового генератора и скорости UART (см. даташит на ваш MSP430).

#353387

Проблема в нестандартном кварце, которым тактируется MSP, из-за него я не могу получить стандартную скорость UART.
И раз уж пошел о нём разговор, есть ли у него внутренний тактовый генератор, и хватит ли его стабильности для нормальной работы UART?

P.S.: Плату на MSP430 - на я делал, поэтому отдельное спасибо за пояснения по поводу MSP, так как я в нем не шарю. Я не разбирался с даташитом, но раз уж это походу единственный вариант - буду)

#353414
aalistrat написал:
Проблема в нестандартном кварце, которым тактируется MSP, из-за него я не могу получить стандартную скорость UART.

Поскольку там есть два регистра для настройки скорости порта,
то вы сможете получить если не в точности стандартную, то достаточно близкую.
У процессоров PIC для этого тоже есть два регистра и можно получить
стандартную скорость с пренбрежимо малой ошибкой.

Пётр.

#353577

Внутренний тактовый генератор у MSP430 есть, его частоту можно установить 1 МГц или 16 МГц, но он не термостабилен. То есть при отклонении температуры от комнатной его частота может уйти. Менять кварц на внутренний генератор не стоит. Константы, которые нужно записывать в регистры UCA0BR0 и UCA0BR1 для стандартных скоростей для внутреннего тактового генератора есть в даташите.

Какая у вас на плате частота кварца? При работе от нестандартного кварца можно использовать низкие скорости UART (например 9600) для низкой скорости UART ошибка установки скорости при нестандартной частоте кварца заметно ниже. Для них нужно пересчитать константы по формулам из даташита.

Ещё нужно проверить, что UART тактируется именно от кварца.

Войдите или зарегистрируйтесь, чтобы ответить.