Можем ли мы рассчитать скорость передачи данных RS232 по выходному сигналу TX?

Можем ли мы рассчитать скорость передачи или скорость передачи данных RS232 по выходному сигналу X?

На изображении ниже показан выходной сигнал связи RS232. Я сделал этот снимок с 0xaa, и период времени между максимумами составляет 100.us.

Я слышал, что частота внешнего генератора составляет 8 МГц. Можем ли мы рассчитать скорость передачи из этого?

Осциллограмма, показывающая сигнал RS232

Я думаю, что ИП должен это знать F=1/T.
Я ожидал, что это будет вопрос об определении скорости передачи данных без знания данных для облегчения настройки, но это? @ЕвгенийШ. более чем правильно - знание определения частоты является базовым знанием при работе с электроникой.
Подсказка: если вы запутались в чем-то подобном, сделайте так, чтобы ваша машина для разработки отправила вам лучшее предположение о том, что, по вашему мнению, вы видите, и посмотрите, как это выглядит в сравнении. Если они неверны, уточните свою догадку, чтобы приблизить их.
Sigrok с открытым исходным кодом, верно? Как, по мнению людей, работает «угадывание частоты»?
Когда вы измеряете ширину импульса с помощью осциллографа, «частота внешнего генератора» на самом деле не влияет на него, не так ли?

Ответы (4)

Похоже, у вас есть примерно 2,4 бита на деление, что составляет 250 мкс. Таким образом, время каждого бита составляет 104 мкс. Инвертирование дает 9,6 кбод. Это одна из стандартных скоростей передачи данных, так что это звучит вполне правдоподобно.

Ваш прицел показывает время в 100 мю с . Это может быть либо установка вами курсоров, либо автоматическое использование функции измерения в осциллографе. Вы не говорите. В любом случае, я согласен с комментарием Олина о том, что это близко к 9600 бит/с, что является обычной скоростью передачи данных для связи RS-232.


Однако ваш собственный комментарий о внешней тактовой частоте, если он верен, утверждает, что точные 9600 бит/с маловероятны. 8 МГц не делится равномерно до 9600 бит/с.

Некоторые другие мысли:

  1. Если это действительно 100 мю с разрядность, то они превысили ± 2 % допустимый разброс точности допускается для общей скорости 9600 бит/с. (Если вам нужно увидеть расчеты и мысли, лежащие в основе этой цифры, см. эту страницу Максима .) Если точность прицела, которую мы принимаем, является лишь приблизительной, то она не может превышать требования к точности. В любом случае, это хорошая идея, что вы знаете, что они существуют.
  2. Этот сигнал явно не использует напряжение RS-232, но вместо этого, возможно, ~ 3,5 В сигнализация.
  3. Этот сигнал использует HI для MARK (в RS-232 MARK является отрицательным напряжением), поэтому это должен быть выход логического уровня от микро, а не сигнализация RS-232.

Если вы уберете требуемый бит START и минимальное однобитовое время STOP, это означает, что для данных, вероятно, останется как минимум семь оставшихся битовых времен:

введите описание изображения здесь

Вышеупомянутое будет интерпретировано как 0x2A независимо от порядка байтов, если я обращаю внимание.

Однако это будет диаграмма для восьми битов данных:

введите описание изображения здесь

В этом случае интерпретация будет либо 0xAA, либо 0x55, в зависимости от характера потока. Таким образом, это может представлять ваш 0xAA (с прямым порядком байтов, который, как мне кажется, встречается чаще).

Как видите, передатчик и приемник должны априори согласовать количество битов данных и их порядок следования байтов.

Результаты области могут быть интерпретированы как еще более длинные последовательные размеры слов. Я видел их раньше (чаще всего 9, так как некоторые ИС поддерживали это, но я даже видел 10 используемых раньше).

Без соглашения трудно быть уверенным.


В качестве боковой панели:

Я помню дни, когда телетайпы переходили с 5 бит на 6 бит (DTE начала 1960-х) как раз в то время, когда в 1960 году был создан RS-232, так как у моего отца был такой телетайп дома, в домашнем офисе. Какое-то время действительно существовала шестибитная связь RS-232.

Кодировка ASCII широко использовалась в конце 1960-х и начале 1970-х годов и представляет собой 7-битное кодирование. Для передачи данных RS-232 было очень часто использовать 7 бит данных.

Позже, когда коммуникационные ИС и микроконтроллеры стали широко использоваться, а 8-битные регистры стали широко доступны, RS-232 часто расширяли для передачи/приема 8 бит за раз.

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

Я думаю, что данные также могут быть двумя байтами 0x98 0xE6 на 19 200, разбитыми как s00011001Ss01100111S [s=start S=stop]. Некоторые символы, такие как «A» [0x41], генерируют битовые шаблоны, которые не могут быть созданы ни при какой другой скорости передачи данных (вероятно, поэтому Хейс выбрал «A» в качестве первого символа для последовательности автообучения), но приведенный выше шаблон представлял бы действительный двух- последовательность байтов на скорости 19 200 бод.
Раньше я был счастливым обладателем механического телетайпа. Он был полностью механическим и работал на скорости 60 бод. Ну полностью механический, если не считать соленоидов и синхронного двигателя. Стартовый бит отключил сцепление, и селекторное колесо начало вращаться, и все происходило последовательно после установки печатающей головки и удара молотком. Было так здорово смотреть. Пришлось оставить его в Великобритании, когда я приехал в Канаду. Он был слишком тяжелым для перевозки.
Почти уверен, что это одна из основных причин, по которой у rs232 были такие экстремальные напряжения и токи привода. Между ними не было ничего, только кабель RS232 --> соленоид.
@supercat Да. Его также можно разделить по времени. Однако эти вариации начинают доходить до того, что требуется книга. Но ваша точка зрения, безусловно, принята.
@Trevor У меня никогда не было такого, но я часто использовал KSR-35 (очень впечатляющую машину с механическим кулачком) и более поздние, гораздо более дешевые устройства ASR-33 / KSR-33. Тот, который был у моего отца в нашем доме (до того, как он погиб в дорожно-транспортном происшествии), не был ни одним из них, а был более ранним 6-битным кодовым устройством, похожим по размеру на ASR-33.
@jonk: я думаю, что 9600 и 19200 - единственные две возможности. Если бы каждый импульс был 3-битным, первый байт имел бы ошибку кадрирования при использовании 8-битных данных, а второй байт имел бы ошибку кадрирования при использовании 5-, 6- или 7-битных данных. Если бы каждый импульс составлял 4 бита, первый байт должен был бы иметь не менее 7 битов данных, а второй — 6 или меньше.
@supercat Думаю, я не думаю об ограничении кадра. Технически количество битов данных может быть произвольно большим. На практике я видел 10 бит данных (всего 12, в рамке), хотя я видел 9 намного больше, поскольку были ИС для лучшей поддержки. Но я бы не отказался от того, чтобы кто-то сделал больше битов данных.
8 МГц не делится точно до 9600 Гц, но делится на 833, что дает 9603,8 Гц, что находится в пределах допуска 2%. Это дает ширину в битах 104 мкс; Я не уверен, что мои глаза могут отличить это от 100 мкс на снимке экрана ОП!
@OlinLathrop, я не знаю всего о 7-битах, но прямо сейчас у меня на столе есть устройство, настроенное на 7 бит данных + 1 бит четности.
@psmears Я думаю, вы сделали хорошее замечание, чтобы добавить. Вопрос точности также включает в себя точность измерительного прибора (или ее отсутствие).
Фактически, он, вероятно, делится на 104 (против 104,16 бар), чтобы получить 8-кратную передискретизацию 9600 бод, или, что более вероятно, на 52 (против 52,083 бар), чтобы получить 16-кратную передискретизацию. Хотя вы можете построить передатчик без передискретизации, создать приемник сложно.
@Trevor_G: Нет, RS-232 никогда не использовался для прямого управления соленоидами. Именно для этого был предназначен интерфейс токовой петли 60 мА.
@psmears: Более вероятно, что 8 МГц, деленные на 52, дают 153,6 кГц, что в 16 раз превышает номинальную скорость 9600 бод, тактовую частоту, которая требуется большинству UART MCU. Фактическая скорость в конечном итоге составляет 9615,4 бод, что всего на 0,16% выше.
@DaveTweed Согласен. Не может быть, чтобы RS-232 действительно приводил в действие соленоиды. Поработав с RS-232 и спроектировав несколько схем как для его передачи, так и для приема, спецификации RS-232 просто не позволяли этого. Я думаю, что ресивер должен был представить от 3k до 7k в качестве входного импеданса, например. Передатчик ожидает нагрузку в этом диапазоне. Есть и другие характеристики, которые добавляют больше гвоздей в этот гроб.

Если это для микроконтроллера, невозможно определить скорость передачи по его генератору, но кварц 8 МГц определенно способен создать 9600 бод.

Можете ли вы измерить и сказать мне точное время от первого минимума до последнего максимума? - Первое место кажется мне немного неправильным. Мне кажется, вы используете триггер, можете ли вы переместить его немного выше, потому что, если это триггер по фронту и он сидит на пиках, у осциллографа могут возникнуть проблемы с запуском.

Если вы сэмплируете сигнал и измеряете наименьшую встречающуюся ширину, вычисление скорости становится тривиальным. Рано или поздно за стартовым битом должна следовать «1».

Иногда, но не всегда возможно определить скорость передачи по трассировке осциллографа.

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

Предполагая 8-битные данные и отсутствие четности, ваш сигнал может представлять один байт с битовым периодом ~ 100 нс, но он также может представлять два байта с битовым периодом около 50 нс.