Я.К. 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Есть проблема: я хочу воспользоваться UART'ом на частоте 1МБод, но из-за заваленных фронтов сигнала ничего не выходит. Что я делал? - Есть у меня плата STM32F429-DISC0. - Я создал болванку проекта с помощью STM32Cube, - выбрал там 180 МГц частоты, - включил UART5, - выставил ему режим Single Wire (Half Duplex), - да назначил 1000000 бод скорости, - и даже скорость GPIO поставил HIGH. В тестовой программке я просто и без затей посылаю 0x55 по этому самому UART'у. Вроде бы, ломаться тут нечему, но не тут-то было: фронты UART-сигнала завалены просто в хлам: длительность фронта как раз и составляет примерно 1 мкс. Имею спросить: как бы мне это забороть? P.S. Тестовый проект прилагается: TestUART.rar P.P.S. Cнизить скорость UART'а, не могу: то устройство, с которым мне надо общаться, работает именно на 1МБод. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба А на каких пинах висят RXD и TXD UART5? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Я.К. 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба А на каких пинах висят RXD и TXD UART5? Режим полудуплексный, используется только пин PC12. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Нашел: GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; Поставьте резисторы подтягивающие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба на каком то уарте висит конденсатор от юсб Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Я.К. 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба на каком то уарте висит конденсатор от юсб Вы знаете, я сегодня пробовал переключиться на USART1, но картина от этого не менялась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Есть проблема: я хочу воспользоваться UART'ом на частоте 1МБод, но из-за заваленных фронтов сигнала ничего не выходит. А если убрать UART и портом просто управлять напрямую программно, то какие будут фронты? И какой стандарт порта и какая нагрузочная способность? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Я.К. 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Нашел: GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; Поставьте резисторы подтягивающие. В смысле, достать паяльник и аппаратно припаять 1 кОм, который будет подтягивать к логической единице? Или вы имеете в виду, что-то более человечное?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Вы знаете, я сегодня пробовал переключиться на USART1, но картина от этого не менялась. на первом он и висит, только я не помню, на каком пине если у вас на разных пинах кажет одно и то же, то это либо нагрузка - отключайте, либо осциллограф Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба В смысле, достать паяльник и аппаратно припаять 1 кОм, который будет подтягивать к логической единице? Или вы имеете в виду, что-то более человечное?? Или настраивайте как push-pull. Вам открытый коллектор нужен вообще? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба человечное GPIO_OType_PP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Я.К. 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Или настраивайте как push-pull. Вам открытый коллектор нужен вообще? Боюсь, именно он-то мне и нужен: у меня полудуплексный UART (т.е. один и тот же порт и пишет с МК на периферийное устройство, и потом читает его ответ). GPIO_OType_PP В HAL-драйвере это GPIO_MODE_OUTPUT_PP? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба не знаю, в хел - без меня Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 20 февраля, 2016 Опубликовано 20 февраля, 2016 · Жалоба Боюсь, именно он-то мне и нужен: у меня полудуплексный UART (т.е. один и тот же порт и пишет с МК на периферийное устройство, и потом читает его ответ). Не одновременно же. Делайте PP выход. Передали, и на вход переключайтесь. Там встроенные PU резисторы немалые, а емкость у линии связи и входов и выходов имеется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 20 февраля, 2016 Опубликовано 20 февраля, 2016 · Жалоба Ну, или скорость понижать многократно. Кста, при работе в полудуплексном режиме UART-у нужно как-то сообщать о намерении передавать/получать? Дергать направление GPIO - какое-то мутное решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться