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

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

Я.К., правильно Вам про открытый коллектор и подтяжку говорят.

емкость самого пина - 5 pF, максимальное сопротивление подтягивающего резистора- 55 kOhm.

 

тау = RC = 5e-12*55e3= 0.28 мкс

 

То есть это если Вы идеальным осциллографом на неподключенном ни к чему пине МК будете измерять.

Ну а у Вас наверняка сильно больше чем 5 pF (проводник на плате, подключенный приемник, осциллограф...)

 

Природу не обманешь, в плюс тоже нужно тянуть.

Нужно или припаивать внешний подтягивающий резистор, чтобы обеспечить Тау меньше шести длительностей (это чтобы 3*тау было раньше середины, в которой приемник USART хватает бит), или включать полный пуш-пул.

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


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

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

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


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

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

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

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

 

Ничуть не мутное. За этим решением такие небывалые возможности. Однажды я делал на 16 пике с 13 GPIO клавиатуру. Делал на трех разных: PIC16C711, PIC16C622 и еще какой-то похожий.

Подключали до 16 кнопок, до 16 светодиодов. Динамик -- один GPIO, два GPIO на связь, один на подсветку. И еще два инфракрасных обнаружителя движения подключали.

 

Все благодаря манипуляциям с направлением.

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


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

Ничуть не мутное. За этим решением такие небывалые возможности. Однажды я делал на 16 пике с 13 GPIO клавиатуру. Делал на трех разных: PIC16C711, PIC16C622 и еще какой-то похожий.

Подключали до 16 кнопок, до 16 светодиодов. Динамик -- один GPIO, два GPIO на связь, один на подсветку. И еще два инфракрасных обнаружителя движения подключали.

 

Все благодаря манипуляциям с направлением.

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

 

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

А срезы не заваливаются. Чудеса?

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


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

Все благодаря манипуляциям с направлением.

Обращаю внимание, что в STM32 регистр, отвечающий за направление вывода не имеет атомарного доступа.

Повальное увлечение переключением направления может решить задачу, но приведет к проблеме монопольного доступа.

Для модуля GPIO есть механизм фиксации настроек порта (GPIO locking mechanism), который защелкнет также и направление вывода.

Это еще один намек, что "тут так не делается - ищите другой путь".

 

the TX pin is always released when no data is transmitted. Thus, it acts as a standard

I/O in idle or in reception. It means that the I/O must be configured so that TX is

configured as floating input (or output high open-drain) when not driven by the USART.

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


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

Обращаю внимание, что в STM32 регистр, отвечающий за направление вывода не имеет атомарного доступа.

Повальное увлечение переключением направления может решить задачу, но приведет к проблеме монопольного доступа.

А bit-band?! Достаточно изменить записать один младший бит MODERy[1:0], и вход превращается в выход.

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


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

А bit-band?! Достаточно изменить записать один младший бит MODERy[1:0], и вход превращается в выход.

На F4 возможно. Но есть Cortex-M0, где нет bit-band вообще.

И есть F3, где bit-band в наличии, но GPIO не попадает регион памяти, для которого эта фича возможна.

Я раньше и сам использовал bit-band для GPIO, но на F3 обжегся, зарекся и теперь никому не советую :)

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


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

А срезы не заваливаются. Чудеса?

 

Дык с открытым коллектором всегда так.

 

Обращаю внимание, что в STM32 регистр, отвечающий за направление вывода не имеет атомарного доступа.

Повальное увлечение переключением направления может решить задачу, но приведет к проблеме монопольного доступа.

Для модуля GPIO есть механизм фиксации настроек порта (GPIO locking mechanism), который защелкнет также и направление вывода.

Это еще один намек, что "тут так не делается - ищите другой путь".

 

Да ясно что не так. Открытый коллектор не для таких скоростей.

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


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

Дык с открытым коллектором всегда так.

Да, правильно. Хотя такие сигналы можно получить и из-за емкости самой цепи.

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


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

в ф4, да и во всех других стм-ах есть би директ режим в уартах. я пользую этот режим. прекрасно работает по 1 проводу. Если надо именно ок. то тут уже всё что нужно было сказано.

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


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

Я.К., правильно Вам про открытый коллектор и подтяжку говорят.

емкость самого пина - 5 pF, максимальное сопротивление подтягивающего резистора- 55 kOhm.

 

тау = RC = 5e-12*55e3= 0.28 мкс

 

То есть это если Вы идеальным осциллографом на неподключенном ни к чему пине МК будете измерять.

Ну а у Вас наверняка сильно больше чем 5 pF (проводник на плате, подключенный приемник, осциллограф...)

 

Природу не обманешь, в плюс тоже нужно тянуть.

Нужно или припаивать внешний подтягивающий резистор, чтобы обеспечить Тау меньше шести длительностей (это чтобы 3*тау было раньше середины, в которой приемник USART хватает бит), или включать полный пуш-пул.

 

 

В общем и целом, я просто и без затей добавил внешний пулл-ап: подключил ножку PC12 к 5В через 1Kом. И фронты перестали валиться.

 

Теперь, правда, у меня другая беда, но это уже совсем другая история...

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


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

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

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

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

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

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

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

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

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

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