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

Нужна программная реализация UART для STM32.

Всем привет.

Нужна программная реализация UART для STM32. Времени писать самим и разбираться, увы, нет. Поменять железо - тоже.

 

Если кто-то готов быстро реализовать софтовый UART (или может быть уже есть готовая) - напишите в личку на каких условиях готовы поделиться.

 

З.Ы. Аппноут AN4457 от ST попробовали - как-то криво работает, не удается заставить нормально работать.

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


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

Постановка задачи абсолютно некорректная. Она или может иметь множество возможных решений, или не иметь решений совсем.

Зависит от скорости работы УАРТа и от того, что у вас есть в проекте: скорость и загруженность МК, свободные аппаратные ресурсы МК и т.д.

 

Времени писать самим и разбираться, увы, нет.

Вот это не получится 100%

Интегрировать даже стороннее решение в проект все равно придется.

А писать там нечего, все примитивно - интегрировать сложнее.

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


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

Постановка задачи абсолютно некорректная. Она или может иметь множество возможных решений, или не иметь решений совсем.

Зависит от скорости работы УАРТа и от того, что у вас есть в проекте: скорость и загруженность МК, свободные аппаратные ресурсы МК и т.д.

 

 

Вот это не получится 100%

Интегрировать даже стороннее решение в проект все равно придется.

А писать там нечего, все примитивно - интегрировать сложнее.

 

 

Да, про подробности забыл, извините. Режим работы - 115200N1.

Проц STM32F405, частота - 168 МГц. Он общается еще с одним МК по другому UART, также работает по SPI с внешней флэш-памятью.

Алгоритм работы примерно такой : получив пакет по программному UART, проц обрабатывает его, если необходимо обменивается данными с другим МК и/или пишет/читает данные из флэш, после чего готовит ответ и отправляет его по программному UART. Т.е. режим обмена полудуплексный.

 

 

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


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

Аппаратные УАРТы куда дели? В Кубе удобно распределение ног прикидывать.

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


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

Аппаратные УАРТы куда дели? В Кубе удобно распределение ног прикидывать.

 

 

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

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


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

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

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


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

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

если у вас полудуплекс - там вообще один пин нужен для аппаратного. а второй gpio

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

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


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

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

Частота МК высокая, загрузка вроде небольшая, так что можно сделать на таймере и (опционально) на внешнем прерывании.

Но я тоже не стал бы мучиться и кинул бы проводки на аппаратный УАРТ. Избавит от возможных проблем, если есть другие важные высокоприоритетные прерывания.

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


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

А я бы делал на таймере и ПДП. У 4хх ПДП умеет из портов в память складывать?

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


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

Складывать - это меньшая часть дела. Надо еще из битов байты слепить.

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


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

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

 

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

 

Личка, оказывается, мне недоступна (видимо из-за того, что зарегистрировался сегодня) - если у кого-то есть предложения/мысли, пишите на почту : projects_stm()mail.ru

 

Спасибо всем ответившим, надеюсь, что кто-то согласится помочь с реализацией (небезвозмездно).

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


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

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

Ну если ресурсов вагон (процессорного времени + есть пара лишних DMA) - можно написать так, что разницы не заметишь:

таймер на 115200*16 (можно *8) Гц дёргает DMA, который читает в память RX-пин и иногда в ISR разбираем принятый массив. С передачей ещё проще.

Безупречность определяется скорее кривостью рук написателя :biggrin:

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


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

Складывать - это меньшая часть дела. Надо еще из битов байты слепить.

лепится. Я на atmega8 сразу два делал, на каждый нужно по таймеру и одному внешнему прерыванию. У меня 19200 работало без проблем, это на мелкой атмеге. Слепить из битов байты - не самое сложное, самое сложное- обработка возможных ошибок.

 

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


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

Спасибо всем ответившим, надеюсь, что кто-то согласится помочь с реализацией (небезвозмездно).

Как тут уже заметили, припаять проводки будет быстрее и надёжнее чем: изучать Ваш проект + писать код + отлаживать его + когда будете уже отлаживать Ваш код - сомневаться всё время в чьём именно коде баг.

 

лепится. Я на atmega8 сразу два делал, на каждый нужно по таймеру и одному внешнему прерыванию.

Никакая атмега не потянет прерывания частотой 115200*16 Гц, даже редкий Cortex такое потянет.

А то что можно сколхозить на частоте 115200Гц и внешнем прерывании по перепаду RX - это не UART.

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


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

А то что можно сколхозить на частоте 115200Гц и внешнем прерывании по перепаду RX - это не UART.

Чего не хватает для полноценности UART?

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


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

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

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

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

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

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

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

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

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

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