ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
747988 Топик полностью
my504 (07.04.2017 08:37 - 08:44, просмотров: 174) ответил AlexBi на Как при этом DMA ведется обработка ошибок?
Кто мешает проверять целостность данных ПОСЛЕ приема всего пакета? Обработка переполнения буфера во время приема по ДМА не требуется, а ошибка фрейма может возникнуть только при неудачном запуске приема (прямо во время байта), либо при несовпадении скоростей. При использовании УАРТ с ДМА требуется прикрутить к этому инструменту ДВА механизма: поиск паузы между пакетами ДО запуска ДМА и обработка таймаута по приему всего пакета транзакций. Поиск паузы осуществляется через прерывания по УАРТу. И совершенно неважно какой длины шина. У меня 50+ метров отлично принимаются по ДМА да еще и с горячим подключением. Естественно, что протокол должен позволять пакетные прием-передачу с ИЗВЕСТНОЙ (а не фиксированной) длиной, а если каждый байт нужно слать подтверждение или пакет состоит всего из нескольких байт, то и смысла в ДМА никакого нет. Я в протоколе предусмотрел определение длины пакета в заголовке, что требует приема заголовка через прерывания и потом запуск приема тела пакета.