Jump to content

    
Sign in to follow this  
Я.К.

STM32F4, UART и заваленные фронты сигнала

Recommended Posts

Есть проблема: я хочу воспользоваться UART'ом на частоте 1МБод, но из-за заваленных фронтов сигнала ничего не выходит.

 

Что я делал?

- Есть у меня плата STM32F429-DISC0.

- Я создал болванку проекта с помощью STM32Cube,

- выбрал там 180 МГц частоты,

- включил UART5,

- выставил ему режим Single Wire (Half Duplex),

- да назначил 1000000 бод скорости,

- и даже скорость GPIO поставил HIGH.

 

В тестовой программке я просто и без затей посылаю 0x55 по этому самому UART'у.

Вроде бы, ломаться тут нечему, но не тут-то было: фронты UART-сигнала завалены просто в хлам: длительность фронта как раз и составляет примерно 1 мкс.

 

post-42205-1455901342_thumb.png

 

Имею спросить: как бы мне это забороть?

 

P.S. Тестовый проект прилагается: TestUART.rar

 

P.P.S. Cнизить скорость UART'а, не могу: то устройство, с которым мне надо общаться, работает именно на 1МБод.

Share this post


Link to post
Share on other sites
Есть проблема: я хочу воспользоваться UART'ом на частоте 1МБод, но из-за заваленных фронтов сигнала ничего не выходит.

А если убрать UART и портом просто управлять напрямую программно, то какие будут фронты? И какой стандарт порта и какая нагрузочная способность?

 

Share this post


Link to post
Share on other sites
Нашел: GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;

Поставьте резисторы подтягивающие.

 

В смысле, достать паяльник и аппаратно припаять 1 кОм, который будет подтягивать к логической единице? Или вы имеете в виду, что-то более человечное??

Share this post


Link to post
Share on other sites
Вы знаете, я сегодня пробовал переключиться на USART1, но картина от этого не менялась.

на первом он и висит, только я не помню, на каком пине

если у вас на разных пинах кажет одно и то же, то это либо нагрузка - отключайте, либо осциллограф

 

Share this post


Link to post
Share on other sites
В смысле, достать паяльник и аппаратно припаять 1 кОм, который будет подтягивать к логической единице? Или вы имеете в виду, что-то более человечное??

Или настраивайте как push-pull.

Вам открытый коллектор нужен вообще?

Share this post


Link to post
Share on other sites
Или настраивайте как push-pull.

Вам открытый коллектор нужен вообще?

 

Боюсь, именно он-то мне и нужен: у меня полудуплексный UART (т.е. один и тот же порт и пишет с МК на периферийное устройство, и потом читает его ответ).

 

GPIO_OType_PP

 

В HAL-драйвере это GPIO_MODE_OUTPUT_PP?

Share this post


Link to post
Share on other sites
Боюсь, именно он-то мне и нужен: у меня полудуплексный UART (т.е. один и тот же порт и пишет с МК на периферийное устройство, и потом читает его ответ).

Не одновременно же. Делайте PP выход. Передали, и на вход переключайтесь.

Там встроенные PU резисторы немалые, а емкость у линии связи и входов и выходов имеется.

Share this post


Link to post
Share on other sites

Ну, или скорость понижать многократно.

Кста, при работе в полудуплексном режиме UART-у нужно как-то сообщать о намерении передавать/получать?

Дергать направление GPIO - какое-то мутное решение.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this