Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Пятница
29 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Микроконтроллеры
748097
Топик полностью
LightElf
(07.04.2017 13:55, просмотров: 125)
ответил
my504
на
Дело не в буфере, а в определении момента завершения пакета. Сам буфер тут вообще не причем. Причем счетчик ДМА, который по завершении цикла счета генерирует прерывание, которое и есть событие конца пакета.
Момент завершения пакета - состояние линии IDLE. Т.е. байтики валятся, DMA их в память складывает. Когда буфер заполнился или на линии IDLE - смотрим в буфер и парсим то что там лежит.
Не надо делать мне как лучше, оставьте мне как хорошо
Ответить
Если есть признак завершения пакета (не важно какого происхождения), тогда и проблемы нет. Остановить ДМА не по счетчику, а софтово не представляет проблемы.
my504
(97 знак., 07.04.2017 14:55
)
Что-то совсем странное... Зачем DMA останавливать? Пусть себе складывает в циклический буфер. Если на линии возникла пауза - заглядываем в буфер, не лежит ли там готовый пакет. Если лежит - парсим, если пакет еще не полностью принят - ждем дальше.
LightElf
(122 знак., 07.04.2017 15:18
)