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

подстройка скорости UART

Доброго всем дня!

Столкнулись с ситуацией, когда устройство на МК (делали сами), подключённое к ПК через  преобразователь UART-USB одной модели, не видно при подключении через преобразователь UART-USB другой модели (скорость выбрана одинаковая)- приходится ручками перенастраивать скорость обмена.

Вопросов два:

1. Какие допуски на рассогласование установленных скоростей обмена для UART ? ( Я не нашёл- может плохо искал)

2. Можно ли сделать автоподстройку частоты обмена в прошивке (вроде стандартного модуля)?

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


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

1 час назад, NikP сказал:

Какие допуски на рассогласование установленных скоростей обмена для UART?

Не думаю, что вообще есть какие-то нормативные документы для времянок UART. В основном, все определяется количеством семплов на один передаваемый бит.

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

 

1 час назад, NikP сказал:

Можно ли сделать автоподстройку частоты обмена в прошивке (вроде стандартного модуля)?

А почему бы и нет? Только это все-таки некий алгоритм, работа которого предусматривает совместное творчество обеих сторон.

Например, узел A должен отправлять определенную последовательность символов узлу B до тех пор, пока не получит корректный ответ.

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


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

1 час назад, NikP сказал:

1. Какие допуски на рассогласование установленных скоростей обмена для UART ? ( Я не нашёл- может плохо искал)

Не более 4%

Вы бы хоть скорости написали, а то вдруг один на 5 Мбит работает, а другой только на 2 Мбит :)

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


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

2 часа назад, NikP сказал:

приходится ручками перенастраивать скорость обмена.

А можно с этого места поподробнее. Какими средствами перенастраивали и в каких пределах?

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


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

1 час назад, Arlleex сказал:

А почему бы и нет? Только это все-таки некий алгоритм, работа которого предусматривает совместное творчество обеих сторон.

Например, узел A должен отправлять определенную последовательность символов узлу B до тех пор, пока не получит корректный ответ.

Точно не помню, но кажется так. "узел A должен отправлять" посылку, в которой все биты идут тем же уровнем, что и стартовый. Это позволяет "узлу B" поймать посылку, даже если его тактовая гораздо ниже. Эту посылку "узел B" ловит и смотрит, что получил. Если в принятой посылке находятся биты другого уровня, то "узел B" должен пересчитать свою скорость...

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


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

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

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


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

2 часа назад, NikP сказал:

устройство на МК (делали сами)

Может и его UART тоже сами, т.е. программный? Вообще, для больших скоростей UART у МК бывает обгрызанный, с минимумом выборок — такому подстраиваться под гуляющую частоту попросту нечем.

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


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

3 hours ago, NikP said:

(делали сами)

Непонятно, что за устройство, в смысле на чём. Но, в старых микрочипах, например, особо не разгонишься - при соответствующем выборе константы скорости можно было уложиться в 0,16% погрешности, с учетом ухода частоты внутреннего генератора отклонение составляло до 2,6 % (если частота отклонялась на 100 кГц при 4 МГц). Если же изменить константу на 1, то отклонение уже составляло порядка 3,7%. Не припомню, чтоб были проблемы из-за этого, подключали к порту ПК через уровни и через USB-преобразователи.

Автоподстройка ... хз. Я б сделал через через уровни портов: 00 - расчетная скорость, 01 - +1 к значению скорости, 10 - -1 от значения скорости. Если есть свободные ноги или через кнопочку, жмём и крутим по кругу.

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


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

3 часа назад, NikP сказал:

Столкнулись с ситуацией, когда устройство на МК (делали сами), подключённое к ПК через  преобразователь UART-USB одной модели, не видно при подключении через преобразователь UART-USB другой модели (скорость выбрана одинаковая)- приходится ручками перенастраивать скорость обмена.

99.9% вероятности что ошибка кроется в проектировании "МК (делали сами)" или его firmware.

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


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

1. Скорость выбрана стандартная  - 256000

2. Для подключения использовались MOXA UPort1130 и UPort1450.

3. Подстраивали настройками  UPort1450 (с UPort1130 работало нормально - приём, передача шли без вопросов). Понизили для него скорость до 220000 - заработало.

4. Насчёт автоподстройки понятно, что это надо делать в прошивке МК. Варианты возможны разные, просто интересно: может это уже кто-то реализовывал.

 

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


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

37 минут назад, NikP сказал:

может это уже кто-то реализовывал

Так давно уже реализовали. Однако, у Вас скорость большая, поэтому надо аппаратную часть смотреть осциллографом. Может, витая пара плохо скручена. 

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


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

2 часа назад, iosifk сказал:

Точно не помню, но кажется так. "узел A должен отправлять" посылку, в которой все биты идут тем же уровнем, что и стартовый...

ИМХО, не обязательно. Можно перебором от минимальной до некоторой максимальной скорости из ряда стандартных отправлять в линию символ и ждать ответ.

Не ответили? Значит не та скорость. Ответили - пробуем отправить строку (например, "Device Connect"). Удаленный узел на это присылает, например, "Device Connected".

Прислал - значит скорость верна и сообщение сформировано намеренно, а не как-либо еще.

А нестандартные скорости в топку, ибо не универсально.

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


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

3 часа назад, NikP сказал:

2. Для подключения использовались MOXA UPort1130 и UPort1450.

Вы всех запутали. UPort1450 - это не UART-USB, а UART-RS232. Разница огромная. Так как многие драйвера высоковольтной части не тянут скорости выше 115 или 230 кбод на передачу - заваливают фронты.

Сталкивался с такой проблемой не раз на USB-RS232.

С преобразователями именно UART-USB такой проблемы нет: практически все работают до 1Мбод и выше.

Смотрите что за драйвер RS232 стоит в вашем девайсе и смотрите осциллограммы его TXD.

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


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

Спасибо wim   за ссылку. Это интересно.

Для конкретики:

1. UART  контроллера соединяется с ПК через SN175ALS180 (RS485). По даташиту SN175ALS180 должна работать до 25 Мбод.

2.  UPort1450 : 4-портовый преобразователь USB в RS-232/422/485 .

 

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


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

3 минуты назад, NikP сказал:

1. UART  контроллера соединяется с ПК через SN175ALS180 (RS485). По даташиту SN175ALS180 должна работать до 25 Мбод.

На 2-м десятке постов наконец-то выясняется, что речь идёт о RS-485. И всё надо начинать сначала... Да уж....  :russian_ru:

Вы и разработку так же ведёте - сперва что-то делаете-делаете, а потом только выясняете - а что же нужно было делать?  :biggrin:

PS: Проверяйте терминирующие резисторы.

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


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

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

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

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

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

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

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

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

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

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