p_stm 0 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Всем привет. Нужна программная реализация UART для STM32. Времени писать самим и разбираться, увы, нет. Поменять железо - тоже. Если кто-то готов быстро реализовать софтовый UART (или может быть уже есть готовая) - напишите в личку на каких условиях готовы поделиться. З.Ы. Аппноут AN4457 от ST попробовали - как-то криво работает, не удается заставить нормально работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Постановка задачи абсолютно некорректная. Она или может иметь множество возможных решений, или не иметь решений совсем. Зависит от скорости работы УАРТа и от того, что у вас есть в проекте: скорость и загруженность МК, свободные аппаратные ресурсы МК и т.д. Времени писать самим и разбираться, увы, нет. Вот это не получится 100% Интегрировать даже стороннее решение в проект все равно придется. А писать там нечего, все примитивно - интегрировать сложнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
p_stm 0 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Постановка задачи абсолютно некорректная. Она или может иметь множество возможных решений, или не иметь решений совсем. Зависит от скорости работы УАРТа и от того, что у вас есть в проекте: скорость и загруженность МК, свободные аппаратные ресурсы МК и т.д. Вот это не получится 100% Интегрировать даже стороннее решение в проект все равно придется. А писать там нечего, все примитивно - интегрировать сложнее. Да, про подробности забыл, извините. Режим работы - 115200N1. Проц STM32F405, частота - 168 МГц. Он общается еще с одним МК по другому UART, также работает по SPI с внешней флэш-памятью. Алгоритм работы примерно такой : получив пакет по программному UART, проц обрабатывает его, если необходимо обменивается данными с другим МК и/или пишет/читает данные из флэш, после чего готовит ответ и отправляет его по программному UART. Т.е. режим обмена полудуплексный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Аппаратные УАРТы куда дели? В Кубе удобно распределение ног прикидывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
p_stm 0 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Аппаратные УАРТы куда дели? В Кубе удобно распределение ног прикидывать. Ремап не получается, а чтобы использовать свободный UART - надо кидать проводки по плате, чего делать не хотелось бы.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Я бы кинул проводки. Небось, не последняя итерация схемы и платы. Обойдется дешевле, работать будет безупречно. С программным УАРТом надо выдерживать времена, по прерыванию от таймера, и приоритет ему дать высокий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 13 апреля, 2017 Опубликовано 13 апреля, 2017 (изменено) · Жалоба Ремап не получается, а чтобы использовать свободный UART - надо кидать проводки по плате, чего делать не хотелось бы.. если у вас полудуплекс - там вообще один пин нужен для аппаратного. а второй gpio Изменено 13 апреля, 2017 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Ремап не получается, а чтобы использовать свободный UART - надо кидать проводки по плате, чего делать не хотелось бы.. Частота МК высокая, загрузка вроде небольшая, так что можно сделать на таймере и (опционально) на внешнем прерывании. Но я тоже не стал бы мучиться и кинул бы проводки на аппаратный УАРТ. Избавит от возможных проблем, если есть другие важные высокоприоритетные прерывания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба А я бы делал на таймере и ПДП. У 4хх ПДП умеет из портов в память складывать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Складывать - это меньшая часть дела. Надо еще из битов байты слепить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
p_stm 0 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Я бы кинул проводки. Небось, не последняя итерация схемы и платы. Обойдется дешевле, работать будет безупречно. С программным УАРТом надо выдерживать времена, по прерыванию от таймера, и приоритет ему дать высокий. Итерация не последняя, совершенно верно, но когда будет следующая - пока непонятно, а проверить плату в деле надо уже сейчас.. Личка, оказывается, мне недоступна (видимо из-за того, что зарегистрировался сегодня) - если у кого-то есть предложения/мысли, пишите на почту : projects_stm()mail.ru Спасибо всем ответившим, надеюсь, что кто-то согласится помочь с реализацией (небезвозмездно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Я бы кинул проводки. Небось, не последняя итерация схемы и платы. Обойдется дешевле, работать будет безупречно. С программным УАРТом надо выдерживать времена, по прерыванию от таймера, и приоритет ему дать высокий. Ну если ресурсов вагон (процессорного времени + есть пара лишних DMA) - можно написать так, что разницы не заметишь: таймер на 115200*16 (можно *8) Гц дёргает DMA, который читает в память RX-пин и иногда в ISR разбираем принятый массив. С передачей ещё проще. Безупречность определяется скорее кривостью рук написателя Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Onkel 1 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Складывать - это меньшая часть дела. Надо еще из битов байты слепить. лепится. Я на atmega8 сразу два делал, на каждый нужно по таймеру и одному внешнему прерыванию. У меня 19200 работало без проблем, это на мелкой атмеге. Слепить из битов байты - не самое сложное, самое сложное- обработка возможных ошибок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 апреля, 2017 Опубликовано 13 апреля, 2017 · Жалоба Спасибо всем ответившим, надеюсь, что кто-то согласится помочь с реализацией (небезвозмездно). Как тут уже заметили, припаять проводки будет быстрее и надёжнее чем: изучать Ваш проект + писать код + отлаживать его + когда будете уже отлаживать Ваш код - сомневаться всё время в чьём именно коде баг. лепится. Я на atmega8 сразу два делал, на каждый нужно по таймеру и одному внешнему прерыванию. Никакая атмега не потянет прерывания частотой 115200*16 Гц, даже редкий Cortex такое потянет. А то что можно сколхозить на частоте 115200Гц и внешнем прерывании по перепаду RX - это не UART. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 14 апреля, 2017 Опубликовано 14 апреля, 2017 · Жалоба А то что можно сколхозить на частоте 115200Гц и внешнем прерывании по перепаду RX - это не UART. Чего не хватает для полноценности UART? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться