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

Нетривиальная проблема с UART

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

1 записывали сюда? И режим семплирования x16 до кучи.

Это надо уточнить. а режим семплирования где задается?

Из какого документа цитата?

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


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

USART Гигидивайса фиксирует три состояния

Вот выдержка из руководства пользователя:

By default, the receiver gets three samples to evaluate the value of a frame bit. If the
oversampling 8 mode is enabled, the 3rd, 4th and 5th samples are used, while in the
oversampling 16 mode, the 7th, 8th, and 9th samples are used. If there are two or more
samples of a frame bit is 0, the frame bit is confirmed as a 0, else 1. If the three samples of
any bit of a frame are not the same, whatever it is a start bit, data bit, parity bit or stop bit, a
noisy error (NERR) status will be generated for the frame. An interrupt is generated, If the
receive DMA is enabled and the ERRIE bit in USART_CTL2 register is set. If the OSB bit in
USART_CTL2 register is set, the receiver get only one sample to evaluate a bit value. In this
situation, no noisy error will be detected.

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


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

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

Это надо уточнить. а режим семплирования где задается?

Из какого документа цитата?

Из User Manual на GD32F4xx, разумеется.

Режим задается в регистрах конфигурации UART. От него еще зависит предделитель, чтобы попасть в ту же скорость 9600, будьте внимательны.

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


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

Всем спасибо. Топикстартер пошел уточнять какие из указанных вариантов уже были проверены и проверять остальные.

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


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

Вот нарисовал диаграмму с +/- одинаковым процентным соотношением "затягивания" времени включения/выключения оптрона передатчика в Шкафе.

image.thumb.png.41a5d0afdfbd0fd9ce26706144e751f4.png

Если частота тактирования UART не плавает (ни в передатчике Шкафа, ни в Вашем Баян-2), то прием обязан работать корректно.

А если нет - то только из-за небольшого разбега в скорости 9600, которую нужно будет всего лишь подстроить вверх или вниз.

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


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

29 минут назад, Freibier сказал:

какой oversampling у STM и у GD?

Ещё в самом начале темы писал про него. Но танкисты до сих пор не доехали.  :sarcastic:

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


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

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

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


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

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

GD32F407

И этот бабаян работает от внутреннего генератора ?

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


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

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

нарисовал диаграмму

Это не то, нужен худший случай:

bad-731.gif.7b79a992bcd1a3b9d06afe9df79c864b.gif

Т.е. частота x4, и задержка в почти целый её период с определением старта, ну и далее видно, что последующие выборки будут по хвостам битов.

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

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


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

55 минут назад, Vasily_ сказал:

И этот бабаян работает от внутреннего генератора ?

от внешнего резонатора. Частота на нем стабильна. В баяне есть интерфейсы USB, Ethernt и они работают без сбоев.

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

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

Какой смысл в осциллограмме если импульсы сформированные на стороне 3,3в (или 5В не знаю как там в Шкафу и туда я залезть не могу) проходят через трансивер RS485? Т.е. фронты там уже в искаженном виде и восстановить их значение (которое было до трансивера) невозможно. Повторюсь, лог с логического анализатора я снял после трансивера RS485 установленного в Баяне2. Получается в этом месте сигнал дважды прошел через преобразователь RS485/UART.

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


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

34 минуты назад, Plain сказал:

Т.е. частота x4, и задержка в почти целый её период с определением старта, ну и далее видно, что последующие выборки будут по хвостам битов.

В этих МК нет режима x4, там либо x8, либо x16. Кстати, я вообще даже не слыхал об x4 хоть где-то:smile:

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


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

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

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

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

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

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

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

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

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

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