189 похожих чатов

Всем доброе утро кто-то работал с usart+dma, когда длина пакета

изначально не известна ?
Использовали флаг USART Idle и таймер для таймаума, если первого недостаточно?

33 ответов

4 просмотра

Вы на прием хотите сделать? Хал или лл используется? И серия мк какая? F4, F7, Я idle прерывание установил, описал обработчик и запустил прием функцией с дма +idle. В хал посмотрите ее реализацию, если у вас лл.

Евгений- Автор вопроса
Alexander Troshin
Вы на прием хотите сделать? Хал или лл используетс...

да на прием Хороший пример нашел на гитхабе, изучаю

дма в кольцевом режиме, и задача опроса изредка strchr искала начало строки + проверка конца, но там потеря пару посылок не важна была

Евгений- Автор вопроса
Ник Д
дма в кольцевом режиме, и задача опроса изредка s...

у меня скорость низкая а вот терять пакеты незя

Евгений
у меня скорость низкая а вот терять пакеты незя

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

У L4 есть флажок таймаута по приёму. Этого хватало.

Евгений- Автор вопроса
Alexander
У L4 есть флажок таймаута по приёму. Этого хватало...

у меня на столе сейчас только f1 для всех тестов, я бы тож хотел флажок по приему, половину проблем бы закрыл

Евгений- Автор вопроса
jon pedro
А у ст нельзя генерировать отправку по dma по собы...

у ф1 там флаг только, что линия пустая и конец посылки Но там именно длину сообщения посчитать сложнее

Евгений
у ф1 там флаг только, что линия пустая и конец пос...

Если ресурсы свободные есть, то можно с определённой частотой брать 1 элемент из фифы и обработчик на машине состояний посылок. Получается очень легковестно. У меня так модбас реализован, цикл работы становится очень мелким, что в итоге не особо сказывается на работе программы, т.к обработчик совсем с парой операций. Это как простой вариант

Евгений- Автор вопроса
Alexander
Тогда костылить с доп, таймером.

хмм, ну вот я не знаю надо ли оно мне у меня 100 мс минимум между посылками есть, там по идее IDLE должен успеть А костылить как? таймер от дма

Евгений- Автор вопроса
jon pedro
Если ресурсы свободные есть, то можно с определённ...

я могу вообще все через прерывания Но хочу сделать красиво через дма

Евгений
хмм, ну вот я не знаю надо ли оно мне у меня 100 м...

Технически ты можешь сделать таймер, который в прерывании мониторит счетчик DMA.

Евгений- Автор вопроса
Alexander
Технически ты можешь сделать таймер, который в пре...

надо попробовать по Idle, мб там больше и не понадобится скорость 9600 и 100 мс что ли между пакетом точно есть

Евгений
да на прием Хороший пример нашел на гитхабе, изуч...

Киньте ссылочку на пример. Задача довольно распространенгая

Евгений- Автор вопроса
Arm Jedi
Киньте ссылочку на пример. Задача довольно распрос...

https://github.com/MaJerle/stm32-usart-uart-dma-rx-tx https://github.com/r2axz/bluepill-serial-monster

Евгений- Автор вопроса
Arm Jedi
Киньте ссылочку на пример. Задача довольно распрос...

1й вариант разжеванный сильно и классно

Евгений
https://github.com/MaJerle/stm32-usart-uart-dma-rx...

У него забавный сайт с примерами работы периферии был.

Евгений- Автор вопроса
Alexander
У него забавный сайт с примерами работы периферии ...

ну вот вроде у него то что мне надо, но таймер на ф1 не прикручен Так мне вообще сказали, есть у кого это все дело настраивается (таймаут) . У меня на H7 ножки не припаяны, сцуко

Евгений
ну вот вроде у него то что мне надо, но таймер на ...

Да, на старших процах у UART вроде есть аппаратный расчет таймаута.

Евгений- Автор вопроса
Alexander
Да, на старших процах у UART вроде есть аппаратный...

на f0 он тож есть отладка просто на ф1 сейчас доступна только а надо проверить кое-что дальше уже на нормальном камне без костылей обыграю

Евгений
ну вот вроде у него то что мне надо, но таймер на ...

Там вроде как если какое-то время нет символов. Я когда-то делал модифицировал hal обработчик не на количество символов а на приём 10 13 последовательности. Но это было не с дма а с it

Евгений- Автор вопроса
Alexander
Ок, удачно запилить.

глупый вопрос Если мне надо узнать количество байт принятых просто смотреть регистр счетчика байт DMA?

Alexander
Да, на старших процах у UART вроде есть аппаратный...

Usart receiver timeout RTOR, отлична штука, скорее ее нет на более древних только

Евгений- Автор вопроса
Arm Jedi
Есть ещё прерывание по половине приема

да но есть несколько вариантов, что до половины приема не дошли, что половину приема перешли, а данные пошли намного раньше позже

Евгений- Автор вопроса
Arm Jedi
Только счётчик тогда

как я себе представляю запомнил начальный, запомнил конечный высчитал количество байт принятых по дма Вот

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

Можно так что бы постоянно не опрашивать счётчик по таймеру его посматривать

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

После каждого таймаута либо сбрасывай счетчик DMA либо запоминай начальное значение.

Похожие вопросы

Обсуждают сегодня

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Только такой if ($modx->event->name == 'OnBeforeCartItemAdding') { $meta = $params['item']['meta']; $lang = $modx->getConfig('_lang'); // проверяем, задана ли опция i...
Multi Web
1
Всем привет. Испытываю проблемы в работе БД, а именно огромного роста логов, такого характера: 024-05-16 18:39:07 +05 sentry sentry [unknown] 1050169 7-1 app-sentry01.corp.ru>...
Alexey
2
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Если подытожить: По мнению Розыча и Хемуля и др. - предпочтительно по возможности объявлять в секции имплементации потому-что: 1) Выше скорость компиляции 2) Не замусоривается...
notme
7
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
В дельфе нет никакого коробочного (без установки третьих либ) способа получить CallStack с расшифровкой отладочных символов?
notme
7
Карта сайта